From 0e0cd7342ae5b2f561e364c3c085d6378e7b24cb Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Fri, 1 Jul 2022 13:42:26 +0200 Subject: [PATCH] core: update DNS when the device enters IP_CONFIG state Update DNS information when the device enters the IP_CONFIG state. In this way, when dispatcher events "dhcp4-change,dhcp6-change" are emitted resolv.conf already contains the information received from the DHCP lease. https://bugzilla.redhat.com/show_bug.cgi?id=2100456 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1283 (cherry picked from commit 1784fc9fa15391043959ca684569c9cb816f44c5) (cherry picked from commit 95df70112f513d44fec1ea3f7fe22a03b4f9651e) (cherry picked from commit ace95e51130b41f39785358bf955b7086bb41c1e) --- src/core/nm-policy.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/core/nm-policy.c b/src/core/nm-policy.c index d77fc0a025..c8971d4b6d 100644 --- a/src/core/nm-policy.c +++ b/src/core/nm-policy.c @@ -2131,19 +2131,14 @@ device_l3cd_changed(NMDevice *device, nm_dns_manager_begin_updates(priv->dns_manager, __func__); - /* We catch already all the IP events registering on the device state changes but - * the ones where the IP changes with a stable state (i.e., activated): - * ignore IP config changes but when the device is in activated state. - * Prevents unnecessary changes to DNS information. - * FIXME(l3cfg): check why ^^^ this is needed and implement it. Note that - * this function is not always called when the device becomes ACTIVATED. - * Previously, we would also update the DNS manager's IP config in - * device_state_change(ACTIVATED). There we would also special-case - * pseudo-VPNs like wireguard. I don't see the code where this is handled - * now. + /* FIXME(l3cfg): Note that this function is not always called when the + * device becomes ACTIVATED. Previously, we would also update the DNS + * manager's IP config in device_state_change(ACTIVATED). There we would + * also special-case pseudo-VPNs like wireguard. I don't see the code where + * this is handled now. */ state = nm_device_get_state(device); - if (l3cd_new && state > NM_DEVICE_STATE_IP_CONFIG && state < NM_DEVICE_STATE_DEACTIVATING) { + if (l3cd_new && state >= NM_DEVICE_STATE_IP_CONFIG && state < NM_DEVICE_STATE_DEACTIVATING) { nm_dns_manager_set_ip_config(priv->dns_manager, AF_UNSPEC, device, -- 2.36.1