summaryrefslogtreecommitdiffstats
path: root/contrib/tcp_wrappers/tcpdchk.c
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2000-07-14 17:15:34 +0000
committerume <ume@FreeBSD.org>2000-07-14 17:15:34 +0000
commit70f27cd4dd7e1d1d852cba36b094d6dc066d927d (patch)
treef2ea77bde85e774d904c6d9e876c7f0783fca721 /contrib/tcp_wrappers/tcpdchk.c
parent55485e0103d7b63665f16e41d400e306498c92a8 (diff)
downloadFreeBSD-src-70f27cd4dd7e1d1d852cba36b094d6dc066d927d.zip
FreeBSD-src-70f27cd4dd7e1d1d852cba36b094d6dc066d927d.tar.gz
Add IPv6 scoped address support.
It enables us to control link-local connections by interface like this: ALL : [fe80::%ed0]/10 : allow ALL : [fe80::]/10 : deny
Diffstat (limited to 'contrib/tcp_wrappers/tcpdchk.c')
-rw-r--r--contrib/tcp_wrappers/tcpdchk.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/contrib/tcp_wrappers/tcpdchk.c b/contrib/tcp_wrappers/tcpdchk.c
index a2804a2..99ec495 100644
--- a/contrib/tcp_wrappers/tcpdchk.c
+++ b/contrib/tcp_wrappers/tcpdchk.c
@@ -410,7 +410,7 @@ char *pat;
static int is_inet6_addr(pat)
char *pat;
{
- struct in6_addr addr;
+ struct addrinfo hints, *res;
int len, ret;
char ch;
@@ -420,9 +420,14 @@ static int is_inet6_addr(pat)
if ((ch = pat[len - 1]) != ']')
return (0);
pat[len - 1] = '\0';
- ret = inet_pton(AF_INET6, pat + 1, &addr);
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_INET6;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
+ if ((ret = getaddrinfo(pat + 1, NULL, &hints, &res)) == 0)
+ freeaddrinfo(res);
pat[len - 1] = ch;
- return (ret == 1);
+ return (ret == 0);
}
#endif
OpenPOWER on IntegriCloud