static void interface_free(struct interface *iface)
{
+ cache_cleanup(iface);
announce_free(iface);
free(iface->addrs.v4);
free(iface);
cache_cleanup(if_old);
free(if_old->addrs.v4);
if_old->addrs = if_new->addrs;
+ if_old->ifindex = if_new->ifindex;
free(if_new);
return;
}
vlist_for_each_element(&interfaces, iface, node)
if (interface_multicast(iface)) {
- dns_reply_a(iface, NULL, 0);
+ dns_reply_a(iface, NULL, 0, NULL);
+ dns_reply_a_additional(iface, NULL, 0);
service_announce_services(iface, NULL, 0);
}
return iface;
}
-VLIST_TREE(interfaces, avl_strcmp, iface_update_cb, false, false);
+VLIST_TREE(interfaces, avl_strcmp, iface_update_cb, true, false);