X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnetutl.c;h=6654f977a783a1349282e7ce862afb3eac404a6b;hb=ce4d55b72fd4290d4710f10e755f6dd9ed039d88;hp=0c19f5bbe55cf6194841ccd2d8158225871313bf;hpb=021293e0d03de8d29b22104a8f9bef625b135640;p=tinc diff --git a/src/netutl.c b/src/netutl.c index 0c19f5bb..6654f977 100644 --- a/src/netutl.c +++ b/src/netutl.c @@ -301,6 +301,23 @@ void sockaddr_setport(sockaddr_t *sa, const char *port) { } } +bool is_local_connection(const sockaddr_t *sa) { + switch(sa->sa.sa_family) { + case AF_INET: + // 127.0.0.0/8 + return ntohl(sa->in.sin_addr.s_addr) >> 24 == 127; + + case AF_INET6: + return IN6_IS_ADDR_LOOPBACK(&sa->in6.sin6_addr); + + case AF_UNIX: + return true; + + default: + return false; + } +} + uint16_t get_bound_port(int sockfd) { sockaddr_t sa; socklen_t salen = sizeof(sa);