From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?=
Subject: Re: [PATCH] network: don't die if gateway is down and root server
is local
Date: Fri, 15 Oct 2010 15:03:29 +0100
Message-ID: <4CB85F31.5010207@draigBrady.com>
References: <4CAEF060.8030701@draigBrady.com> <4CAF1D02.6060701@bfh.ch> <4CAF23BA.4010605@draigBrady.com> <4CAF27EF.80301@bfh.ch> <4CAF367D.7030707@draigBrady.com> <4CB84390.5060203@draigBrady.com> <4CB85A73.6010902@redhat.com>
Mime-Version: 1.0
Content-Transfer-Encoding: QUOTED-PRINTABLE
Return-path:
Date: Fri, 15 Oct 2010 12:58:31 +0100
Subject: [PATCH] network: don't die if gateway is down and root server =
is local
* modules.d/40network/netroot: Don't arping the gateway
if we don't need to
---
modules.d/40network/netroot | 28 ++++++++++++++++++++++------
1 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/modules.d/40network/netroot b/modules.d/40network/netroot
index 81a9ad3..948f68b 100755
--- a/modules.d/40network/netroot
+++ b/modules.d/40network/netroot
@@ -83,21 +83,37 @@ done
[ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
[ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopt=
s
-# Handle STP Timeout: arping default router or if not available the
-# root server. Note: This assumes that if no router is present the
+# Handle STP Timeout: arping the default router if root server is
+# unknown or not local, 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=3D${new_routers%%,*}
-[ -n "$gw" ] && dest=3D$gw
-if [ -z "$dest" ] ; then
+
+# Get router IP if set
+[ -n "$new_routers" ] && gw_ip=3D${new_routers%%,*}
+[ -n "$gw" ] && gw_ip=3D$gw
+# Get root server IP if set
+if [ -n "$netroot" ]; then
dummy=3D${netroot#*:}
dummy=3D${dummy%%:*}
case "$dummy" in
- [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) dest=3D$dummy;;
+ [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) netroot_ip=3D$dummy;;
esac
fi
+# Default arping dest to router
+dest=3D"$gw_ip"
+# Change to arping root server if appropriate
+if [ -n "$netroot_ip" ]; then
+ if [ -z "$dest" ]; then
+ # no gateway so check root server
+ dest=3D"$netroot_ip"
+ elif ! ip route get "$netroot_ip" | grep -qF ' via ' ; then
+ # local root server, so don't arping gateway
+ dest=3D"$netroot_ip"
+ fi
+fi
if [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
die "Resolving $dest via ARP on $netif failed"
fi
--=20
1.6.2.5