]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 2990] multicastclient incorrectly causes bind to broadcast address.
authorDave Hart <hart@ntp.org>
Sun, 19 Mar 2023 17:54:01 +0000 (13:54 -0400)
committerDave Hart <hart@ntp.org>
Sun, 19 Mar 2023 17:54:01 +0000 (13:54 -0400)
bk: 64174c396-N0TJB7JPcBQai2mlDQMQ

include/ntpd.h
ntpd/ntp_io.c
ntpd/ntp_proto.c
ntpd/ntp_request.c

index de9283360a46a0ce6e046c5ffcdad7ae684efe4a..ad3e30fbb8899616471a4ca6a387c2dac83905cf 100644 (file)
@@ -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 */
index 7dde346c39324217ddf6f9bc187cb4fc988406ed..cb943e8e5b560007e3ff7c423ee4ad299df9bcc6 100644 (file)
@@ -2011,7 +2011,7 @@ update_interfaces(
         */
        refresh_all_peerinterfaces();
 
-       if (broadcast_client_enabled || sys_bclient)
+       if (sys_bclient)
                io_setbclient();
 
 #ifdef MCAST
index 845e75ca36d19dd0a749f549afc76dfdda91cf2b..d7a8f5270eaaee398c1021db46da3886408ee296 100644 (file)
@@ -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 */
index e7997a3b90951e477f1c66f5a5eb9148e819e3c6..e61d014808de0af1a639c06a2723738d550ee0be 100644 (file)
@@ -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)