summaryrefslogtreecommitdiff
path: root/clients/cli/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'clients/cli/settings.c')
-rw-r--r--clients/cli/settings.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/clients/cli/settings.c b/clients/cli/settings.c
index 6573e0b2bc..d3645ee031 100644
--- a/clients/cli/settings.c
+++ b/clients/cli/settings.c
@@ -24,6 +24,7 @@
#include <stdlib.h>
#include <arpa/inet.h>
+#include "nm-common-macros.h"
#include "utils.h"
#include "common.h"
#include "nm-vpn-helpers.h"
@@ -2889,11 +2890,12 @@ nmc_property_set_ssid (NMSetting *setting, const char *prop, const char *val, GE
}
static gboolean
-nmc_property_set_mac (NMSetting *setting, const char *prop, const char *val, GError **error)
+_property_set_mac (NMSetting *setting, const char *prop, const char *val, gboolean cloned_mac_addr, GError **error)
{
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- if (!nm_utils_hwaddr_valid (val, ETH_ALEN)) {
+ if ( (!cloned_mac_addr || !NM_CLONED_MAC_IS_SPECIAL (val))
+ && !nm_utils_hwaddr_valid (val, ETH_ALEN)) {
g_set_error (error, 1, 0, _("'%s' is not a valid Ethernet MAC"), val);
return FALSE;
}
@@ -2903,6 +2905,18 @@ nmc_property_set_mac (NMSetting *setting, const char *prop, const char *val, GEr
}
static gboolean
+nmc_property_set_mac (NMSetting *setting, const char *prop, const char *val, GError **error)
+{
+ return _property_set_mac (setting, prop, val, FALSE, error);
+}
+
+static gboolean
+nmc_property_set_mac_cloned (NMSetting *setting, const char *prop, const char *val, GError **error)
+{
+ return _property_set_mac (setting, prop, val, TRUE, error);
+}
+
+static gboolean
nmc_property_set_mtu (NMSetting *setting, const char *prop, const char *val, GError **error)
{
const char *mtu = val;
@@ -7198,7 +7212,7 @@ nmc_properties_init (void)
NULL);
nmc_add_prop_funcs (GLUE (WIRED, CLONED_MAC_ADDRESS),
nmc_property_wired_get_cloned_mac_address,
- nmc_property_set_mac,
+ nmc_property_set_mac_cloned,
NULL,
NULL,
NULL,
@@ -7316,7 +7330,7 @@ nmc_properties_init (void)
NULL);
nmc_add_prop_funcs (GLUE (WIRELESS, CLONED_MAC_ADDRESS),
nmc_property_wireless_get_cloned_mac_address,
- nmc_property_set_mac,
+ nmc_property_set_mac_cloned,
NULL,
NULL,
NULL,