{
struct ip_mreqn mreq;
uint8_t ttl = 255;
- int no = 0;
+ int yes = 1;
struct sockaddr_in sa = { 0 };
int fd = iface->fd.fd;
return -1;
}
- if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, &no, sizeof(no)) < 0)
+ if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, &yes, sizeof(yes)) < 0)
fprintf(stderr, "ioctl failed: IP_MULTICAST_LOOP\n");
return 0;
{
struct ipv6_mreq mreq;
int ttl = 255;
- int no = 0;
+ int yes = 1;
struct sockaddr_in6 sa = { 0 };
int fd = iface->fd.fd;
return -1;
}
- if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &no, sizeof(no)) < 0)
+ if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &yes, sizeof(yes)) < 0)
fprintf(stderr, "ioctl failed: IPV6_MULTICAST_LOOP\n");
return 0;
interface_close(iface);
}
+struct interface*
+interface_get(const char *name, int v6, int multicast)
+{
+ char id_buf[32];
+ snprintf(id_buf, sizeof(id_buf), "%d_%d_%s", multicast, v6, name);
+ struct interface *iface = vlist_find(&interfaces, id_buf, iface, node);
+ return iface;
+}
+
VLIST_TREE(interfaces, avl_strcmp, iface_update_cb, false, false);