|
1 NTP conflates broadcast and multicast when opening sockets. The broadcast |
|
2 address does not need to be opened for multicast clients. This has been |
|
3 reported as NTP community bug 2990 (http://bugs.ntp.org/show_bug.cgi?id=2990) |
|
4 and this patch may be removed after upgrading to a version of NTP which has |
|
5 bug 2990 fixed. |
|
6 |
|
7 --- include/ntpd.h |
|
8 +++ include/ntpd.h |
|
9 @@ -480,6 +480,7 @@ extern struct peer *sys_peer; /* curren |
|
10 * Nonspecified system state variables. |
|
11 */ |
|
12 extern int sys_bclient; /* we set our time to broadcasts */ |
|
13 +extern int sys_mclient; /* we set our time to multicast */ |
|
14 extern double sys_bdelay; /* broadcast client default delay */ |
|
15 extern int sys_authenticate; /* requre authentication for config */ |
|
16 extern l_fp sys_authdelay; /* authentication delay */ |
|
17 --- ntpd/ntp_io.c |
|
18 +++ ntpd/ntp_io.c |
|
19 @@ -2017,9 +2017,6 @@ update_interfaces( |
|
20 */ |
|
21 refresh_all_peerinterfaces(); |
|
22 |
|
23 - if (broadcast_client_enabled) |
|
24 - io_setbclient(); |
|
25 - |
|
26 if (sys_bclient) |
|
27 io_setbclient(); |
|
28 |
|
29 --- ntpd/ntp_proto.c |
|
30 +++ ntpd/ntp_proto.c |
|
31 @@ -105,6 +105,7 @@ int leap_sec_in_progress; |
|
32 * Nonspecified system state variables |
|
33 */ |
|
34 int sys_bclient; /* broadcast client enable */ |
|
35 +int sys_mclient; /* multicast client enable */ |
|
36 double sys_bdelay; /* broadcast client default delay */ |
|
37 int sys_authenticate; /* requre authentication for config */ |
|
38 l_fp sys_authdelay; /* authentication delay */ |
|
39 @@ -1083,7 +1084,7 @@ receive( |
|
40 return; |
|
41 } |
|
42 #endif /* AUTOKEY */ |
|
43 - if (sys_bclient == 0) { |
|
44 + if (sys_bclient == 0 && sys_mclient == 0) { |
|
45 sys_restricted++; |
|
46 return; /* not enabled */ |
|
47 } |
|
48 @@ -4209,6 +4210,7 @@ init_proto(void) |
|
49 sys_survivors = 0; |
|
50 sys_manycastserver = 0; |
|
51 sys_bclient = 0; |
|
52 + sys_mclient = 0; |
|
53 sys_bdelay = 0; |
|
54 sys_authenticate = 1; |
|
55 sys_stattime = current_time; |
|
56 @@ -4356,7 +4358,7 @@ proto_config( |
|
57 case PROTO_MULTICAST_ADD: /* add group address */ |
|
58 if (svalue != NULL) |
|
59 io_multicast_add(svalue); |
|
60 - sys_bclient = 1; |
|
61 + sys_mclient = 1; |
|
62 break; |
|
63 |
|
64 case PROTO_MULTICAST_DEL: /* delete group address */ |
|
65 --- ntpd/ntp_request.c |
|
66 +++ ntpd/ntp_request.c |
|
67 @@ -1117,7 +1117,7 @@ sys_info( |
|
68 is->flags = 0; |
|
69 if (sys_authenticate) |
|
70 is->flags |= INFO_FLAG_AUTHENTICATE; |
|
71 - if (sys_bclient) |
|
72 + if (sys_bclient || sys_mclient) |
|
73 is->flags |= INFO_FLAG_BCLIENT; |
|
74 #ifdef REFCLOCK |
|
75 if (cal_enable) |