diff options
author | david@fubar.dk <david@fubar.dk> | 2003-12-08 09:19:19 -0800 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:13:06 -0700 |
commit | 5aebfbcb62614fc2bf2b1579d62e3fe272c6751a (patch) | |
tree | afe2093652343ee02e95880d25cf3b3e48779c74 /udev_sysbus_policy.conf | |
parent | 3d150dfb28efbaf0b25f154fb8955c47d606c3d5 (diff) |
[PATCH] D-BUS patch for udev-008
Attached is a patch against udev-008 to send out a D-BUS message when a
device node is added or removed.
Using D-BUS lingo, udev acquires the org.kernel.udev service and sends
out a NodeCreated or NodeDeleted signal on the
org.kernel.udev.NodeMonitor interface. Each signal carries two
parameters: the node in question and the corresponding sysfs path.
[Note: the D-BUS concepts of service, interface, object can be a bit
confusing at first glance]
An example program listening for these messages looks like this
#!/usr/bin/python
import dbus
import gtk
def udev_signal_received(dbus_iface, member, service, object_path, message):
[filename, sysfs_path] = message.get_args_list()
if member=='NodeCreated':
print 'Node %s created for %s'%(filename, sysfs_path)
elif member=='NodeDeleted':
print 'Node %s deleted for %s'%(filename, sysfs_path)
def main():
bus = dbus.Bus(dbus.Bus.TYPE_SYSTEM)
bus.add_signal_receiver(udev_signal_received,
'org.kernel.udev.NodeMonitor', # interface
'org.kernel.udev', # service
'/org/kernel/udev/NodeMonitor') # object
gtk.mainloop()
if __name__ == '__main__':
main()
and this is the output when hot-plugging some usb-storage.
[david@laptop udev-008]$ ~/node_monitor.py
Node /udev/sda created for /block/sda
Node /udev/sda1 created for /block/sda/sda1
Node /udev/sda1 deleted for /block/sda/sda1
Node /udev/sda deleted for /block/sda
The patch requires D-BUS 0.20 or later while the python example program
requires D-BUS from CVS as I only recently applied a patch against the
python bindings.
Diffstat (limited to 'udev_sysbus_policy.conf')
-rw-r--r-- | udev_sysbus_policy.conf | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/udev_sysbus_policy.conf b/udev_sysbus_policy.conf new file mode 100644 index 0000000000..b2660e65cf --- /dev/null +++ b/udev_sysbus_policy.conf @@ -0,0 +1,23 @@ +<!DOCTYPE busconfig PUBLIC + "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> +<busconfig> + + <!-- This configuration file specifies the required security policies + for udev to work. --> + + <!-- Only root can own the udev service and only root can use the + org.kernel.udev.NodeMonitor interface to send signals --> + <policy user="root"> + <allow own="org.kernel.udev"/> + + <allow send_interface="org.kernel.udev.NodeMonitor"/> + </policy> + + <!-- Allow anyone to listen to the org.kernel.udev.NodeMonitor interface + for messages send from the owner of the org.kernel.udev service --> + <policy context="default"> + <allow receive_interface="org.kernel.udev.NodeMonitor"/> + </policy> +</busconfig> + |