Zbigniew Jędrzejewski-Szmek 62fe94
From b081b27e1433cdc7ac72b25ae8b4db887d79187f Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 62fe94
From: Tom Gundersen <teg@jklm.no>
Zbigniew Jędrzejewski-Szmek 62fe94
Date: Tue, 9 Sep 2014 12:23:19 +0200
Zbigniew Jędrzejewski-Szmek 62fe94
Subject: [PATCH] udev: import the full db on MOVE events for devices without
Zbigniew Jędrzejewski-Szmek 62fe94
 dev_t
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
---
Zbigniew Jędrzejewski-Szmek 62fe94
 rules/80-net-setup-link.rules |  2 --
Zbigniew Jędrzejewski-Szmek 62fe94
 src/udev/udev-event.c         | 16 ++++++++++++++++
Zbigniew Jędrzejewski-Szmek 62fe94
 2 files changed, 16 insertions(+), 2 deletions(-)
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/rules/80-net-setup-link.rules b/rules/80-net-setup-link.rules
Zbigniew Jędrzejewski-Szmek 62fe94
index 420769497f..6e411a91f0 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/rules/80-net-setup-link.rules
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/rules/80-net-setup-link.rules
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -4,8 +4,6 @@ SUBSYSTEM!="net", GOTO="net_setup_link_end"
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 IMPORT{builtin}="path_id"
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-ACTION=="move", IMPORT{db}="ID_NET_DRIVER", IMPORT{db}="ID_NET_LINK_FILE", IMPORT{db}="ID_NET_NAME"
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
 ACTION!="add", GOTO="net_setup_link_end"
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 IMPORT{builtin}="net_setup_link"
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
Zbigniew Jędrzejewski-Szmek 62fe94
index 00cd6d47db..18b92ca428 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/udev/udev-event.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/udev/udev-event.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -805,6 +805,22 @@ void udev_event_execute_rules(struct udev_event *event,
Zbigniew Jędrzejewski-Szmek 62fe94
                                 udev_watch_end(event->udev, event->dev_db);
Zbigniew Jędrzejewski-Szmek 62fe94
                 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
+                if (major(udev_device_get_devnum(dev)) == 0 &&
Zbigniew Jędrzejewski-Szmek 62fe94
+                    streq(udev_device_get_action(dev), "move")) {
Zbigniew Jędrzejewski-Szmek 62fe94
+                        struct udev_list_entry *entry;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+                        for ((entry = udev_device_get_properties_list_entry(event->dev_db)); entry; entry = udev_list_entry_get_next(entry)) {
Zbigniew Jędrzejewski-Szmek 62fe94
+                                const char *key, *value;
Zbigniew Jędrzejewski-Szmek 62fe94
+                                struct udev_list_entry *property;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+                                key = udev_list_entry_get_name(entry);
Zbigniew Jędrzejewski-Szmek 62fe94
+                                value = udev_list_entry_get_value(entry);
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+                                property = udev_device_add_property(event->dev, key, value);
Zbigniew Jędrzejewski-Szmek 62fe94
+                                udev_list_entry_set_num(property, true);
Zbigniew Jędrzejewski-Szmek 62fe94
+                        }
Zbigniew Jędrzejewski-Szmek 62fe94
+                }
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
                 udev_rules_apply_to_event(rules, event, timeout_usec, sigmask);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 /* rename a new network interface, if needed */