Link *link_free(Link *l) { if (!l) return NULL; /* Send goodbye messages. */ dns_scope_announce(l->mdns_ipv4_scope, true); dns_scope_announce(l->mdns_ipv6_scope, true); link_flush_settings(l); while (l->addresses) (void) link_address_free(l->addresses); if (l->manager) hashmap_remove(l->manager->links, INT_TO_PTR(l->ifindex)); dns_scope_free(l->unicast_scope); dns_scope_free(l->llmnr_ipv4_scope); dns_scope_free(l->llmnr_ipv6_scope); dns_scope_free(l->mdns_ipv4_scope); dns_scope_free(l->mdns_ipv6_scope); free(l->state_file); return mfree(l); }
Link *link_free(Link *l) { if (!l) return NULL; dns_server_unlink_marked(l->dns_servers); dns_search_domain_unlink_all(l->search_domains); while (l->addresses) link_address_free(l->addresses); if (l->manager) hashmap_remove(l->manager->links, INT_TO_PTR(l->ifindex)); dns_scope_free(l->unicast_scope); dns_scope_free(l->llmnr_ipv4_scope); dns_scope_free(l->llmnr_ipv6_scope); free(l); return NULL; }
Link *link_free(Link *l) { if (!l) return NULL; link_flush_settings(l); while (l->addresses) (void) link_address_free(l->addresses); if (l->manager) hashmap_remove(l->manager->links, INT_TO_PTR(l->ifindex)); dns_scope_free(l->unicast_scope); dns_scope_free(l->llmnr_ipv4_scope); dns_scope_free(l->llmnr_ipv6_scope); dns_scope_free(l->mdns_ipv4_scope); dns_scope_free(l->mdns_ipv6_scope); free(l); return NULL; }