chiark / gitweb /
importd: add new bus calls for importing local tar and raw images
[elogind.git] / src / udev / udev-builtin-net_setup_link.c
index 739221ba2b3f4f8f6f305842d587198aea4dca68..d4589470fb46b32fcf412b442dd93d14a44a6457 100644 (file)
 #include "udev.h"
 #include "log.h"
 
-link_config_ctx *ctx;
+static link_config_ctx *ctx = NULL;
 
 static int builtin_net_setup_link(struct udev_device *dev, int argc, char **argv, bool test) {
+        _cleanup_free_ char *driver = NULL;
+        const char *name = NULL;
         link_config *link;
         int r;
 
@@ -34,23 +36,32 @@ static int builtin_net_setup_link(struct udev_device *dev, int argc, char **argv
                 return EXIT_FAILURE;
         }
 
+        r = link_get_driver(ctx, dev, &driver);
+        if (r >= 0)
+                udev_builtin_add_property(dev, test, "ID_NET_DRIVER", driver);
+
         r = link_config_get(ctx, dev, &link);
         if (r < 0) {
                 if (r == -ENOENT) {
-                        log_debug("No matching link configuration found");
+                        log_debug("No matching link configuration found.");
                         return EXIT_SUCCESS;
                 } else {
-                        log_error("Could not get link config");
+                        log_error_errno(r, "Could not get link config: %m");
                         return EXIT_FAILURE;
                 }
         }
 
-        r = link_config_apply(ctx, link, dev);
+        r = link_config_apply(ctx, link, dev, &name);
         if (r < 0) {
-                log_error("Could not apply link config to %s", udev_device_get_sysname(dev));
+                log_error_errno(r, "Could not apply link config to %s: %m", udev_device_get_sysname(dev));
                 return EXIT_FAILURE;
         }
 
+        udev_builtin_add_property(dev, test, "ID_NET_LINK_FILE", link->filename);
+
+        if (name)
+                udev_builtin_add_property(dev, test, "ID_NET_NAME", name);
+
         return EXIT_SUCCESS;
 }
 
@@ -68,17 +79,18 @@ static int builtin_net_setup_link_init(struct udev *udev) {
         if (r < 0)
                 return r;
 
-        log_debug("Created link configuration context");
+        log_debug("Created link configuration context.");
         return 0;
 }
 
 static void builtin_net_setup_link_exit(struct udev *udev) {
         link_config_ctx_free(ctx);
-        log_debug("Unloaded link configuration context");
+        ctx = NULL;
+        log_debug("Unloaded link configuration context.");
 }
 
 static bool builtin_net_setup_link_validate(struct udev *udev) {
-        log_debug("Check if link configuration needs reloading");
+        log_debug("Check if link configuration needs reloading.");
         if (!ctx)
                 return false;
 
@@ -91,6 +103,6 @@ const struct udev_builtin udev_builtin_net_setup_link = {
         .init = builtin_net_setup_link_init,
         .exit = builtin_net_setup_link_exit,
         .validate = builtin_net_setup_link_validate,
-        .help = "configure network link",
+        .help = "Configure network link",
         .run_once = false,
 };