diff options
author | Thomas Haller <thaller@redhat.com> | 2023-03-14 09:35:48 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2023-03-27 11:22:45 +0200 |
commit | 75c63f7a6c6c071240ac90ee028a51c41fcf696a (patch) | |
tree | a21c371fb1a2c9f2691b92fad17306c594136026 | |
parent | 0b9c9832b7be9c40abc9dc06bedf3cbf30f31e7f (diff) |
libnm: normalize "wifi.{rate,tx-power}" properties to zero
-rw-r--r-- | src/libnm-core-impl/nm-connection.c | 23 | ||||
-rw-r--r-- | src/libnm-core-impl/nm-setting-wireless.c | 13 | ||||
-rw-r--r-- | src/libnm-core-impl/tests/test-general.c | 2 |
3 files changed, 37 insertions, 1 deletions
diff --git a/src/libnm-core-impl/nm-connection.c b/src/libnm-core-impl/nm-connection.c index bc16a6bb42..8b4144addb 100644 --- a/src/libnm-core-impl/nm-connection.c +++ b/src/libnm-core-impl/nm-connection.c @@ -1449,6 +1449,28 @@ _normalize_wireless_mac_address_randomization(NMConnection *self) } static gboolean +_normalize_wireless(NMConnection *self) +{ + NMSettingWireless *s_wifi = nm_connection_get_setting_wireless(self); + gboolean changed = FALSE; + + if (!s_wifi) + return FALSE; + + if (nm_setting_wireless_get_rate(s_wifi) != 0) { + g_object_set(s_wifi, NM_SETTING_WIRELESS_RATE, 0u, NULL); + changed = TRUE; + } + + if (nm_setting_wireless_get_tx_power(s_wifi) != 0) { + g_object_set(s_wifi, NM_SETTING_WIRELESS_TX_POWER, 0u, NULL); + changed = TRUE; + } + + return changed; +} + +static gboolean _normalize_macsec(NMConnection *self) { NMSettingMacsec *s_macsec = nm_connection_get_setting_macsec(self); @@ -1991,6 +2013,7 @@ _connection_normalize(NMConnection *connection, was_modified |= _normalize_bond_mode(connection); was_modified |= _normalize_bond_options(connection); was_modified |= _normalize_wireless_mac_address_randomization(connection); + was_modified |= _normalize_wireless(connection); was_modified |= _normalize_macsec(connection); was_modified |= _normalize_team_config(connection); was_modified |= _normalize_team_port_config(connection); diff --git a/src/libnm-core-impl/nm-setting-wireless.c b/src/libnm-core-impl/nm-setting-wireless.c index 5c20604d07..beb22276b7 100644 --- a/src/libnm-core-impl/nm-setting-wireless.c +++ b/src/libnm-core-impl/nm-setting-wireless.c @@ -1104,6 +1104,19 @@ verify(NMSetting *setting, NMConnection *connection, GError **error) return NM_SETTING_VERIFY_NORMALIZABLE; mac_addr_rand_ok: + if (priv->tx_power != 0 || priv->rate != 0) { + g_set_error(error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("property is deprecated and not implemented")); + g_prefix_error(error, + "%s.%s: ", + NM_SETTING_WIRELESS_SETTING_NAME, + priv->tx_power != 0 ? NM_SETTING_WIRELESS_TX_POWER + : NM_SETTING_WIRELESS_RATE); + return NM_SETTING_VERIFY_NORMALIZABLE; + } + return TRUE; } diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c index 0feff6d1d5..d3ff202780 100644 --- a/src/libnm-core-impl/tests/test-general.c +++ b/src/libnm-core-impl/tests/test-general.c @@ -3210,7 +3210,7 @@ test_setting_new_from_dbus_bad(void) nmtst_assert_success(conn, error); setting = nm_connection_get_setting(conn, NM_TYPE_SETTING_WIRELESS); g_assert(setting); - g_assert_cmpint(nm_setting_wireless_get_rate(NM_SETTING_WIRELESS(setting)), ==, 10); + g_assert_cmpint(nm_setting_wireless_get_rate(NM_SETTING_WIRELESS(setting)), ==, 0); g_object_unref(conn); g_variant_unref(dict); |