X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-link.c;h=5dd8e91007fa5f86fe3759a181ccb2c945654312;hb=3bef724f7e7f7eaca69881548b06e221b77d7031;hp=52b023cd9e3b686b1d9befb148a34a685e511e64;hpb=39032b87779323a244dd89f4832949d462b2ac68;p=elogind.git diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 52b023cd9..5dd8e9100 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -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;