summary refs log tree commit diff
path: root/src/libnm-core-impl/nm-connection.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2022-01-13 22:30:39 +0100
committerMichael Biebl <biebl@debian.org>2022-01-13 22:30:39 +0100
commit88c227d90a6b7b388c5c85d72802a0ca8f05ed5c (patch)
tree71f32df6617802270e8a78574bd8e1637dc532f4 /src/libnm-core-impl/nm-connection.c
parente74c568b07b50b97873fb4ee1d776dedefbd54d6 (diff)
New upstream version 1.34.0 upstream/1.34.0
Diffstat (limited to 'src/libnm-core-impl/nm-connection.c')
-rw-r--r--src/libnm-core-impl/nm-connection.c78
1 files changed, 51 insertions, 27 deletions
diff --git a/src/libnm-core-impl/nm-connection.c b/src/libnm-core-impl/nm-connection.c
index 4ac7b322..dc85ea0c 100644
--- a/src/libnm-core-impl/nm-connection.c
+++ b/src/libnm-core-impl/nm-connection.c
@@ -944,8 +944,8 @@ _nm_setting_connection_verify_secondaries(GArray *secondaries, GError **error)
         gs_free const char **strv_to_free = NULL;
         const char **        strv2;
 
-        strv2 = nm_utils_strv_dup_shallow_maybe_a(20, strv, len, &strv_to_free);
-        nm_utils_strv_sort(strv2, len);
+        strv2 = nm_strv_dup_shallow_maybe_a(20, strv, len, &strv_to_free);
+        nm_strv_sort(strv2, len);
         has_duplicate = nm_strv_has_duplicate(strv2, len, TRUE);
     }
 
@@ -1002,7 +1002,7 @@ _normalize_connection_secondaries(NMConnection *self)
         if (!nm_uuid_is_valid_nm(s, &uuid_is_normalized, uuid_normalized))
             continue;
 
-        if (nm_utils_strv_find_first(strv, j, uuid_is_normalized ? uuid_normalized : s) >= 0)
+        if (nm_strv_find_first(strv, j, uuid_is_normalized ? uuid_normalized : s) >= 0)
             continue;
 
         strv[j++] = uuid_is_normalized ? g_strdup(uuid_normalized) : g_steal_pointer(&s);
@@ -1074,6 +1074,7 @@ _nm_connection_detect_slave_type(NMConnection *connection, NMSetting **out_s_por
         const char *      controller_type_name;
     } infos[] = {
         {NM_META_SETTING_TYPE_BRIDGE_PORT, NM_SETTING_BRIDGE_SETTING_NAME},
+        {NM_META_SETTING_TYPE_BOND_PORT, NM_SETTING_BOND_SETTING_NAME},
         {NM_META_SETTING_TYPE_TEAM_PORT, NM_SETTING_TEAM_SETTING_NAME},
         {NM_META_SETTING_TYPE_OVS_PORT, NM_SETTING_OVS_BRIDGE_SETTING_NAME},
         {NM_META_SETTING_TYPE_OVS_INTERFACE, NM_SETTING_OVS_PORT_SETTING_NAME},
@@ -1208,10 +1209,23 @@ _normalize_ip_config(NMConnection *self, GHashTable *parameters)
 
     if (_supports_addr_family(self, AF_INET)) {
         if (!s_ip4) {
-            const char *default_ip4_method = NM_SETTING_IP4_CONFIG_METHOD_AUTO;
+            const char *default_ip4_method = NULL;
 
-            if (nm_connection_is_type(self, NM_SETTING_WIREGUARD_SETTING_NAME))
-                default_ip4_method = NM_SETTING_IP4_CONFIG_METHOD_DISABLED;
+            if (parameters) {
+                default_ip4_method =
+                    g_hash_table_lookup(parameters,
+                                        NM_CONNECTION_NORMALIZE_PARAM_IP4_CONFIG_METHOD);
+            }
+            if (!default_ip4_method) {
+                const char *type = nm_connection_get_connection_type(self);
+
+                if (NM_IN_STRSET(type,
+                                 NM_SETTING_WIREGUARD_SETTING_NAME,
+                                 NM_SETTING_DUMMY_SETTING_NAME))
+                    default_ip4_method = NM_SETTING_IP4_CONFIG_METHOD_DISABLED;
+                else
+                    default_ip4_method = NM_SETTING_IP4_CONFIG_METHOD_AUTO;
+            }
 
             /* But if no IP4 setting was specified, assume the caller was just
              * being lazy and use the default method.
@@ -1255,13 +1269,18 @@ _normalize_ip_config(NMConnection *self, GHashTable *parameters)
         if (!s_ip6) {
             const char *default_ip6_method = NULL;
 
-            if (parameters)
+            if (parameters) {
                 default_ip6_method =
                     g_hash_table_lookup(parameters,
                                         NM_CONNECTION_NORMALIZE_PARAM_IP6_CONFIG_METHOD);
+            }
             if (!default_ip6_method) {
-                if (nm_connection_is_type(self, NM_SETTING_WIREGUARD_SETTING_NAME))
-                    default_ip6_method = NM_SETTING_IP6_CONFIG_METHOD_IGNORE;
+                const char *type = nm_connection_get_connection_type(self);
+
+                if (NM_IN_STRSET(type,
+                                 NM_SETTING_WIREGUARD_SETTING_NAME,
+                                 NM_SETTING_DUMMY_SETTING_NAME))
+                    default_ip6_method = NM_SETTING_IP6_CONFIG_METHOD_DISABLED;
                 else
                     default_ip6_method = NM_SETTING_IP6_CONFIG_METHOD_AUTO;
             }
@@ -1661,6 +1680,10 @@ _normalize_invalid_slave_port_settings(NMConnection *self)
         && _nm_connection_remove_setting(self, NM_TYPE_SETTING_BRIDGE_PORT))
         changed = TRUE;
 
+    if (!nm_streq0(slave_type, NM_SETTING_BOND_SETTING_NAME)
+        && _nm_connection_remove_setting(self, NM_TYPE_SETTING_BOND_PORT))
+        changed = TRUE;
+
     if (!nm_streq0(slave_type, NM_SETTING_TEAM_SETTING_NAME)
         && _nm_connection_remove_setting(self, NM_TYPE_SETTING_TEAM_PORT))
         changed = TRUE;
@@ -2092,23 +2115,23 @@ _nm_connection_ensure_normalized(NMConnection * connection,
 
 #if NM_MORE_ASSERTS
 static void
-_nmtst_connection_unchanging_changed_cb(NMConnection *connection, gpointer user_data)
+_nm_assert_connection_unchanging_changed_cb(NMConnection *connection, gpointer user_data)
 {
     nm_assert_not_reached();
 }
 
 static void
-_nmtst_connection_unchanging_secrets_updated_cb(NMConnection *connection,
-                                                const char *  setting_name,
-                                                gpointer      user_data)
+_nm_assert_connection_unchanging_secrets_updated_cb(NMConnection *connection,
+                                                    const char *  setting_name,
+                                                    gpointer      user_data)
 {
     nm_assert_not_reached();
 }
 
-const char _nmtst_connection_unchanging_user_data = 0;
+const char _nm_assert_connection_unchanging_user_data = 0;
 
 void
-nmtst_connection_assert_unchanging(NMConnection *connection)
+nm_assert_connection_unchanging(NMConnection *connection)
 {
     if (!connection)
         return;
@@ -2121,7 +2144,7 @@ nmtst_connection_assert_unchanging(NMConnection *connection)
                               0,
                               NULL,
                               NULL,
-                              (gpointer) &_nmtst_connection_unchanging_user_data)
+                              (gpointer) &_nm_assert_connection_unchanging_user_data)
         != 0) {
         /* avoid connecting the assertion handler multiple times. */
         return;
@@ -2129,16 +2152,16 @@ nmtst_connection_assert_unchanging(NMConnection *connection)
 
     g_signal_connect(connection,
                      NM_CONNECTION_CHANGED,
-                     G_CALLBACK(_nmtst_connection_unchanging_changed_cb),
-                     (gpointer) &_nmtst_connection_unchanging_user_data);
+                     G_CALLBACK(_nm_assert_connection_unchanging_changed_cb),
+                     (gpointer) &_nm_assert_connection_unchanging_user_data);
     g_signal_connect(connection,
                      NM_CONNECTION_SECRETS_CLEARED,
-                     G_CALLBACK(_nmtst_connection_unchanging_changed_cb),
-                     (gpointer) &_nmtst_connection_unchanging_user_data);
+                     G_CALLBACK(_nm_assert_connection_unchanging_changed_cb),
+                     (gpointer) &_nm_assert_connection_unchanging_user_data);
     g_signal_connect(connection,
                      NM_CONNECTION_SECRETS_UPDATED,
-                     G_CALLBACK(_nmtst_connection_unchanging_secrets_updated_cb),
-                     (gpointer) &_nmtst_connection_unchanging_user_data);
+                     G_CALLBACK(_nm_assert_connection_unchanging_secrets_updated_cb),
+                     (gpointer) &_nm_assert_connection_unchanging_user_data);
 }
 #endif
 
@@ -2315,7 +2338,7 @@ nm_connection_need_secrets(NMConnection *connection, GPtrArray **hints)
         if (!setting)
             continue;
 
-        nm_assert(!setting_before || _nmtst_nm_setting_sort(setting_before, setting) < 0);
+        nm_assert(!setting_before || _nm_setting_sort_for_nm_assert(setting_before, setting) < 0);
         nm_assert(!setting_before || _nm_setting_compare_priority(setting_before, setting) <= 0);
         setting_before = setting;
 
@@ -2552,8 +2575,7 @@ nm_connection_serialization_options_equal(const NMConnectionSerializationOptions
         return FALSE;
     if (a->timestamp.has && a->timestamp.val != b->timestamp.val)
         return FALSE;
-    if (!nm_utils_strv_equal(a->seen_bssids ?: NM_STRV_EMPTY_CC(),
-                             b->seen_bssids ?: NM_STRV_EMPTY_CC()))
+    if (!nm_strv_equal(a->seen_bssids ?: NM_STRV_EMPTY_CC(), b->seen_bssids ?: NM_STRV_EMPTY_CC()))
         return FALSE;
 
     return TRUE;
@@ -2638,7 +2660,7 @@ nm_connection_is_type(NMConnection *connection, const char *type)
 }
 
 int
-_nmtst_nm_setting_sort(NMSetting *a, NMSetting *b)
+_nm_setting_sort_for_nm_assert(NMSetting *a, NMSetting *b)
 {
     g_assert(NM_IS_SETTING(a));
     g_assert(NM_IS_SETTING(b));
@@ -2705,7 +2727,7 @@ nm_connection_get_settings(NMConnection *connection, guint *out_length)
         NMSetting *setting = priv->settings[nm_meta_setting_types_by_priority[i]];
 
         if (setting) {
-            nm_assert(j == 0 || _nmtst_nm_setting_sort(arr[j - 1], setting) < 0);
+            nm_assert(j == 0 || _nm_setting_sort_for_nm_assert(arr[j - 1], setting) < 0);
             arr[j++] = setting;
         }
     }
@@ -3099,6 +3121,8 @@ nm_connection_get_virtual_device_description(NMConnection *connection)
             nm_connection_get_setting_infiniband(connection));
     } else if (!strcmp(type, NM_SETTING_IP_TUNNEL_SETTING_NAME))
         display_type = _("IP Tunnel");
+    else if (!strcmp(type, NM_SETTING_WIREGUARD_SETTING_NAME))
+        display_type = _("WireGuard");
 
     if (!iface || !display_type)
         return NULL;