components/ntp/patches/40-no-broad-sock.patch
changeset 5362 dbf70e6a83ad
child 5958 8e562647e7c5
equal deleted inserted replaced
5361:7e2f2fc264b8 5362:dbf70e6a83ad
       
     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)