From cf3466963b0c2f1013d8b78f0a37bbea7b6725fb Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sun, 18 Dec 2022 01:01:43 +0000 Subject: Add is_local to the sockaddrs union. --- src/socket.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/socket.cpp') diff --git a/src/socket.cpp b/src/socket.cpp index bb2fb6b17..0f2905cfd 100644 --- a/src/socket.cpp +++ b/src/socket.cpp @@ -218,6 +218,25 @@ sa_family_t irc::sockets::sockaddrs::family() const return sa.sa_family; } +bool irc::sockets::sockaddrs::is_local() const +{ + switch (family()) + { + case AF_INET: + return irc::sockets::cidr_mask("127.0.0.0/8").match(*this); + + case AF_INET6: + return irc::sockets::cidr_mask("::1/128").match(*this); + + case AF_UNIX: + return true; + } + + // If we have reached this point then we have encountered a bug. + ServerInstance->Logs.Debug("SOCKET", "BUG: irc::sockets::sockaddrs::is_local(): socket type %hu is unknown!", family()); + return false; +} + int irc::sockets::sockaddrs::port() const { switch (family()) -- cgit v1.3.1-10-gc9f91