Blame 0035-add-initqueue-env-and-online-hook.patch

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