chiark / gitweb /
network/link: Match - filter on kernel cmdline, host and virt
[elogind.git] / src / udev / net / link-config.c
index bd97cd8cf87d2672db439141aea1a440b22d2e00..15bea4f4caa3cd089288bcddc09f67b1586c228c 100644 (file)
@@ -97,7 +97,7 @@ static int link_config_ctx_connect(link_config_ctx *ctx) {
         if (r < 0)
                 return r;
 
-        r = sd_rtnl_open(0, &ctx->rtnl);
+        r = sd_rtnl_open(&ctx->rtnl, 0);
         if (r < 0)
                 return r;
 
@@ -242,9 +242,10 @@ int link_config_get(link_config_ctx *ctx, struct udev_device *device, link_confi
 
                 if (net_match_config(link->match_mac, link->match_path,
                                      link->match_driver, link->match_type, NULL,
+                                     link->match_host, link->match_virt, link->match_kernel,
                                      udev_device_get_sysattr_value(device, "address"),
                                      udev_device_get_property_value(device, "ID_PATH"),
-                                     udev_device_get_driver(device),
+                                     udev_device_get_driver(udev_device_get_parent(device)),
                                      udev_device_get_devtype(device),
                                      NULL)) {
                         log_debug("Config file %s applies to device %s",
@@ -383,6 +384,9 @@ int link_config_apply(link_config_ctx *ctx, link_config *config, struct udev_dev
 
                 for (policy = config->name_policy; !new_name && *policy != _NAMEPOLICY_INVALID; policy++) {
                         switch (*policy) {
+                                case NAMEPOLICY_DATABASE:
+                                        new_name = udev_device_get_property_value(device, "ID_NET_NAME_FROM_DATABASE");
+                                        break;
                                 case NAMEPOLICY_ONBOARD:
                                         new_name = udev_device_get_property_value(device, "ID_NET_NAME_ONBOARD");
                                         break;
@@ -447,6 +451,7 @@ DEFINE_STRING_TABLE_LOOKUP(mac_policy, MACPolicy);
 DEFINE_CONFIG_PARSE_ENUM(config_parse_mac_policy, mac_policy, MACPolicy, "Failed to parse MAC address policy");
 
 static const char* const name_policy_table[] = {
+        [NAMEPOLICY_DATABASE] = "database",
         [NAMEPOLICY_ONBOARD] = "onboard",
         [NAMEPOLICY_SLOT] = "slot",
         [NAMEPOLICY_PATH] = "path",