53 lines
2.6 KiB
Diff
53 lines
2.6 KiB
Diff
From 0e0cd7342ae5b2f561e364c3c085d6378e7b24cb Mon Sep 17 00:00:00 2001
|
|
From: Beniamino Galvani <bgalvani@redhat.com>
|
|
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
|
|
|