some ipv6 support (from Love)
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@11477 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -754,17 +754,29 @@ replace_cookie(int xserver, int fd, char *filename, int cookiesp) /* XXX */
|
||||
*/
|
||||
|
||||
int
|
||||
suspicious_address (int sock, struct sockaddr_in addr)
|
||||
suspicious_address (int sock, struct sockaddr_storage *addr)
|
||||
{
|
||||
char data[40];
|
||||
socklen_t len = sizeof(data);
|
||||
|
||||
return addr.sin_addr.s_addr != htonl(INADDR_LOOPBACK)
|
||||
switch (addr->ss_family) {
|
||||
case AF_INET:
|
||||
return ((struct sockaddr_in *)addr)->sin_addr.s_addr !=
|
||||
htonl(INADDR_LOOPBACK)
|
||||
#if defined(IP_OPTIONS) && defined(HAVE_GETSOCKOPT)
|
||||
|| getsockopt (sock, IPPROTO_IP, IP_OPTIONS, data, &len) < 0
|
||||
|| len != 0
|
||||
|| getsockopt (sock, IPPROTO_IP, IP_OPTIONS, data, &len) < 0
|
||||
|| len != 0
|
||||
#endif
|
||||
;
|
||||
;
|
||||
break;
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
/* XXX check route headers */
|
||||
return !IN6_IS_ADDR_LOOPBACK(&((struct sockaddr_in6*)addr)->sin6_addr);
|
||||
#endif
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user