chiark / gitweb /
network-internal: chain matches with AND in net_match_config()
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 13 Feb 2015 23:38:22 +0000 (18:38 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 16 Feb 2015 18:16:46 +0000 (13:16 -0500)
The test would treat the first non-empty set of matches in
match_paths, match_drivers, match_types, match_names as definitive
(essentially chaining them with OR). Make those tests instead match
like other tests and require all to pass if the set of patterns is
nonempty.

src/libsystemd-network/network-internal.c

index 5867aef662c90e5c579c544816465c7e1aea287a..b6bddd9c60ce9f34bac801a8492fe4c52004efb4 100644 (file)
@@ -112,17 +112,17 @@ bool net_match_config(const struct ether_addr *match_mac,
         if (match_mac && (!dev_mac || memcmp(match_mac, dev_mac, ETH_ALEN)))
                 return false;
 
-        if (!strv_isempty(match_paths))
-                return strv_fnmatch(dev_path, match_paths, 0);
+        if (!strv_fnmatch_or_empty(dev_path, match_paths, 0))
+                return false;
 
-        if (!strv_isempty(match_drivers))
-                return strv_fnmatch(dev_driver, match_drivers, 0);
+        if (!strv_fnmatch_or_empty(dev_driver, match_drivers, 0))
+                return false;
 
-        if (!strv_isempty(match_types))
-                return strv_fnmatch(dev_type, match_types, 0);
+        if (!strv_fnmatch_or_empty(dev_type, match_types, 0))
+                return false;
 
-        if (!strv_isempty(match_names))
-                return strv_fnmatch(dev_name, match_names, 0);
+        if (!strv_fnmatch_or_empty(dev_name, match_names, 0))
+                return false;
 
         return true;
 }