chiark / gitweb /
udev: import the full db on MOVE events for devices without dev_t
authorTom Gundersen <teg@jklm.no>
Tue, 9 Sep 2014 10:23:19 +0000 (12:23 +0200)
committerTom Gundersen <teg@jklm.no>
Tue, 9 Sep 2014 13:03:49 +0000 (15:03 +0200)
rules/80-net-setup-link.rules
src/udev/udev-event.c

index 420769497fb68755b0faa0c132c8752dbb5c3895..6e411a91f0ec9766c8351348825ca331863b3b5f 100644 (file)
@@ -4,8 +4,6 @@ SUBSYSTEM!="net", GOTO="net_setup_link_end"
 
 IMPORT{builtin}="path_id"
 
-ACTION=="move", IMPORT{db}="ID_NET_DRIVER", IMPORT{db}="ID_NET_LINK_FILE", IMPORT{db}="ID_NET_NAME"
-
 ACTION!="add", GOTO="net_setup_link_end"
 
 IMPORT{builtin}="net_setup_link"
index 00cd6d47dba4f60fe458df53395ed95b016deb61..18b92ca428769b08e79b7891ba37ef0ae4f72445 100644 (file)
@@ -805,6 +805,22 @@ void udev_event_execute_rules(struct udev_event *event,
                                 udev_watch_end(event->udev, event->dev_db);
                 }
 
+                if (major(udev_device_get_devnum(dev)) == 0 &&
+                    streq(udev_device_get_action(dev), "move")) {
+                        struct udev_list_entry *entry;
+
+                        for ((entry = udev_device_get_properties_list_entry(event->dev_db)); entry; entry = udev_list_entry_get_next(entry)) {
+                                const char *key, *value;
+                                struct udev_list_entry *property;
+
+                                key = udev_list_entry_get_name(entry);
+                                value = udev_list_entry_get_value(entry);
+
+                                property = udev_device_add_property(event->dev, key, value);
+                                udev_list_entry_set_num(property, true);
+                        }
+                }
+
                 udev_rules_apply_to_event(rules, event, timeout_usec, sigmask);
 
                 /* rename a new network interface, if needed */