defaultroute revision 188009
1#!/bin/sh 2# 3# Wait for the default route to be up 4# 5# $FreeBSD: head/etc/rc.d/defaultroute 188009 2009-02-02 15:33:22Z mtm $ 6# 7 8# PROVIDE: defaultroute 9# REQUIRE: devd netif network_ipv6 10# KEYWORD: nojail 11 12. /etc/rc.subr 13. /etc/network.subr 14 15name="defaultroute" 16start_cmd="defaultroute_start" 17stop_cmd=":" 18 19defaultroute_start() 20{ 21 local output carrier nocarrier 22 23 # Return without waiting if we don't have dhcp interfaces or 24 # if none of the dhcp interfaces is plugged in. 25 dhcp_interfaces=`list_net_interfaces dhcp` 26 [ -z "${dhcp_interfaces}" ] && return 27 carrier=false 28 for _if in ${dhcp_interfaces}; do 29 output=`/sbin/ifconfig ${_if}` 30 nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'` 31 [ -z "${nocarrier}" ] && carrier=true 32 done 33 if ! ${carrier}; then 34 return 35 fi 36 37 # Wait for a default route 38 delay=${if_up_delay} 39 while [ ${delay} -gt 0 ]; do 40 defif=`get_default_if -inet` 41 if [ -n "${defif}" ]; then 42 if [ ${delay} -ne ${if_up_delay} ]; then 43 echo -n "($defif)" 44 fi 45 break 46 fi 47 if [ ${delay} -eq ${if_up_delay} ]; then 48 echo -n "Waiting ${delay}s for an interface to come up: " 49 else 50 echo -n . 51 fi 52 sleep 1 53 delay=`expr $delay - 1` 54 done 55 56 echo 57} 58 59load_rc_config $name 60run_rc_command "$1" 61