summaryrefslogtreecommitdiff
path: root/extras
diff options
context:
space:
mode:
Diffstat (limited to 'extras')
-rw-r--r--extras/run_directory/README17
-rw-r--r--extras/run_directory/RFC-dev.d50
-rw-r--r--extras/run_directory/dev.d/default/pam_console.dev52
-rw-r--r--extras/run_directory/dev.d/net/hotplug.dev21
-rw-r--r--extras/run_directory/dev.d/snd/controlC0/alsa.dev2
5 files changed, 142 insertions, 0 deletions
diff --git a/extras/run_directory/README b/extras/run_directory/README
new file mode 100644
index 0000000000..022c66451c
--- /dev/null
+++ b/extras/run_directory/README
@@ -0,0 +1,17 @@
+Use these binaries only if you need backward compatibility with
+older udev versions. The use of /etc/dev.d/ is no longer recommended
+Use explicit udev rules with RUN keys to hook into the processing.
+
+ /etc/dev.d/ + /etc/hotplug.d/ directory multiplexing is completely
+ removed from udev itself and must be emulated by calling small
+ helper binaries provided by these helpers:
+ make EXTRAS=extras/run_directory/
+ will build udev_run_devd and udev_run_hotplugd, which can be called
+ from a rule if needed:
+ RUN+="/sbin/udev_run_hotplugd"
+ The recommended way to handle this is to convert all the calls from
+ the directories to explicit udev rules and get completely rid of the
+ multiplexing. (To catch a ttyUSB event, you now no longer need to
+ fork and exit 300 tty script instances you are not interested in, it
+ is just one rule that matches exactly the device.)
+
diff --git a/extras/run_directory/RFC-dev.d b/extras/run_directory/RFC-dev.d
new file mode 100644
index 0000000000..1aca1aa393
--- /dev/null
+++ b/extras/run_directory/RFC-dev.d
@@ -0,0 +1,50 @@
+ /etc/dev.d/ How it works, and what it is for
+
+ by Greg Kroah-Hartman <greg@kroah.com> March 2004
+
+The /etc/dev.d directory works much like the /etc/hotplug.d/ directory
+in that it is a place to put symlinks or programs that get called when
+an event happens in the system. Programs will get called whenever the
+device naming program in the system has either named a new device and
+created a /dev node for it, or when a /dev node has been removed from
+the system due to a device being removed.
+
+The directory tree under /etc/dev.d/ dictate which program is run first,
+and when some programs will be run or not. The device naming program
+calls the programs in the following order:
+ /etc/dev.d/DEVNAME/*.dev
+ /etc/dev.d/SUBSYSTEM/*.dev
+ /etc/dev.d/default/*.dev
+
+The .dev extension is needed to allow automatic package managers to
+deposit backup files in these directories safely.
+
+The DEVNAME name is the name of the /dev file that has been created, or
+for network devices, the name of the newly named network device. This
+value, including the /dev path, will also be exported to userspace in
+the DEVNAME environment variable.
+
+The SUBSYSTEM name is the name of the sysfs subsystem that originally
+generated the hotplug event that caused the device naming program to
+create or remove the /dev node originally. This value is passed to
+userspace as the first argument to the program.
+
+The default directory will always be run, to enable programs to catch
+every device add and remove in a single place.
+
+All environment variables that were originally passed by the hotplug
+call that caused this device action will also be passed to the program
+called in the /etc/dev.d/ directories. Examples of these variables are
+ACTION, DEVPATH, and others. See the hotplug documentation for full
+description of this
+
+An equivalent shell script that would do this same kind of action would
+be:
+ DIR="/etc/dev.d"
+ export DEVNAME="whatever_dev_name_udev_just_gave"
+ for I in "${DIR}/$DEVNAME/"*.dev "${DIR}/$1/"*.dev "${DIR}/default/"*.dev ; do
+ if [ -f $I ]; then $I $1 ; fi
+ done
+ exit 1;
+
+
diff --git a/extras/run_directory/dev.d/default/pam_console.dev b/extras/run_directory/dev.d/default/pam_console.dev
new file mode 100644
index 0000000000..4c69ea3576
--- /dev/null
+++ b/extras/run_directory/dev.d/default/pam_console.dev
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+# Fedora solution to set the ownership/permissions of s device to the local
+# logged in user. Uses the program pam_console_setowner to match the names of
+# the device node and the symlinks against a device list and applies the
+# configured ownership and permission to the node.
+
+[ "$ACTION" != "add" ] && exit 0
+
+# we do not have console users in rc.sysinit
+[ -n "$IN_INITLOG" ] && exit 0
+
+if [ -x /sbin/pam_console_setowner -a -f /var/run/console/console.lock \
+ -a -e "$DEVNAME" ]; then
+
+ if [ -x /usr/bin/logger ]; then
+ LOGGER=/usr/bin/logger
+ elif [ -x /bin/logger ]; then
+ LOGGER=/bin/logger
+ else
+ unset LOGGER
+ fi
+ #
+ # for diagnostics
+ #
+ if [ -t 1 -o -z "$LOGGER" ]; then
+ mesg () {
+ echo "$@"
+ }
+ else
+ mesg () {
+ $LOGGER -t $(basename $0)"[$$]" "$@"
+ }
+ fi
+
+ debug_mesg () {
+ test "$udev_log" = "" -o "$udev_log" = "no" && return
+ mesg "$@"
+ }
+
+ if [ -f /etc/udev/udev.conf ]; then
+ . /etc/udev/udev.conf
+ fi
+
+ SYMLINKS=""
+ for i in $(/usr/bin/udevinfo -q symlink -p "$DEVPATH"); do
+ [ $? -gt 0 ] && break
+ SYMLINKS="$SYMLINKS ${udev_root%%/}/$i"
+ done
+ debug_mesg "Restoring console permissions for $DEVNAME $SYMLINKS"
+ /sbin/pam_console_setowner "$DEVNAME" $SYMLINKS
+fi
diff --git a/extras/run_directory/dev.d/net/hotplug.dev b/extras/run_directory/dev.d/net/hotplug.dev
new file mode 100644
index 0000000000..e195b0f034
--- /dev/null
+++ b/extras/run_directory/dev.d/net/hotplug.dev
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# Script to ensure that any network device that udev renames
+# still gets the hotplug script run with the proper name.
+#
+# Released under the GPL v2
+#
+# Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
+#
+
+# Do nothing if udev handles hotplug.d.
+if [ "$MANAGED_EVENT" == "1" ]; then
+ exit 0
+fi
+
+# ok, we have renamed this device, so let the network hotplug script
+# know about it to setup the device properly...
+if [ -f /etc/hotplug.d/default/default.hotplug ]; then
+ exec /etc/hotplug.d/default/default.hotplug net
+fi
+
diff --git a/extras/run_directory/dev.d/snd/controlC0/alsa.dev b/extras/run_directory/dev.d/snd/controlC0/alsa.dev
new file mode 100644
index 0000000000..642dde4f36
--- /dev/null
+++ b/extras/run_directory/dev.d/snd/controlC0/alsa.dev
@@ -0,0 +1,2 @@
+#!/bin/sh -e
+exec /usr/sbin/alsactl restore 0