summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-01-28 15:53:47 +0100
committerThomas Haller <thaller@redhat.com>2017-01-28 16:08:41 +0100
commitcb18faf2df6b556cf2837001c62efbb5fbe2066b (patch)
tree5eb63ab7b8b3792a810122b8688a29fd5735e56d
parentb0ad0ff4d75ac59268ec8cf07bc0d47202db4ca7 (diff)
ifcfg-rh: fix interpreting missing MAC_ADDRESS_RANDOMIZATION as permanent address
With commit 4f6c91d6962cc031f07e52bb31adde560ad70fac, we aimed to enable mac-address-randomization by default for Wi-Fi. That however is not possible by default because it breaks various scenarios. Also, later wifi.mac-address-randomization was deprecated in favor of wifi.cloned-mac-address setting. Both wifi.mac-address-randomization and wifi.cloned-mac-address support global default values, so it is wrong to read a missing MAC_ADDRESS_RANDOMIZATION setting as "NEVER" -- which due to normalization also results in cloned-mac-address=permanent. See also commit 46d53e11012c047e09d04f663c1c36e6c47dc298 which does something similar for keyfile. This bug also prevents a user from clearing the cloned-mac-address: $ nmcli connection show "$CONN" ... 802-11-wireless.cloned-mac-address: permanent 802-11-wireless.mac-address-randomization: never ... $ nmcli connection modify "$CONN: wifi.cloned-mac-address '' # ^ takes no effect As workaround, you also need to clear mac-address-randomization: $ nmcli connection modify "$CONN: wifi.cloned-mac-address '' \ wifi.mac-address-randomization default https://mail.gnome.org/archives/networkmanager-list/2017-January/msg00060.html (cherry picked from commit 27cba47957630a89e3b1e3a06aa44a525270cec1) (cherry picked from commit 491ccd9d64b2ea16f2d399b42454bee9c1c7bac1)
-rw-r--r--src/settings/plugins/ifcfg-rh/reader.c4
-rw-r--r--src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c2
-rw-r--r--src/settings/plugins/ifcfg-rh/writer.c9
3 files changed, 7 insertions, 8 deletions
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index 825d51e..14abbae 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
@@ -3358,7 +3358,7 @@ make_wireless_setting (shvarFile *ifcfg,
NMSettingWireless *s_wireless;
char *value = NULL;
gint64 chan = 0;
- NMSettingMacRandomization mac_randomization = NM_SETTING_MAC_RANDOMIZATION_NEVER;
+ NMSettingMacRandomization mac_randomization;
NMSettingWirelessPowersave powersave = NM_SETTING_WIRELESS_POWERSAVE_DEFAULT;
s_wireless = NM_SETTING_WIRELESS (nm_setting_wireless_new ());
@@ -3580,7 +3580,7 @@ make_wireless_setting (shvarFile *ifcfg,
}
g_free (value);
} else
- mac_randomization = NM_SETTING_MAC_RANDOMIZATION_NEVER;
+ mac_randomization = NM_SETTING_MAC_RANDOMIZATION_DEFAULT;
g_object_set (s_wireless,
NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION,
diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
index 9ed48be..ec36ad2 100644
--- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
@@ -8951,7 +8951,7 @@ int main (int argc, char **argv)
nmtst_add_test_func (TPATH "wifi/read-mac-random-always", test_read_wifi_mac_random, "always", GINT_TO_POINTER (NM_SETTING_MAC_RANDOMIZATION_ALWAYS));
nmtst_add_test_func (TPATH "wifi/read-mac-random-never", test_read_wifi_mac_random, "never", GINT_TO_POINTER (NM_SETTING_MAC_RANDOMIZATION_NEVER));
nmtst_add_test_func (TPATH "wifi/read-mac-random-default", test_read_wifi_mac_random, "default", GINT_TO_POINTER (NM_SETTING_MAC_RANDOMIZATION_DEFAULT));
- nmtst_add_test_func (TPATH "wifi/read-mac-random-missing", test_read_wifi_mac_random, "missing", GINT_TO_POINTER (NM_SETTING_MAC_RANDOMIZATION_NEVER));
+ nmtst_add_test_func (TPATH "wifi/read-mac-random-missing", test_read_wifi_mac_random, "missing", GINT_TO_POINTER (NM_SETTING_MAC_RANDOMIZATION_DEFAULT));
nmtst_add_test_func (TPATH "wifi/write-mac-random-always", test_write_wifi_mac_random, "always", GINT_TO_POINTER (NM_SETTING_MAC_RANDOMIZATION_ALWAYS), "always");
nmtst_add_test_func (TPATH "wifi/write-mac-random-never", test_write_wifi_mac_random, "never", GINT_TO_POINTER (NM_SETTING_MAC_RANDOMIZATION_NEVER), "never");
diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c
index dff8f1b..6d2eb51 100644
--- a/src/settings/plugins/ifcfg-rh/writer.c
+++ b/src/settings/plugins/ifcfg-rh/writer.c
@@ -1021,17 +1021,16 @@ write_wireless_setting (NMConnection *connection,
break;
}
- svSetValue (ifcfg, "MAC_ADDRESS_RANDOMIZATION", NULL, TRUE);
switch (nm_setting_wireless_get_mac_address_randomization (s_wireless)) {
- case NM_SETTING_MAC_RANDOMIZATION_DEFAULT:
- svSetValue (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "default", TRUE);
+ case NM_SETTING_MAC_RANDOMIZATION_NEVER:
+ svSetValue (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "never", TRUE);
break;
case NM_SETTING_MAC_RANDOMIZATION_ALWAYS:
svSetValue (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "always", TRUE);
break;
+ case NM_SETTING_MAC_RANDOMIZATION_DEFAULT:
default:
- case NM_SETTING_MAC_RANDOMIZATION_NEVER:
- svSetValue (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "never", TRUE);
+ svSetValue (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "default", TRUE);
break;
}