|
Harald Hoyer |
ee76a0 |
From 6e3cc00f4882edbabea75945308f8ae7c353bf82 Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
ee76a0 |
From: Will Woods <wwoods@redhat.com>
|
|
Harald Hoyer |
ee76a0 |
Date: Tue, 6 Mar 2012 18:25:25 -0500
|
|
Harald Hoyer |
ee76a0 |
Subject: [PATCH] add initqueue --env and "online" hook
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
The "online" hook runs whenever a network interface comes online (that
|
|
Harald Hoyer |
ee76a0 |
is, once it's actually up and configured).
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
The initqueue --env argument is used to set "$netif" to the name of the
|
|
Harald Hoyer |
ee76a0 |
newly-online network interface.
|
|
Harald Hoyer |
ee76a0 |
---
|
|
Harald Hoyer |
ee76a0 |
dracut-functions.sh | 2 +-
|
|
Harald Hoyer |
ee76a0 |
modules.d/40network/net-genrules.sh | 24 +++++++++---------------
|
|
Harald Hoyer |
ee76a0 |
modules.d/99base/initqueue.sh | 15 +++++++--------
|
|
Harald Hoyer |
ee76a0 |
3 files changed, 17 insertions(+), 24 deletions(-)
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
diff --git a/dracut-functions.sh b/dracut-functions.sh
|
|
Harald Hoyer |
ee76a0 |
index 05c1d3a..f4ccf53 100755
|
|
Harald Hoyer |
ee76a0 |
--- a/dracut-functions.sh
|
|
Harald Hoyer |
ee76a0 |
+++ b/dracut-functions.sh
|
|
Harald Hoyer |
ee76a0 |
@@ -35,7 +35,7 @@ fi
|
|
Harald Hoyer |
ee76a0 |
# export standard hookdirs
|
|
Harald Hoyer |
ee76a0 |
[[ $hookdirs ]] || {
|
|
Harald Hoyer |
ee76a0 |
hookdirs="cmdline pre-udev pre-trigger netroot "
|
|
Harald Hoyer |
ee76a0 |
- hookdirs+="initqueue initqueue/settled initqueue/finished initqueue/timeout "
|
|
Harald Hoyer |
ee76a0 |
+ hookdirs+="initqueue initqueue/settled initqueue/online initqueue/finished initqueue/timeout "
|
|
Harald Hoyer |
ee76a0 |
hookdirs+="pre-mount pre-pivot mount "
|
|
Harald Hoyer |
ee76a0 |
hookdirs+="emergency shutdown-emergency shutdown cleanup "
|
|
Harald Hoyer |
ee76a0 |
export hookdirs
|
|
Harald Hoyer |
ee76a0 |
diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
|
|
Harald Hoyer |
ee76a0 |
index 6c46d9a..84fd3ac 100755
|
|
Harald Hoyer |
ee76a0 |
--- a/modules.d/40network/net-genrules.sh
|
|
Harald Hoyer |
ee76a0 |
+++ b/modules.d/40network/net-genrules.sh
|
|
Harald Hoyer |
ee76a0 |
@@ -31,33 +31,27 @@ fix_bootif() {
|
|
Harald Hoyer |
ee76a0 |
IFACES=${bondslaves%% *}
|
|
Harald Hoyer |
ee76a0 |
fi
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
+ ifup='/sbin/ifup $env{INTERFACE}'
|
|
Harald Hoyer |
ee76a0 |
+ [ -z "$netroot" ] && ifup="$ifup -m"
|
|
Harald Hoyer |
ee76a0 |
+
|
|
Harald Hoyer |
ee76a0 |
# BOOTIF says everything, use only that one
|
|
Harald Hoyer |
ee76a0 |
BOOTIF=$(getarg 'BOOTIF=')
|
|
Harald Hoyer |
ee76a0 |
if [ -n "$BOOTIF" ] ; then
|
|
Harald Hoyer |
ee76a0 |
BOOTIF=$(fix_bootif "$BOOTIF")
|
|
Harald Hoyer |
ee76a0 |
- if [ -n "$netroot" ]; then
|
|
Harald Hoyer |
ee76a0 |
- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
|
|
Harald Hoyer |
ee76a0 |
- else
|
|
Harald Hoyer |
ee76a0 |
- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n' "$BOOTIF"
|
|
Harald Hoyer |
ee76a0 |
- fi
|
|
Harald Hoyer |
ee76a0 |
+ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="%s"\n' "$BOOTIF" "/sbin/initqueue --onetime $ifup"
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
# If we have to handle multiple interfaces, handle only them.
|
|
Harald Hoyer |
ee76a0 |
elif [ -n "$IFACES" ] ; then
|
|
Harald Hoyer |
ee76a0 |
for iface in $IFACES ; do
|
|
Harald Hoyer |
ee76a0 |
- if [ -n "$netroot" ]; then
|
|
Harald Hoyer |
ee76a0 |
- printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n' "$iface"
|
|
Harald Hoyer |
ee76a0 |
- else
|
|
Harald Hoyer |
ee76a0 |
- printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n' "$iface"
|
|
Harald Hoyer |
ee76a0 |
- fi
|
|
Harald Hoyer |
ee76a0 |
+ printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="%s"\n' "$iface" "/sbin/initqueue --onetime $ifup"
|
|
Harald Hoyer |
ee76a0 |
done
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
# Default: We don't know the interface to use, handle all
|
|
Harald Hoyer |
ee76a0 |
else
|
|
Harald Hoyer |
ee76a0 |
- if [ -n "$netroot" ]; then
|
|
Harald Hoyer |
ee76a0 |
- printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n'
|
|
Harald Hoyer |
ee76a0 |
- else
|
|
Harald Hoyer |
ee76a0 |
- printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n'
|
|
Harald Hoyer |
ee76a0 |
- fi
|
|
Harald Hoyer |
ee76a0 |
+ printf 'SUBSYSTEM=="net", RUN+="%s"\n' "/sbin/initqueue --onetime $ifup"
|
|
Harald Hoyer |
ee76a0 |
fi
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
+ # Run the "online" hook
|
|
Harald Hoyer |
ee76a0 |
+ printf 'SUBSYSTEM=="net", ACTION=="online", RUN+="/sbin/initqueue --onetime --env netif=$env{INTERFACE} source_hook initqueue/online"\n'
|
|
Harald Hoyer |
ee76a0 |
+
|
|
Harald Hoyer |
ee76a0 |
} > /etc/udev/rules.d/60-net.rules
|
|
Harald Hoyer |
ee76a0 |
diff --git a/modules.d/99base/initqueue.sh b/modules.d/99base/initqueue.sh
|
|
Harald Hoyer |
ee76a0 |
index 2c06a0b..3387e88 100755
|
|
Harald Hoyer |
ee76a0 |
--- a/modules.d/99base/initqueue.sh
|
|
Harald Hoyer |
ee76a0 |
+++ b/modules.d/99base/initqueue.sh
|
|
Harald Hoyer |
ee76a0 |
@@ -25,6 +25,8 @@ while [ $# -gt 0 ]; do
|
|
Harald Hoyer |
ee76a0 |
unique="yes";;
|
|
Harald Hoyer |
ee76a0 |
--name)
|
|
Harald Hoyer |
ee76a0 |
name="$2";shift;;
|
|
Harald Hoyer |
ee76a0 |
+ --env)
|
|
Harald Hoyer |
ee76a0 |
+ env="$2"; shift;;
|
|
Harald Hoyer |
ee76a0 |
*)
|
|
Harald Hoyer |
ee76a0 |
break;;
|
|
Harald Hoyer |
ee76a0 |
esac
|
|
Harald Hoyer |
ee76a0 |
@@ -43,14 +45,11 @@ shift
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
[ -x "$exe" ] || exe=$(command -v $exe)
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
-if [ -n "$onetime" ]; then
|
|
Harald Hoyer |
ee76a0 |
- {
|
|
Harald Hoyer |
ee76a0 |
- echo '[ -e "$job" ] && rm "$job"'
|
|
Harald Hoyer |
ee76a0 |
- echo "$exe $@"
|
|
Harald Hoyer |
ee76a0 |
- } > "/tmp/$$-${job}.sh"
|
|
Harald Hoyer |
ee76a0 |
-else
|
|
Harald Hoyer |
ee76a0 |
- echo "$exe $@" > "/tmp/$$-${job}.sh"
|
|
Harald Hoyer |
ee76a0 |
-fi
|
|
Harald Hoyer |
ee76a0 |
+{
|
|
Harald Hoyer |
ee76a0 |
+ [ -n "$onetime" ] && echo '[ -e "$job" ] && rm "$job"'
|
|
Harald Hoyer |
ee76a0 |
+ [ -n "$env" ] && echo "$env"
|
|
Harald Hoyer |
ee76a0 |
+ echo "$exe $@"
|
|
Harald Hoyer |
ee76a0 |
+} > "/tmp/$$-${job}.sh"
|
|
Harald Hoyer |
ee76a0 |
|
|
Harald Hoyer |
ee76a0 |
mv -f "/tmp/$$-${job}.sh" "$hookdir/initqueue${qname}/${job}.sh"
|
|
Harald Hoyer |
ee76a0 |
[ -z "$qname" ] && >> $hookdir/initqueue/work
|