if (inp->ipi6_ifindex != iface->ifindex)
fprintf(stderr, "invalid iface index %d != %d\n", ifindex, iface->ifindex);
- else if (!interface_valid_src((void *) &iface->v4_addr, (void *) &iface->v4_netmask, (void *) &from.sin6_addr, 16))
+ else if (!interface_valid_src((void *) &iface->v6_addr, (void *) &iface->v6_netmask, (void *) &from.sin6_addr, 16))
dns_handle_packet(iface, (struct sockaddr *) &from, from.sin6_port, buffer, len);
}
uloop_fd_add(&iface->fd, ULOOP_READ);
if (iface->multicast) {
- dns_send_question(iface, "_services._dns-sd._udp.local", TYPE_PTR, 1);
+ dns_send_question(iface, "_services._dns-sd._udp.local", TYPE_PTR, 0);
announce_init(iface);
}
uloop_fd_add(&iface->fd, ULOOP_READ);
if (iface->multicast) {
- dns_send_question(iface, "_services._dns-sd._udp.local", TYPE_PTR, 1);
+ dns_send_question(iface, "_services._dns-sd._udp.local", TYPE_PTR, 0);
announce_init(iface);
}
vlist_for_each_element(&interfaces, iface, node)
if (iface->fd.fd > 0 && iface->multicast) {
service_announce(iface, 0);
- service_reply_a(iface, 0);
+ dns_reply_a(iface, 0);
}
vlist_for_each_element(&interfaces, iface, node)
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);