X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-link.c;h=6186f7f892603f16c617f928d31b367755fd52f5;hp=25d92c8aa4f46574b68c87e4b21e1c64bd7eaacc;hb=5be4d38e31281727b6f45ae869136bb01a1f7790;hpb=ab47d620b459ce45774237ca1a38b5218426c897 diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 25d92c8aa..6186f7f89 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -319,6 +319,7 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) { int r; assert(link); + assert(link->network); if (link->state == LINK_STATE_FAILED) return; @@ -378,6 +379,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 +422,15 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) { addr = NULL; rt = NULL; + if (link->network->dhcp_dns) { + 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); }