summaryrefslogtreecommitdiff
path: root/net/ntp/files/patch-ntpd-ntp_io.c
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;