chiark / gitweb /
networkd: generate resolv.conf
[elogind.git] / src / network / networkd-link.c
index 52b023cd9e3b686b1d9befb148a34a685e511e64..5dd8e91007fa5f86fe3759a181ccb2c945654312 100644 (file)
@@ -378,6 +378,7 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
         if (event == DHCP_EVENT_IP_CHANGE || event == DHCP_EVENT_IP_ACQUIRE) {
                 _cleanup_address_free_ Address *addr = NULL;
                 _cleanup_route_free_ Route *rt = NULL;
+                struct in_addr **nameservers;
 
                 log_struct_link(LOG_INFO, link,
                                 "MESSAGE=%s: DHCPv4 address %u.%u.%u.%u/%u via %u.%u.%u.%u",
@@ -420,6 +421,13 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
                 addr = NULL;
                 rt = NULL;
 
+                r = sd_dhcp_client_get_dns(client, &nameservers);
+                if (r >= 0) {
+                        r = manager_update_resolv_conf(link->manager);
+                        if (r < 0)
+                                log_error("Failed to update resolv.conf");
+                }
+
                 link_enter_set_addresses(link);
         }
 
@@ -453,6 +461,8 @@ static int link_acquire_conf(Link *link) {
                         return r;
         }
 
+        log_debug_link(link, "acquiring DHCPv4 lease");
+
         r = sd_dhcp_client_start(link->dhcp);
         if (r < 0)
                 return r;
@@ -470,7 +480,7 @@ static int link_update_flags(Link *link, unsigned flags) {
                 return 0;
 
         if (link->flags == flags) {
-                log_debug_link(link, "link status unchanged: %#x", flags);
+                log_debug_link(link, "link status unchanged: %#.8x", flags);
                 return 0;
         }
 
@@ -503,7 +513,7 @@ static int link_update_flags(Link *link, unsigned flags) {
         }
 
         log_debug_link(link,
-                       "link status updated: %#x -> %#x", link->flags, flags);
+                       "link status updated: %#.8x -> %#.8x", link->flags, flags);
 
         link->flags = flags;
 
@@ -609,6 +619,7 @@ static int bridge_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userdata) {
                         link->network->bridge->name,
                         BRIDGE(link->network->bridge),
                         NULL);
+
         link_bridge_joined(link);
 
         return 1;