summaryrefslogtreecommitdiff
path: root/src/rdisc/nm-fake-rdisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rdisc/nm-fake-rdisc.c')
-rw-r--r--src/rdisc/nm-fake-rdisc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rdisc/nm-fake-rdisc.c b/src/rdisc/nm-fake-rdisc.c
index 043986277f..46f2b08cf1 100644
--- a/src/rdisc/nm-fake-rdisc.c
+++ b/src/rdisc/nm-fake-rdisc.c
@@ -238,11 +238,15 @@ receive_ra (gpointer user_data)
NMRDiscConfigMap changed = 0;
guint32 now = nm_utils_get_monotonic_timestamp_s ();
guint i;
+ NMRDiscDHCPLevel dhcp_level;
priv->receive_ra_id = 0;
- if (rdata->public.dhcp_level != ra->dhcp_level) {
- rdata->public.dhcp_level = ra->dhcp_level;
+ /* preserve the "most managed" level on updates. */
+ dhcp_level = MAX (rdata->public.dhcp_level, ra->dhcp_level);
+
+ if (rdata->public.dhcp_level != dhcp_level) {
+ rdata->public.dhcp_level = dhcp_level;
changed |= NM_RDISC_CONFIG_DHCP_LEVEL;
}