From 15660dbbfcbf8eace589a3284130036b481c1cdf Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 9 Apr 2011 13:54:01 -0500 Subject: [PATCH] add fallback_routes support to network scripts Add support for optional fallback_routes_* variables in the network scripts. This is similar to the fallback_route_* support in baselayout-1. However, if you do not have fallback_routes set for an interface but you do have routes set, that setting will be used, so you do not need this variable unless you want the fallback routes to be different from the primary routes. X-Gentoo-Bug: 250978 X-Gentoo-Bug-URL: http://bugs.gentoo.org/show_bug.cgi?id=250978 --- doc/net.example.BSD.in | 4 +++- doc/net.example.Linux.in | 4 +++- init.d/net.lo.in | 12 +++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/doc/net.example.BSD.in b/doc/net.example.BSD.in index 287c644a..2329fa22 100644 --- a/doc/net.example.BSD.in +++ b/doc/net.example.BSD.in @@ -67,10 +67,12 @@ # If a specified module fails (like dhcp - see below), you can specify a # fallback like so #fallback_eth0="192.168.0.2 netmask 255.255.255.0" -#fallback_route_eth0="default via 192.168.0.1" +#fallback_routes_eth0="default via 192.168.0.1" # NOTE: fallback entry must match the entry location in config_eth0 # As such you can only have one fallback route. +# Also, if you do not set a fallback_routes entry for an interface, the +# routes entry will be used if that is set. # Some users may need to alter the MTU - here's how #mtu_eth0="1500" diff --git a/doc/net.example.Linux.in b/doc/net.example.Linux.in index 424c6775..709e201b 100644 --- a/doc/net.example.Linux.in +++ b/doc/net.example.Linux.in @@ -94,10 +94,12 @@ # If a specified module fails (like dhcp - see below), you can specify a # fallback like so #fallback_eth0="192.168.0.2/24" -#fallback_route_eth0="default via 192.168.0.1" +#fallback_routes_eth0="default via 192.168.0.1" # NOTE: fallback entry must match the entry location in config_eth0 # As such you can only have one fallback route. +# Also, if you do not set a fallback_routes entry for an interface, the +# routes entry will be used if that is set. # Some users may need to alter the MTU - here's how #mtu_eth0="1500" diff --git a/init.d/net.lo.in b/init.d/net.lo.in index 822e3f58..8f4ea9ba 100644 --- a/init.d/net.lo.in +++ b/init.d/net.lo.in @@ -476,7 +476,7 @@ interface_down() start() { - local IFACE=${RC_SVCNAME#*.} oneworked=false module= + local IFACE=${RC_SVCNAME#*.} oneworked=false fallback=false module= local IFVAR=$(shell_var "${IFACE}") cmd= our_metric= local metric=0 @@ -563,6 +563,7 @@ start() else eval config=\$fallback_${config_index} if [ -n "${config}" ]; then + fallback=true eoutdent ewarn "Trying fallback configuration ${config}" eindent @@ -585,8 +586,13 @@ start() return 1 fi - local hidefirstroute=false first=true - local routes="$(_get_array "routes_${IFVAR}")" + local hidefirstroute=false first=true routes= + if ${fallback}; then + routes="$(_get_array "fallback_routes_${IFVAR}")" + fi + if [ -z "${routes}" ]; then + routes="$(_get_array "routes_${IFVAR}")" + fi if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ]; then if [ "${config_0}" != "null" ]; then routes="127.0.0.0/8 via 127.0.0.1