about summary refs log tree commit diff
path: root/src/nm-ip4-config.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2020-10-20 22:07:24 +0200
committerMichael Biebl <biebl@debian.org>2020-10-20 22:07:24 +0200
commitf2ddac4cbc895837ddcc55015fae112f9859cd0a (patch)
tree774424baed3e65adb78c34e25874cf4e781ac005 /src/nm-ip4-config.c
parentaafc1dbe4712c86189bbc1d4d54ad8cb4c69be7e (diff)
New upstream version 1.27.91 upstream/1.27.91
Diffstat (limited to 'src/nm-ip4-config.c')
-rw-r--r--src/nm-ip4-config.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index ea08450d..9d2b459d 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -283,6 +283,7 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMIP4Config,
 
 typedef struct {
     bool                     metered : 1;
+    bool                     never_default : 1;
     guint32                  mtu;
     int                      ifindex;
     NMIPConfigSource         mtu_source;
@@ -895,6 +896,8 @@ nm_ip4_config_merge_setting(NMIP4Config *            self,
     nm_ip4_config_mdns_set(self, mdns);
     nm_ip4_config_llmnr_set(self, llmnr);
 
+    nm_ip4_config_set_never_default(self, nm_setting_ip_config_get_never_default(setting));
+
     g_object_thaw_notify(G_OBJECT(self));
 }
 
@@ -1122,6 +1125,11 @@ nm_ip4_config_merge(NMIP4Config *        dst,
     nm_ip4_config_set_metered(dst,
                               nm_ip4_config_get_metered(dst) || nm_ip4_config_get_metered(src));
 
+    /* never default */
+    nm_ip4_config_set_never_default(dst,
+                                    nm_ip4_config_get_never_default(dst)
+                                        || nm_ip4_config_get_never_default(src));
+
     /* DNS priority */
     if (nm_ip4_config_get_dns_priority(src))
         nm_ip4_config_set_dns_priority(dst, nm_ip4_config_get_dns_priority(src));
@@ -1856,6 +1864,12 @@ nm_ip4_config_replace(NMIP4Config *dst, const NMIP4Config *src, gboolean *releva
         has_minor_changes = TRUE;
     }
 
+    /* never default */
+    if (src_priv->never_default != dst_priv->never_default) {
+        dst_priv->never_default = src_priv->never_default;
+        has_minor_changes       = TRUE;
+    }
+
 #if NM_MORE_ASSERTS
     /* config_equal does not compare *all* the fields, therefore, we might have has_minor_changes
      * regardless of config_equal. But config_equal must correspond to has_relevant_changes. */
@@ -2729,6 +2743,24 @@ nm_ip4_config_get_metered(const NMIP4Config *self)
 
 /*****************************************************************************/
 
+void
+nm_ip4_config_set_never_default(NMIP4Config *self, gboolean never_default)
+{
+    NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE(self);
+
+    priv->never_default = never_default;
+}
+
+gboolean
+nm_ip4_config_get_never_default(const NMIP4Config *self)
+{
+    const NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE(self);
+
+    return priv->never_default;
+}
+
+/*****************************************************************************/
+
 const NMPObject *
 nm_ip4_config_nmpobj_lookup(const NMIP4Config *self, const NMPObject *needle)
 {