summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-05-22 01:00:28 +0200
committerLennart Poettering <lennart@poettering.net>2010-05-22 01:00:28 +0200
commite1ce2c2782015579f042d4d6963ed039333fb8c2 (patch)
treebe4d1647cce5d64f6fde549d3543435b118d7016 /src
parent11c3a4eeb7e65eccd6fc0870bb1cda315fa33ba5 (diff)
device: make use of new libudev tags logic
Diffstat (limited to 'src')
-rw-r--r--src/99-systemd.rules8
-rw-r--r--src/device.c23
2 files changed, 14 insertions, 17 deletions
diff --git a/src/99-systemd.rules b/src/99-systemd.rules
index 62aab85..70c0d81 100644
--- a/src/99-systemd.rules
+++ b/src/99-systemd.rules
@@ -7,10 +7,10 @@
ACTION!="add|change", GOTO="systemd_end"
-KERNEL=="tty[0-9]|tty1[0-2]", ENV{SYSTEMD_EXPOSE}="1"
-KERNEL=="ttyS*", ENV{SYSTEMD_EXPOSE}="1"
+KERNEL=="tty[0-9]|tty1[0-2]", TAG="systemd"
+KERNEL=="ttyS*", TAG="systemd"
-SUBSYSTEM=="block", ENV{SYSTEMD_EXPOSE}="1"
+SUBSYSTEM=="block", TAG="systemd"
# We need a hardware independent way to identify network devices. We
# use the /sys/subsystem path for this. Current vanilla kernels don't
@@ -23,6 +23,6 @@ SUBSYSTEM=="block", ENV{SYSTEMD_EXPOSE}="1"
#
# http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;f=libudev/libudev-enumerate.c;h=da831449dcaf5e936a14409e8e68ab12d30a98e2;hb=HEAD#l742
-SUBSYSTEM=="net", KERNEL!="lo", ENV{SYSTEMD_EXPOSE}="1", ENV{SYSTEMD_ALIAS}="/sys/subsystem/net/devices/%k"
+SUBSYSTEM=="net", KERNEL!="lo", TAG="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/net/devices/%k"
LABEL="systemd_end"
diff --git a/src/device.c b/src/device.c
index e67d0a6..adc6cc1 100644
--- a/src/device.c
+++ b/src/device.c
@@ -144,31 +144,19 @@ static int device_find_escape_name(Manager *m, const char *dn, Unit **_u) {
}
static int device_process_new_device(Manager *m, struct udev_device *dev, bool update_state) {
- const char *dn, *wants, *sysfs, *expose, *model, *alias;
+ const char *dn, *wants, *sysfs, *model, *alias;
Unit *u = NULL;
int r;
char *w, *state;
size_t l;
bool delete;
struct udev_list_entry *item = NULL, *first = NULL;
- int b;
assert(m);
if (!(sysfs = udev_device_get_syspath(dev)))
return -ENOMEM;
- if (!(expose = udev_device_get_property_value(dev, "SYSTEMD_EXPOSE")))
- return 0;
-
- if ((b = parse_boolean(expose)) < 0) {
- log_error("Failed to parse SYSTEMD_EXPOSE udev property for device %s: %s", sysfs, expose);
- return 0;
- }
-
- if (!b)
- return 0;
-
/* Check whether this entry is even relevant for us. */
dn = udev_device_get_devnode(dev);
wants = udev_device_get_property_value(dev, "SYSTEMD_WANTS");
@@ -365,6 +353,11 @@ static int device_enumerate(Manager *m) {
goto fail;
}
+ if (udev_monitor_filter_add_match_tag(m->udev_monitor, "systemd") < 0) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
if (udev_monitor_enable_receiving(m->udev_monitor) < 0) {
r = -EIO;
goto fail;
@@ -385,6 +378,10 @@ static int device_enumerate(Manager *m) {
r = -ENOMEM;
goto fail;
}
+ if (udev_enumerate_add_match_tag(e, "systemd") < 0) {
+ r = -EIO;
+ goto fail;
+ }
if (udev_enumerate_scan_devices(e) < 0) {
r = -EIO;