diff options
Diffstat (limited to 'src/rdisc/nm-fake-rdisc.c')
-rw-r--r-- | src/rdisc/nm-fake-rdisc.c | 8 |
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; } |