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