mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-07 14:18:12 +02:00
ifcfg-rh: fix interpreting missing MAC_ADDRESS_RANDOMIZATION as permanent address
With commit4f6c91d696, 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 commit46d53e1101which 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 commit27cba47957)
This commit is contained in:
parent
6419d24620
commit
491ccd9d64
3 changed files with 7 additions and 8 deletions
|
|
@ -3387,7 +3387,7 @@ make_wireless_setting (shvarFile *ifcfg,
|
||||||
const char *cvalue;
|
const char *cvalue;
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
gint64 chan = 0;
|
gint64 chan = 0;
|
||||||
NMSettingMacRandomization mac_randomization = NM_SETTING_MAC_RANDOMIZATION_NEVER;
|
NMSettingMacRandomization mac_randomization;
|
||||||
NMSettingWirelessPowersave powersave = NM_SETTING_WIRELESS_POWERSAVE_DEFAULT;
|
NMSettingWirelessPowersave powersave = NM_SETTING_WIRELESS_POWERSAVE_DEFAULT;
|
||||||
|
|
||||||
s_wireless = NM_SETTING_WIRELESS (nm_setting_wireless_new ());
|
s_wireless = NM_SETTING_WIRELESS (nm_setting_wireless_new ());
|
||||||
|
|
@ -3587,7 +3587,7 @@ make_wireless_setting (shvarFile *ifcfg,
|
||||||
}
|
}
|
||||||
g_free (value);
|
g_free (value);
|
||||||
} else
|
} else
|
||||||
mac_randomization = NM_SETTING_MAC_RANDOMIZATION_NEVER;
|
mac_randomization = NM_SETTING_MAC_RANDOMIZATION_DEFAULT;
|
||||||
|
|
||||||
g_object_set (s_wireless,
|
g_object_set (s_wireless,
|
||||||
NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION,
|
NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION,
|
||||||
|
|
|
||||||
|
|
@ -941,17 +941,16 @@ write_wireless_setting (NMConnection *connection,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
svUnsetValue (ifcfg, "MAC_ADDRESS_RANDOMIZATION");
|
|
||||||
switch (nm_setting_wireless_get_mac_address_randomization (s_wireless)) {
|
switch (nm_setting_wireless_get_mac_address_randomization (s_wireless)) {
|
||||||
case NM_SETTING_MAC_RANDOMIZATION_DEFAULT:
|
case NM_SETTING_MAC_RANDOMIZATION_NEVER:
|
||||||
svSetValueString (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "default");
|
svSetValueString (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "never");
|
||||||
break;
|
break;
|
||||||
case NM_SETTING_MAC_RANDOMIZATION_ALWAYS:
|
case NM_SETTING_MAC_RANDOMIZATION_ALWAYS:
|
||||||
svSetValueString (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "always");
|
svSetValueString (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "always");
|
||||||
break;
|
break;
|
||||||
|
case NM_SETTING_MAC_RANDOMIZATION_DEFAULT:
|
||||||
default:
|
default:
|
||||||
case NM_SETTING_MAC_RANDOMIZATION_NEVER:
|
svSetValueString (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "default");
|
||||||
svSetValueString (ifcfg, "MAC_ADDRESS_RANDOMIZATION", "never");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8998,7 +8998,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-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-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-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-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");
|
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");
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue