From: John Hay Date: Fri, 19 Oct 2001 15:22:38 +0000 (+0200) Subject: Make IPv4 multicastclient work again after the IPv6 merge. X-Git-Tag: NTP_4_1_73~252^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5dfeb60bbcaa5adf1685f900e5af363ad9619589;p=thirdparty%2Fntp.git Make IPv4 multicastclient work again after the IPv6 merge. bk: 3bd0453eVcsCFkSdLPgUJOeGJUY7kg --- diff --git a/include/ntp.h b/include/ntp.h index 48cff3dac4..69d5f0e435 100644 --- a/include/ntp.h +++ b/include/ntp.h @@ -453,19 +453,19 @@ struct peer { /* * Macro for sockaddr_storage structures operations */ -#define SOCKCMP(sock1, sock2) ((struct sockaddr_storage*)sock1)->ss_family == ((struct sockaddr_storage*)sock2)->ss_family ? \ +#define SOCKCMP(sock1, sock2) (((struct sockaddr_storage*)sock1)->ss_family == ((struct sockaddr_storage*)sock2)->ss_family ? \ ((struct sockaddr_storage*)sock1)->ss_family == AF_INET ? \ memcmp(&((struct sockaddr_in*)sock1)->sin_addr, &((struct sockaddr_in*)sock2)->sin_addr, sizeof(struct in_addr))==0 : \ memcmp(&((struct sockaddr_in6*)sock1)->sin6_addr, &((struct sockaddr_in6*)sock2)->sin6_addr, sizeof(struct in6_addr))==0 : \ - 0 + 0) -#define SOCKNUL(sock1) ((struct sockaddr_storage*)sock1)->ss_family == AF_INET ? \ +#define SOCKNUL(sock1) (((struct sockaddr_storage*)sock1)->ss_family == AF_INET ? \ (((struct sockaddr_in*)sock1)->sin_addr.s_addr == 0) : \ - (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6*)sock1)->sin6_addr)) + (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6*)sock1)->sin6_addr))) -#define SOCKLEN(sock) ((struct sockaddr_storage*)sock)->ss_family == AF_INET ? \ +#define SOCKLEN(sock) (((struct sockaddr_storage*)sock)->ss_family == AF_INET ? \ (sizeof(struct sockaddr_in)) : \ - (sizeof(struct sockaddr_in6)) + (sizeof(struct sockaddr_in6))) #define ANYSOCK(sock) memset(((struct sockaddr_in*)sock), 0, sizeof(struct sockaddr_storage)-sizeof(struct sockaddr_in)) diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index b3fb15871f..c407f74e8d 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -878,7 +878,7 @@ io_multicast_add( * Try opening a socket for the specified class D address. This * works under SunOS 4.x, but not OSF1 .. :-( */ - s = open_socket((struct sockaddr_storage*)&sinp, 0, 1); + s = open_socket((struct sockaddr_storage*)sinp, 0, 1); if (s < 0) { memset((char *)&inter_list[i], 0, sizeof inter_list[0]); i = 0; @@ -982,20 +982,6 @@ io_multicast_add( #endif /* HAVE_IPV6 */ } - /* - * enable reception of multicast packets - */ - mreq.imr_multiaddr = iaddr; - mreq.imr_interface.s_addr = htonl(INADDR_ANY); - if (setsockopt(inter_list[i].fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, - (char *)&mreq, sizeof(mreq)) == -1) - msyslog(LOG_ERR, - "setsockopt IP_ADD_MEMBERSHIP fails: %m for %x / %x (%s)", - mreq.imr_multiaddr.s_addr, - mreq.imr_interface.s_addr, inet_ntoa(iaddr)); - inter_list[i].flags |= INT_MULTICAST; - if (i >= ninterfaces) - ninterfaces = i+1; #ifdef DEBUG if (debug) printf("io_multicast_add %s\n", inet_ntoa(iaddr));