/*
* 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))
* 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;
#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));