From: Dave Hart Date: Sun, 19 Mar 2023 17:54:01 +0000 (-0400) Subject: [Bug 2990] multicastclient incorrectly causes bind to broadcast address. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=675ed61a0893ddde26cc53aea635c849e8ae3b7d;p=thirdparty%2Fntp.git [Bug 2990] multicastclient incorrectly causes bind to broadcast address. bk: 64174c396-N0TJB7JPcBQai2mlDQMQ --- diff --git a/include/ntpd.h b/include/ntpd.h index de9283360..ad3e30fbb 100644 --- a/include/ntpd.h +++ b/include/ntpd.h @@ -483,6 +483,7 @@ extern struct peer *sys_peer; /* current peer */ * Nonspecified system state variables. */ extern int sys_bclient; /* we set our time to broadcasts */ +extern int sys_mclient; /* we set our time to manycasts */ extern double sys_bdelay; /* broadcast client default delay */ extern int sys_authenticate; /* requre authentication for config */ extern l_fp sys_authdelay; /* authentication delay */ diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index 7dde346c3..cb943e8e5 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -2011,7 +2011,7 @@ update_interfaces( */ refresh_all_peerinterfaces(); - if (broadcast_client_enabled || sys_bclient) + if (sys_bclient) io_setbclient(); #ifdef MCAST diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c index 845e75ca3..d7a8f5270 100644 --- a/ntpd/ntp_proto.c +++ b/ntpd/ntp_proto.c @@ -141,6 +141,7 @@ int leap_sec_in_progress; * Nonspecified system state variables */ int sys_bclient; /* broadcast client enable */ +int sys_mclient; /* multicast client enable */ double sys_bdelay; /* broadcast client default delay */ int sys_authenticate; /* requre authentication for config */ l_fp sys_authdelay; /* authentication delay */ @@ -1475,8 +1476,8 @@ receive( return; } #endif /* AUTOKEY */ - if (sys_bclient == 0) { - DPRINTF(2, ("receive: AM_NEWBCL drop: not a bclient\n")); + if (!sys_bclient && !sys_mclient) { + DPRINTF(2, ("receive: AM_NEWBCL drop: not a bclient/mclient\n")); sys_restricted++; return; /* not enabled */ } @@ -5215,6 +5216,7 @@ init_proto(void) sys_survivors = 0; sys_manycastserver = 0; sys_bclient = 0; + sys_mclient = 0; sys_bdelay = BDELAY_DEFAULT; /*[Bug 3031] delay cutoff */ sys_authenticate = 1; sys_stattime = current_time; @@ -5256,7 +5258,7 @@ proto_config( case PROTO_BROADCLIENT: /* broadcast client (bclient) */ sys_bclient = (int)value; - if (sys_bclient == 0) + if (!sys_bclient) io_unsetbclient(); else io_setbclient(); @@ -5366,7 +5368,7 @@ proto_config( case PROTO_MULTICAST_ADD: /* add group address */ if (svalue != NULL) io_multicast_add(svalue); - sys_bclient = 1; + sys_mclient = 1; break; case PROTO_MULTICAST_DEL: /* delete group address */ diff --git a/ntpd/ntp_request.c b/ntpd/ntp_request.c index e7997a3b9..e61d01480 100644 --- a/ntpd/ntp_request.c +++ b/ntpd/ntp_request.c @@ -1104,7 +1104,7 @@ sys_info( is->flags = 0; if (sys_authenticate) is->flags |= INFO_FLAG_AUTHENTICATE; - if (sys_bclient) + if (sys_bclient || sys_mclient) is->flags |= INFO_FLAG_BCLIENT; #ifdef REFCLOCK if (cal_enable)