defaultroute revision 197697
1#!/bin/sh 2# 3# Wait for the default route to be up 4# 5# $FreeBSD: head/etc/rc.d/defaultroute 197697 2009-10-02 02:24:25Z hrs $ 6# 7 8# PROVIDE: defaultroute 9# REQUIRE: devd faith netif stf 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 nl 22 23 afexists inet || return 0 24 25 # Return without waiting if we don't have dhcp interfaces or 26 # if none of the dhcp interfaces is plugged in. 27 dhcp_interfaces=`list_net_interfaces dhcp` 28 [ -z "${dhcp_interfaces}" ] && return 29 carrier=false 30 for _if in ${dhcp_interfaces}; do 31 output=`/sbin/ifconfig ${_if}` 32 nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'` 33 [ -z "${nocarrier}" ] && carrier=true 34 done 35 if ! ${carrier}; then 36 return 37 fi 38 39 # Wait for a default route 40 delay=${defaultroute_delay} 41 while [ ${delay} -gt 0 ]; do 42 defif=`get_default_if -inet` 43 if [ -n "${defif}" ]; then 44 if [ ${delay} -ne ${defaultroute_delay} ]; then 45 echo -n "($defif)" 46 nl=1 47 fi 48 break 49 fi 50 if [ ${delay} -eq ${defaultroute_delay} ]; then 51 echo -n "Waiting ${delay}s for the default route interface: " 52 else 53 echo -n . 54 fi 55 nl=1 56 sleep 1 57 delay=$(($delay - 1)) 58 done 59 60 [ -n "$nl" ] && echo 61} 62 63load_rc_config $name 64run_rc_command "$1" 65