diff options
| author | Thomas Haller <thaller@redhat.com> | 2017-01-28 15:53:47 +0100 |
|---|---|---|
| committer | Thomas Haller <thaller@redhat.com> | 2017-01-28 16:08:41 +0100 |
| commit | cb18faf2df6b556cf2837001c62efbb5fbe2066b (patch) | |
| tree | 5eb63ab7b8b3792a810122b8688a29fd5735e56d | |
| parent | b0ad0ff4d75ac59268ec8cf07bc0d47202db4ca7 (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.c | 4 | ||||
| -rw-r--r-- | src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 2 | ||||
| -rw-r--r-- | src/settings/plugins/ifcfg-rh/writer.c | 9 |
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; } |
