chiark / gitweb /
core: make sure we properly parse ProtectHome= and ProtectSystem=
[elogind.git] / src / network / networkd-link.c
index 04a2f8ccbe2c151db0ab3ae7e9972bd524e713fc..36534268916c0b0370ce34cbfd5501e83e2bf2d0 100644 (file)
@@ -75,12 +75,16 @@ static int link_new(Manager *manager, sd_rtnl_message *message, Link **ret) {
         if (!link->ifname)
                 return -ENOMEM;
 
-        r = asprintf(&link->state_file, "/run/systemd/network/links/%"PRIu64,
+        r = sd_rtnl_message_read_ether_addr(message, IFLA_ADDRESS, &link->mac);
+        if (r < 0)
+                return r;
+
+        r = asprintf(&link->state_file, "/run/systemd/netif/links/%"PRIu64,
                      link->ifindex);
         if (r < 0)
                 return -ENOMEM;
 
-        r = asprintf(&link->lease_file, "/run/systemd/network/leases/%"PRIu64,
+        r = asprintf(&link->lease_file, "/run/systemd/netif/leases/%"PRIu64,
                      link->ifindex);
         if (r < 0)
                 return -ENOMEM;
@@ -1809,12 +1813,17 @@ int link_rtnl_process_address(sd_rtnl *rtnl, sd_rtnl_message *message, void *use
                 LIST_PREPEND(addresses, link->addresses, address);
                 address = NULL;
 
+                link_save(link);
+
                 break;
         case RTM_DELADDR:
-                if (address_dropped)
+                if (address_dropped) {
                         log_debug_link(link, "removed address: %s/%u", buf,
                                       address->prefixlen);
 
+                        link_save(link);
+                }
+
                 break;
         default:
                 assert_not_reached("Received invalid RTNL message type");