goto die;
}
+ memset(&name6, 0, len6);
+
+ name6.sin6_family = PF_INET6;
+ name6.sin6_addr = in6addr_any;
+ name6.sin6_port = htons(port);
+
+ if (bind(sock6, (struct sockaddr *) &name6, len6) == -1) {
+ perror("binding to v6 socket");
+ goto die;
+ }
+
memset(&mreq6, 0, sizeof(struct ipv6_mreq));
err = inet_pton(AF_INET6, multicast_addr, &mreq6.ipv6mr_multiaddr);
if (err < 1) {
goto die;
}
- memset(&name6, 0, len6);
-
- name6.sin6_family = PF_INET6;
- name6.sin6_addr = in6addr_any;
- name6.sin6_port = htons(port);
-
- if (bind(sock6, (struct sockaddr *) &name6, len6) == -1) {
- perror("binding to v6 socket");
- goto die;
- }
return sock6;
memset(&name4, 0, len4);
name4.sin_family = PF_INET;
- name4.sin_addr.s_addr = inet_addr(multicast_addr);
+ name4.sin_addr.s_addr = INADDR_ANY;
name4.sin_port = htons(port);
+ if (bind(sock4, (struct sockaddr *) &name4, len4) == -1) {
+ perror("binding to v4 socket");
+ goto die;
+ }
+
memset(&mreq4, 0, sizeof(struct ip_mreqn));
- mreq4.imr_multiaddr = name4.sin_addr;
+ mreq4.imr_multiaddr.s_addr = inet_addr(V4_MULTICAST_ADDR);
mreq4.imr_ifindex = if_nametoindex(iface_name);
err = setsockopt(sock4, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq4,
goto die;
}
- if (bind(sock4, (struct sockaddr *) &name4, len4) == -1) {
- perror("binding to v4 socket");
- goto die;
- }
-
return sock4;
die: