diff options
author | Dan Winship <danw@gnome.org> | 2014-07-17 16:09:42 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-07-23 10:56:26 -0400 |
commit | 2b2faf9c28a0a3442942681ecf4ad9b31b7a49ae (patch) | |
tree | 7fb3969a7ee0b70fb33cee21f3c50623f61295c5 | |
parent | 4308a8305ac6f57f2a42992931a7da3bc85fdbd4 (diff) |
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.
-rw-r--r-- | src/NetworkManagerUtils.c | 6 | ||||
-rw-r--r-- | src/config/nm-config-device.c | 22 | ||||
-rw-r--r-- | src/config/tests/Makefile.am | 1 | ||||
-rw-r--r-- | src/config/tests/nm-test-device.c | 12 |
4 files changed, 13 insertions, 28 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index d2ae0573d1..888141c65c 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -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); diff --git a/src/config/nm-config-device.c b/src/config/nm-config-device.c index 6914f033a2..b1b9e61fef 100644 --- a/src/config/nm-config-device.c +++ b/src/config/nm-config-device.c @@ -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; } diff --git a/src/config/tests/Makefile.am b/src/config/tests/Makefile.am index 8d5a5b6d99..3dac9cfb48 100644 --- a/src/config/tests/Makefile.am +++ b/src/config/tests/Makefile.am @@ -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 \ diff --git a/src/config/tests/nm-test-device.c b/src/config/tests/nm-test-device.c index b671f2558e..799d98c7da 100644 --- a/src/config/tests/nm-test-device.c +++ b/src/config/tests/nm-test-device.c @@ -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 * |