From 7f63c875f973f3b7cc136130c61348b36e280ab6 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Sat, 28 Jan 2017 16:30:38 +0100 Subject: [PATCH] libnm-core: clear wifi.mac-address-randomization when unsetting wifi.cloned-mac-address When a client clears wifi.cloned-mac-address, he clearly also want to clear the deprected wifi.mac-address-randomization property. Do that automatically in libnm. https://mail.gnome.org/archives/networkmanager-list/2017-January/msg00060.html --- libnm-core/nm-setting-wireless.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-setting-wireless.c index 1d129f6634..8ae84d4cbd 100644 --- a/libnm-core/nm-setting-wireless.c +++ b/libnm-core/nm-setting-wireless.c @@ -982,6 +982,7 @@ set_property (GObject *object, guint prop_id, NMSettingWirelessPrivate *priv = NM_SETTING_WIRELESS_GET_PRIVATE (object); const char * const *blacklist; const char *mac; + gboolean bool_val; int i; switch (prop_id) { @@ -1017,9 +1018,18 @@ set_property (GObject *object, guint prop_id, ETH_ALEN); break; case PROP_CLONED_MAC_ADDRESS: + bool_val = !!priv->cloned_mac_address; g_free (priv->cloned_mac_address); priv->cloned_mac_address = _nm_utils_hwaddr_canonical_or_invalid (g_value_get_string (value), ETH_ALEN); + if (bool_val && !priv->cloned_mac_address) { + /* cloned-mac-address was set before but was now explicitly cleared. + * In this case, we also clear mac-address-randomization flag */ + if (priv->mac_address_randomization != NM_SETTING_MAC_RANDOMIZATION_DEFAULT) { + priv->mac_address_randomization = NM_SETTING_MAC_RANDOMIZATION_DEFAULT; + g_object_notify (object, NM_SETTING_WIRELESS_MAC_ADDRESS); + } + } break; case PROP_GENERATE_MAC_ADDRESS_MASK: g_free (priv->generate_mac_address_mask);