summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-03-14 09:35:48 +0100
committerThomas Haller <thaller@redhat.com>2023-03-27 11:22:45 +0200
commit75c63f7a6c6c071240ac90ee028a51c41fcf696a (patch)
treea21c371fb1a2c9f2691b92fad17306c594136026
parent0b9c9832b7be9c40abc9dc06bedf3cbf30f31e7f (diff)
libnm: normalize "wifi.{rate,tx-power}" properties to zero
-rw-r--r--src/libnm-core-impl/nm-connection.c23
-rw-r--r--src/libnm-core-impl/nm-setting-wireless.c13
-rw-r--r--src/libnm-core-impl/tests/test-general.c2
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);