blob: cdf1eada580fdef1a6f68a43379b3b7cf4c5fd02 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
--- ntpd/ntp_io.c.orig 2010-06-03 20:24:51.000000000 -0700
+++ ntpd/ntp_io.c 2010-06-03 20:27:36.000000000 -0700
@@ -1414,12 +1414,18 @@
sockaddr_u *psau
)
{
+ unsigned char zerobuf[8];
+
if (IS_IPV4(psau) && !NSRCADR(psau))
return 1;
#ifdef INCLUDE_IPV6_SUPPORT
if (IS_IPV6(psau) && S_ADDR6_EQ(psau, &in6addr_any))
return 1;
+ bzero(zerobuf, sizeof(zerobuf));
+ // If the host portion is all 0, then assume it's a router's anycast address.
+ if (IS_IPV6(psau) && memcmp((char*)(&((struct sockaddr_in6*)psau)->sin6_addr) + 8, zerobuf, 8) == 0)
+ return 1;
#endif
return 0;
|