chiark / gitweb /
networkd: dhcp - update the lifetime of an existing address
[elogind.git] / src / network / networkd-link.c
index 82e517e78c2d07b3fb3c10385ff9d79331709c63..b597b166844b4e088c7e9855c080d879ae178c61 100644 (file)
@@ -413,7 +413,7 @@ static int link_set_dhcp_routes(Link *link) {
         r = sd_dhcp_lease_get_routes(link->dhcp_lease, &static_routes, &static_routes_size);
         if (r < 0) {
                 if (r != -ENOENT)
-                        log_warning_link(link, "DHCP error: %s", strerror(-r));
+                        log_warning_link(link, "DHCP error: could not get routes: %s", strerror(-r));
                 return r;
         }
 
@@ -519,7 +519,8 @@ static int link_enter_set_routes(Link *link) {
 
                 r = sd_dhcp_lease_get_router(link->dhcp_lease, &gateway);
                 if (r < 0 && r != -ENOENT) {
-                        log_warning_link(link, "DHCP error: %s", strerror(-r));
+                        log_warning_link(link, "DHCP error: could not get gateway: %s",
+                                         strerror(-r));
                         return r;
                 }
 
@@ -759,7 +760,9 @@ static int link_enter_set_addresses(Link *link) {
                 address->prefixlen = prefixlen;
                 address->broadcast.s_addr = addr.s_addr | ~netmask.s_addr;
 
-                r = address_configure(address, link, &address_handler);
+                /* use update rather than configure so that we will update the lifetime
+                   of an existing address if it has already been configured */
+                r = address_update(address, link, &address_handler);
                 if (r < 0) {
                         log_warning_link(link,
                                          "could not set addresses: %s", strerror(-r));
@@ -1109,7 +1112,8 @@ static int dhcp_lease_acquired(sd_dhcp_client *client, Link *link) {
 
         r = sd_dhcp_lease_get_router(lease, &gateway);
         if (r < 0 && r != -ENOENT) {
-                log_warning_link(link, "DHCP error: %s", strerror(-r));
+                log_warning_link(link, "DHCP error: could not get gateway: %s",
+                                 strerror(-r));
                 return r;
         }
 
@@ -1250,7 +1254,7 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
                         break;
                 default:
                         if (event < 0)
-                                log_warning_link(link, "DHCP error: %s", strerror(-event));
+                                log_warning_link(link, "DHCP error: client failed: %s", strerror(-event));
                         else
                                 log_warning_link(link, "DHCP unknown event: %d", event);
                         break;
@@ -1756,10 +1760,7 @@ static int link_enslaved(Link *link) {
                 }
         }
 
-        if ((link->network->dhcp == DHCP_SUPPORT_NONE) && !link->network->ipv4ll)
-                return link_enter_set_addresses(link);
-
-        return 0;
+        return link_enter_set_addresses(link);
 }
 
 static int enslave_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) {