[PATCH 4/8] Add simple STP timeout handler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch adds STP timeout error handling with arping. It's rather
simple since it only cares about the primary interface and blindly
assumes that if no gateway is available the root server is on the
same subnet.
---
 modules.d/40network/check   |    2 +-
 modules.d/40network/install |    2 +-
 modules.d/40network/netroot |   23 +++++++++++++++++++++++
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/modules.d/40network/check b/modules.d/40network/check
index cf06c74..e5cd87e 100755
--- a/modules.d/40network/check
+++ b/modules.d/40network/check
@@ -2,7 +2,7 @@
 
 . $dracutfunctions
 
-for program in ip; do 
+for program in ip arping; do 
   which $program >/dev/null 2>&1
   if [ $? -ne 0 ]; then
     dwarning "Could not find program \"$program\" required by network." 
diff --git a/modules.d/40network/install b/modules.d/40network/install
index a711cb5..c440cc3 100755
--- a/modules.d/40network/install
+++ b/modules.d/40network/install
@@ -1,5 +1,5 @@
 #!/bin/bash
-dracut_install ip dhclient brctl
+dracut_install ip dhclient brctl arping
 inst "$moddir/ifup" "/sbin/ifup"
 inst "$moddir/netroot" "/sbin/netroot"
 inst "$moddir/dhclient-script" "/sbin/dhclient-script"
diff --git a/modules.d/40network/netroot b/modules.d/40network/netroot
index 3b343af..3deb031 100755
--- a/modules.d/40network/netroot
+++ b/modules.d/40network/netroot
@@ -92,6 +92,29 @@ done
 [ -e /tmp/net.$netif.hostname ]    && . /tmp/net.$netif.hostname
 [ -e /tmp/resolv.conf ] && cp -f /tmp/resolv.conf /etc/resolv.conf
 
+# Load interface options
+[ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
+[ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
+
+# Handle STP Timeout: arping default router or if not available the
+# root server. Note: This assumes that if no router is present the
+# root server is on the same subnet.
+#
+# TODO There's some netroot variants that don't (yet) have their 
+# server-ip netroot
+[ -n "$new_routers" ] && dest=${new_routers%%,*}
+[ -n "$gw" ] && dest=$gw
+if [ -z "$dest" ] ; then
+    dummy=${netroot#*:}
+    dummy=${dummy%%:*}
+    case "$dummy" in
+       [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) dest=$dummy;;
+    esac
+fi
+if [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
+    die "Resolving $dest via ARP on $netif failed"
+fi
+
 # Source netroot hooks before we start the handler
 source_all netroot
 
-- 
1.6.0.4

--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux