chiark / gitweb /
journal: downgrade vaccuum message to debug level
[elogind.git] / src / network / networkd-link.c
index 66bcb6bacf051f9ba1afc3381f3c2b3bd25b2fa5..1f495b38bbc579f4951bc039123f15d40af1bbc0 100644 (file)
@@ -35,6 +35,8 @@ int link_new(Manager *manager, struct udev_device *device, Link **ret) {
         const char *ifname;
         int r;
 
+        assert(manager);
+        assert(manager->links);
         assert(device);
         assert(ret);
 
@@ -105,7 +107,7 @@ int link_get(Manager *m, int ifindex, Link **ret) {
 }
 
 int link_add(Manager *m, struct udev_device *device, Link **ret) {
-        Link *link;
+        Link *link = NULL;
         Network *network;
         int r;
 
@@ -395,11 +397,11 @@ static int set_hostname(sd_bus *bus, const char *hostname) {
 
         r = sd_bus_message_new_method_call(
                         bus,
+                        &m,
                         "org.freedesktop.hostname1",
                         "/org/freedesktop/hostname1",
                         "org.freedesktop.hostname1",
-                        "SetHostname",
-                        &m);
+                        "SetHostname");
         if (r < 0)
                 return r;
 
@@ -446,8 +448,8 @@ static int link_set_mtu(Link *link, uint32_t mtu) {
 
         log_debug_link(link, "setting MTU: %" PRIu32, mtu);
 
-        r = sd_rtnl_message_new_link(link->manager->rtnl, RTM_SETLINK,
-                                     link->ifindex, &req);
+        r = sd_rtnl_message_new_link(link->manager->rtnl, &req,
+                                     RTM_SETLINK, link->ifindex);
         if (r < 0) {
                 log_error_link(link, "Could not allocate RTM_SETLINK message");
                 return r;
@@ -479,6 +481,8 @@ static int dhcp_lease_lost(Link *link) {
         assert(link);
         assert(link->dhcp_lease);
 
+        log_warning_link(link, "DHCP lease lost");
+
         r = address_new_dynamic(&address);
         if (r >= 0) {
                 sd_dhcp_lease_get_address(link->dhcp_lease, &addr);
@@ -507,9 +511,14 @@ static int dhcp_lease_lost(Link *link) {
         }
 
         if (link->network->dhcp_hostname) {
-                r = set_hostname(link->manager->bus, "");
-                if (r < 0)
-                        log_error("Failed to reset transient hostname");
+                const char *hostname = NULL;
+
+                r = sd_dhcp_lease_get_hostname(link->dhcp_lease, &hostname);
+                if (r >= 0 && hostname) {
+                        r = set_hostname(link->manager->bus, "");
+                        if (r < 0)
+                                log_error("Failed to reset transient hostname");
+                }
         }
 
         link->dhcp_lease = sd_dhcp_lease_unref(link->dhcp_lease);
@@ -806,8 +815,8 @@ static int link_up(Link *link) {
 
         log_debug_link(link, "bringing link up");
 
-        r = sd_rtnl_message_new_link(link->manager->rtnl, RTM_SETLINK,
-                                     link->ifindex, &req);
+        r = sd_rtnl_message_new_link(link->manager->rtnl, &req,
+                                     RTM_SETLINK, link->ifindex);
         if (r < 0) {
                 log_error_link(link, "Could not allocate RTM_SETLINK message");
                 return r;
@@ -975,8 +984,8 @@ static int link_getlink(Link *link) {
 
         log_debug_link(link, "requesting link status");
 
-        r = sd_rtnl_message_new_link(link->manager->rtnl, RTM_GETLINK,
-                                     link->ifindex, &req);
+        r = sd_rtnl_message_new_link(link->manager->rtnl, &req,
+                                     RTM_GETLINK, link->ifindex);
         if (r < 0) {
                 log_error_link(link, "Could not allocate RTM_GETLINK message");
                 return r;