defaultroute revision 197527
1#!/bin/sh 2# 3# Wait for the default route to be up 4# 5# $FreeBSD: head/etc/rc.d/defaultroute 197527 2009-09-26 19:00:20Z 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 # 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=${defaultroute_delay} 39 while [ ${delay} -gt 0 ]; do 40 defif=`get_default_if -inet` 41 if [ -n "${defif}" ]; then 42 if [ ${delay} -ne ${defaultroute_delay} ]; then 43 echo -n "($defif)" 44 nl=1 45 fi 46 break 47 fi 48 if [ ${delay} -eq ${defaultroute_delay} ]; then 49 echo -n "Waiting ${delay}s for the default route interface: " 50 else 51 echo -n . 52 fi 53 nl=1 54 sleep 1 55 delay=$(($delay - 1)) 56 done 57 58 [ -n "$nl" ] && echo 59} 60 61load_rc_config $name 62run_rc_command "$1" 63