summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-09-09 12:23:19 +0200
committerAnthony G. Basile <blueness@gentoo.org>2014-09-10 21:30:25 -0400
commit405bccb70b51075261b140ad7183cc72a2b1a82e (patch)
treeb8614f8b1bb20965cdf625614ab4b4e4a8865d0e
parent89f2848567ec16e019db4309cef0ebcd9a6c5196 (diff)
udev: import the full db on MOVE events for devices without dev_t
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
-rw-r--r--rules/80-net-setup-link.rules2
-rw-r--r--src/udev/udev-event.c16
2 files changed, 16 insertions, 2 deletions
diff --git a/rules/80-net-setup-link.rules b/rules/80-net-setup-link.rules
index 420769497f..6e411a91f0 100644
--- a/rules/80-net-setup-link.rules
+++ b/rules/80-net-setup-link.rules
@@ -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"
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
index 3b12350d4a..b2532d01ad 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -863,6 +863,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 */