- assert(m);
- assert(i);
-
- b = avahi_interface_relevant(i);
-
- if (m->list == LIST_DONE && b && !i->announcing) {
- avahi_log_info("New relevant interface %s.%i.", i->hardware->name, i->protocol);
-
- if (i->protocol == AVAHI_PROTO_INET)
- avahi_mdns_mcast_join_ipv4(m->server->fd_ipv4, i->hardware->index);
- if (i->protocol == AVAHI_PROTO_INET6)
- avahi_mdns_mcast_join_ipv6(m->server->fd_ipv6, i->hardware->index);
-
- i->announcing = 1;
- avahi_announce_interface(m->server, i);
- avahi_browser_new_interface(m->server, i);
- } else if (!b && i->announcing) {
- avahi_log_info("Interface %s.%i no longer relevant.", i->hardware->name, i->protocol);
-
- if (i->protocol == AVAHI_PROTO_INET)
- avahi_mdns_mcast_leave_ipv4(m->server->fd_ipv4, i->hardware->index);
- if (i->protocol == AVAHI_PROTO_INET6)
- avahi_mdns_mcast_leave_ipv6(m->server->fd_ipv6, i->hardware->index);
-
- avahi_goodbye_interface(m->server, i, 0);
- avahi_response_scheduler_clear(i->response_scheduler);
- avahi_query_scheduler_clear(i->query_scheduler);
- avahi_probe_scheduler_clear(i->probe_scheduler);
- avahi_cache_flush(i->cache);
-
- i->announcing = 0;
- }