diff options
Diffstat (limited to 'net/ntp/files/patch-ntpd-ntp_io.c')
-rw-r--r-- | net/ntp/files/patch-ntpd-ntp_io.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/net/ntp/files/patch-ntpd-ntp_io.c b/net/ntp/files/patch-ntpd-ntp_io.c new file mode 100644 index 000000000000..cdf1eada580f --- /dev/null +++ b/net/ntp/files/patch-ntpd-ntp_io.c @@ -0,0 +1,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; |