chiark / gitweb /
networkd: tunnel - ensure that enslave callback is always invoked
[elogind.git] / src / network / networkd-link.c
index c99cafc24bfb409f34ac2aef04ee07739d2bcde4..ce9fbb5ed8d5241c75678970c65c7a5b67b42c2a 100644 (file)
@@ -78,7 +78,7 @@ static int link_new(Manager *manager, sd_rtnl_message *message, Link **ret) {
 
         r = sd_rtnl_message_read_ether_addr(message, IFLA_ADDRESS, &link->mac);
         if (r < 0)
-                return r;
+                log_debug_link(link, "MAC address not found for new device, continuing without");
 
         r = asprintf(&link->state_file, "/run/systemd/netif/links/%"PRIu64,
                      link->ifindex);
@@ -106,8 +106,6 @@ static void link_free(Link *link) {
         if (!link)
                 return;
 
-        assert(link->manager);
-
         while ((address = link->addresses)) {
                 LIST_REMOVE(addresses, link->addresses, address);
                 address_free(address);
@@ -128,7 +126,8 @@ static void link_free(Link *link) {
         sd_dhcp6_client_unref(link->dhcp6_client);
         sd_icmp6_nd_unref(link->icmp6_router_discovery);
 
-        hashmap_remove(link->manager->links, &link->ifindex);
+        if (link->manager)
+                hashmap_remove(link->manager->links, &link->ifindex);
 
         free(link->ifname);