diff options
author | brooks <brooks@FreeBSD.org> | 2008-06-05 17:26:47 +0000 |
---|---|---|
committer | brooks <brooks@FreeBSD.org> | 2008-06-05 17:26:47 +0000 |
commit | e9bd8b71f988d35b3cf464cd9c694a3e5afcc6d4 (patch) | |
tree | 4dafc4c9a20045e86f8117449014ef13d5512069 /etc | |
parent | 65c567c1062097f6efd5fc4278e9f294861b60ff (diff) | |
download | FreeBSD-src-e9bd8b71f988d35b3cf464cd9c694a3e5afcc6d4.zip FreeBSD-src-e9bd8b71f988d35b3cf464cd9c694a3e5afcc6d4.tar.gz |
Fix the wait for default route change I made a few weeks ago by creating
a new defaultroute script that just does the wait. The previous attempt
created a circular dependency through network_ipv6.
Pointy hat to: brooks
Diffstat (limited to 'etc')
-rwxr-xr-x | etc/rc.d/Makefile | 2 | ||||
-rw-r--r-- | etc/rc.d/NETWORKING | 2 | ||||
-rw-r--r-- | etc/rc.d/defaultroute | 48 | ||||
-rw-r--r-- | etc/rc.d/routing | 27 |
4 files changed, 51 insertions, 28 deletions
diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile index 7be483d..e887b5c 100755 --- a/etc/rc.d/Makefile +++ b/etc/rc.d/Makefile @@ -7,7 +7,7 @@ FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS \ apm apmd archdep atm1 atm2 atm3 auditd auto_linklocal \ bgfsck bluetooth bootparams bridge bsnmpd bthidd \ ccd cleanvar cleartmp cron \ - ddb devd devfs dhclient \ + ddb defaultroute devd devfs dhclient \ dmesg dumpon \ early.sh encswap \ fsck ftp-proxy ftpd \ diff --git a/etc/rc.d/NETWORKING b/etc/rc.d/NETWORKING index f290d3b..a67501b 100644 --- a/etc/rc.d/NETWORKING +++ b/etc/rc.d/NETWORKING @@ -5,7 +5,7 @@ # PROVIDE: NETWORKING NETWORK # REQUIRE: netif netoptions routing network_ipv6 ppp -# REQUIRE: routed mrouted route6d mroute6d resolv +# REQUIRE: defaultroute routed mrouted route6d mroute6d resolv # This is a dummy dependency, for services which require networking # to be operational before starting. diff --git a/etc/rc.d/defaultroute b/etc/rc.d/defaultroute new file mode 100644 index 0000000..876d682 --- /dev/null +++ b/etc/rc.d/defaultroute @@ -0,0 +1,48 @@ +#!/bin/sh +# +# Wait for the default route to be up +# +# $FreeBSD$ +# + +# PROVIDE: defaultroute +# REQUIRE: devd netif network_ipv6 +# KEYWORD: nojail + +. /etc/rc.subr +. /etc/network.subr + +name="defaultroute" +start_cmd="defaultroute_start" +stop_cmd=":" + +defaultroute_start() +{ + # Return without waiting if we don't have dhcp interfaces. + # Once we can test that the link is actually up, we should + # remove this test and always wait. + dhcp_interfaces=`list_net_interfaces dhcp` + [ -z "`list_net_interfaces dhcp`" ] && return + + # Wait for a default route + delay=${if_up_delay} + while [ ${delay} -gt 0 ]; do + defif=`get_default_if -inet` + if [ -n "${defif}" ]; then + if [ ${delay} -ne ${if_up_delay} ]; then + echo "($defif)" + fi + break + fi + if [ ${delay} -eq ${if_up_delay} ]; then + echo -n "Waiting ${delay}s for an interface to come up: " + else + echo -n . + fi + sleep 1 + delay=`expr $delay - 1` + done +} + +load_rc_config $name +run_rc_command "$1" diff --git a/etc/rc.d/routing b/etc/rc.d/routing index 33424fd..818df92 100644 --- a/etc/rc.d/routing +++ b/etc/rc.d/routing @@ -6,7 +6,7 @@ # # PROVIDE: routing -# REQUIRE: devd netif ppp +# REQUIRE: netif ppp # KEYWORD: nojail . /etc/rc.subr @@ -23,31 +23,6 @@ routing_start() { static_start options_start - - # Return without waiting if we don't have dhcp interfaces. - # Once we can test that the link is actually up, we should - # remove this test and always wait. - dhcp_interfaces=`list_net_interfaces dhcp` - [ -z "`list_net_interfaces dhcp`" ] && return - - # Wait for a default route - delay=${if_up_delay} - while [ ${delay} -gt 0 ]; do - defif=`get_default_if -inet` - if [ -n "${defif}" ]; then - if [ ${delay} -ne ${if_up_delay} ]; then - echo "($defif)" - fi - break - fi - if [ ${delay} -eq ${if_up_delay} ]; then - echo -n "Waiting ${delay}s for an interface to come up: " - else - echo -n . - fi - sleep 1 - delay=`expr $delay - 1` - done } routing_stop() |