diff options
| author | Michael Biebl <biebl@debian.org> | 2022-01-13 22:30:39 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2022-01-13 22:30:39 +0100 |
| commit | 88c227d90a6b7b388c5c85d72802a0ca8f05ed5c (patch) | |
| tree | 71f32df6617802270e8a78574bd8e1637dc532f4 /src/libnm-core-impl/nm-connection.c | |
| parent | e74c568b07b50b97873fb4ee1d776dedefbd54d6 (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.c | 78 |
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; |