[PATCH] network: don't die if gateway is down and root server is local

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

 



On 08/10/10 16:19, PÃdraig Brady wrote:
> On 08/10/10 15:17, Seewer Philippe wrote:
>> On 10/08/2010 03:59 PM, PÃdraig Brady wrote:
> 
>>> Is it right to die if we can't contact the router?
>> Usually yes. Either because the rootserver is behind the router or if
>> you supplied routing information it's safe to assume that later you want
>> it to work anyway.
> 
> Well in my case the router is just needed for browsing the net.
> All other services are provided locally.
> 
>> But yes, usually. I would have preferred to somehow a subnet check on
>> the rootserver to decide what or if to check. But alas, not all netroot
>> variants know the ip of their rootserver at that point.
> 
> Right, but no need to penalize the common case.
> I.E. we can bypass all this if the rootserver is known,
> and on the same subnet.

This seems to work.

cheers,
PÃdraig.

>From a1a1fac1a1cfc8bd22417923823f3d64c29dd44f Mon Sep 17 00:00:00 2001
From: =?utf-8?q?P=C3=A1draig=20Brady?= <P@xxxxxxxxxxxxxx>
Date: Fri, 15 Oct 2010 12:58:31 +0100
Subject: [PATCH] network: make gateway optional with a local root server

* modules.d/40network/netroot: Don't arping the gateway
if we don't need to
---
 modules.d/40network/netroot |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/modules.d/40network/netroot b/modules.d/40network/netroot
index 81a9ad3..12717b1 100755
--- a/modules.d/40network/netroot
+++ b/modules.d/40network/netroot
@@ -83,22 +83,33 @@ done
 [ -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
+# 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=${new_routers%%,*}
-[ -n "$gw" ] && dest=$gw
-if [ -z "$dest" ] ; then
+[ "$new_routers" ] && gw_ip=${new_routers%%,*}
+[ "$gw" ] && gw_ip=$gw
+if [ "$netroot" ]; then
     dummy=${netroot#*:}
     dummy=${dummy%%:*}
     case "$dummy" in
-        [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) dest=$dummy;;
+        [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) netroot_ip=$dummy;;
     esac
 fi
-if [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
+dest="$gw_ip"
+if [ "$netroot_ip" ]; then
+    if [ -z "$dest" ]; then
+         # no gateway so check root server
+        dest="$netroot_ip"
+    elif ! ip route get "$netroot_ip" | grep -qF ' via '; then
+        # local root server, so don't arping gateway
+        dest="$netroot_ip"
+    fi
+fi
+if [ "$dest" ] && ! arping -q -f -w 60 -I $netif $dest; then
     die "Resolving $dest via ARP on $netif failed"
 fi

-- 
1.6.2.5
--
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