config: move some spec-match-list handling from config to core

NMConfig accepted no-auto-default and ignore-carrier lists with
untagged specs (ie, interface names not prefixed with
"interface-name:" and hardware addresses not prefixed with "mac:").
Move that handling into nm_match_spec_interface_name() and
nm_match_spec_hwaddr() instead.
This commit is contained in:
Dan Winship
2014-07-17 16:09:42 -04:00
parent 4308a8305a
commit 2b2faf9c28
4 changed files with 12 additions and 27 deletions

View File

@@ -589,6 +589,9 @@ nm_match_spec_hwaddr (const GSList *specs, const char *hwaddr)
g_return_val_if_fail (hwaddr != NULL, FALSE);
if (nm_match_spec_string (specs, hwaddr))
return TRUE;
hwaddr_match = g_strdup_printf ("mac:%s", hwaddr);
matched = nm_match_spec_string (specs, hwaddr_match);
g_free (hwaddr_match);
@@ -603,6 +606,9 @@ nm_match_spec_interface_name (const GSList *specs, const char *interface_name)
g_return_val_if_fail (interface_name != NULL, FALSE);
if (nm_match_spec_string (specs, interface_name))
return TRUE;
iface_match = g_strdup_printf ("interface-name:%s", interface_name);
matched = nm_match_spec_string (specs, iface_match);
g_free (iface_match);

View File

@@ -38,7 +38,6 @@ nm_config_device_spec_match_list (NMConfigDevice *self, const char **config_spec
{
GSList *specs = NULL;
gboolean match;
char buf[NM_UTILS_HWADDR_LEN_MAX + 1], *tmp;
int i;
g_return_val_if_fail (NM_IS_CONFIG_DEVICE (self), FALSE);
@@ -46,28 +45,13 @@ nm_config_device_spec_match_list (NMConfigDevice *self, const char **config_spec
if (!config_specs)
return FALSE;
/* For compatibility, we allow an untagged MAC address, and for convenience,
* we allow untagged interface names as well.
*/
for (i = 0; config_specs[i]; i++) {
if (g_strcmp0 (config_specs[i], "*") == 0)
specs = g_slist_prepend (specs, g_strdup (config_specs[i]));
else if (nm_utils_iface_valid_name (config_specs[i]))
specs = g_slist_prepend (specs, g_strdup_printf ("interface-name:%s", config_specs[i]));
else if ( nm_utils_hwaddr_aton (config_specs[i], ARPHRD_ETHER, buf)
|| nm_utils_hwaddr_aton (config_specs[i], ARPHRD_INFINIBAND, buf)) {
tmp = g_ascii_strdown (config_specs[i], -1);
specs = g_slist_prepend (specs, g_strdup_printf ("mac:%s", tmp));
g_free (tmp);
} else
specs = g_slist_prepend (specs, g_strdup (config_specs[i]));
}
for (i = 0; config_specs[i]; i++)
specs = g_slist_prepend (specs, (char *) config_specs[i]);
specs = g_slist_reverse (specs);
match = NM_CONFIG_DEVICE_GET_INTERFACE (self)->spec_match_list (self, specs);
g_slist_free_full (specs, g_free);
g_slist_free (specs);
return match;
}

View File

@@ -2,6 +2,7 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/libnm-util \
-I$(top_builddir)/libnm-util \
-I$(top_srcdir)/src/ \
-I$(top_srcdir)/src/config \
-DG_LOG_DOMAIN=\""NetworkManager"\" \
-DNM_VERSION_MAX_ALLOWED=NM_VERSION_NEXT_STABLE \

View File

@@ -26,6 +26,7 @@
#include "nm-test-device.h"
#include "nm-config-device.h"
#include "nm-utils.h"
#include "NetworkManagerUtils.h"
static void nm_test_device_config_device_interface_init (NMConfigDeviceInterface *iface);
@@ -60,15 +61,8 @@ static gboolean
spec_match_list (NMConfigDevice *device, const GSList *specs)
{
NMTestDevice *self = NM_TEST_DEVICE (device);
const GSList *iter;
const char *spec;
for (iter = specs; iter; iter = iter->next) {
spec = iter->data;
if (g_str_has_prefix (spec, "mac:") && !strcmp (spec + 4, self->hwaddr))
return TRUE;
}
return FALSE;
return nm_match_spec_hwaddr (specs, self->hwaddr);
}
static const guint8 *