10696600cSBjoern A. Zeeb#!/bin/sh 20696600cSBjoern A. Zeeb# 30696600cSBjoern A. Zeeb# Wait for the default route to be up if DHCP is in use 40696600cSBjoern A. Zeeb# 50696600cSBjoern A. Zeeb# 60696600cSBjoern A. Zeeb 70696600cSBjoern A. Zeeb# PROVIDE: defaultroute 80696600cSBjoern A. Zeeb# REQUIRE: devd netif stf 90696600cSBjoern A. Zeeb# KEYWORD: nojailvnet 100696600cSBjoern A. Zeeb 110696600cSBjoern A. Zeeb. /etc/rc.subr 120696600cSBjoern A. Zeeb. /etc/network.subr 130696600cSBjoern A. Zeeb 140696600cSBjoern A. Zeebname="defaultroute" 150696600cSBjoern A. Zeebdesc="Setup default router" 160696600cSBjoern A. Zeebstart_cmd="defaultroute_start" 170696600cSBjoern A. Zeebstop_cmd=":" 180696600cSBjoern A. Zeeb 190696600cSBjoern A. Zeeb# Does any interface have a carrier? 200696600cSBjoern A. Zeebdefaultroute_carrier() 210696600cSBjoern A. Zeeb{ 220696600cSBjoern A. Zeeb local carrier nocarrier 230696600cSBjoern A. Zeeb 240696600cSBjoern A. Zeeb carrier=1 250696600cSBjoern A. Zeeb for _if in ${dhcp_interfaces}; do 260696600cSBjoern A. Zeeb output=`/sbin/ifconfig ${_if}` 270696600cSBjoern A. Zeeb nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'` 280696600cSBjoern A. Zeeb [ -z "${nocarrier}" ] && carrier=0 290696600cSBjoern A. Zeeb done 300696600cSBjoern A. Zeeb return ${carrier} 310696600cSBjoern A. Zeeb} 320696600cSBjoern A. Zeeb 330696600cSBjoern A. Zeebdefaultroute_start() 340696600cSBjoern A. Zeeb{ 350696600cSBjoern A. Zeeb local nl waited 360696600cSBjoern A. Zeeb 370696600cSBjoern A. Zeeb afexists inet || return 0 380696600cSBjoern A. Zeeb 390696600cSBjoern A. Zeeb # Return without waiting if we don't have dhcp interfaces or 400696600cSBjoern A. Zeeb # if none of the dhcp interfaces is plugged in. 410696600cSBjoern A. Zeeb dhcp_interfaces=`list_net_interfaces dhcp` 420696600cSBjoern A. Zeeb [ -z "${dhcp_interfaces}" ] && return 430696600cSBjoern A. Zeeb 440696600cSBjoern A. Zeeb # Wait for a default route 450696600cSBjoern A. Zeeb waited=0 460696600cSBjoern A. Zeeb while [ ${waited} -lt ${defaultroute_delay} ]; do 470696600cSBjoern A. Zeeb defif=`get_default_if -inet` 480696600cSBjoern A. Zeeb if [ -n "${defif}" ]; then 490696600cSBjoern A. Zeeb if [ ${waited} -ne 0 ]; then 500696600cSBjoern A. Zeeb echo -n "($defif)" 510696600cSBjoern A. Zeeb nl=1 520696600cSBjoern A. Zeeb fi 530696600cSBjoern A. Zeeb break 540696600cSBjoern A. Zeeb fi 550696600cSBjoern A. Zeeb if [ ${waited} -eq 0 ]; then 560696600cSBjoern A. Zeeb echo -n "Waiting ${defaultroute_delay}s for the default route interface: " 570696600cSBjoern A. Zeeb else 580696600cSBjoern A. Zeeb echo -n . 590696600cSBjoern A. Zeeb fi 600696600cSBjoern A. Zeeb if [ ${waited} -eq ${defaultroute_carrier_delay} ] && ! defaultroute_carrier; then 610696600cSBjoern A. Zeeb echo -n "(no carrier)" 620696600cSBjoern A. Zeeb break 630696600cSBjoern A. Zeeb fi 640696600cSBjoern A. Zeeb nl=1 650696600cSBjoern A. Zeeb sleep 1 660696600cSBjoern A. Zeeb waited=$(($waited + 1)) 670696600cSBjoern A. Zeeb done 680696600cSBjoern A. Zeeb 690696600cSBjoern A. Zeeb [ -n "$nl" ] && echo 700696600cSBjoern A. Zeeb} 710696600cSBjoern A. Zeeb 720696600cSBjoern A. Zeebload_rc_config $name 73*f99f0ee1SAlexander Leidinger 74*f99f0ee1SAlexander Leidinger# doesn't make sense to run in a svcj: config setting 75*f99f0ee1SAlexander Leidingerdefaultroute_svcj="NO" 76*f99f0ee1SAlexander Leidinger 770696600cSBjoern A. Zeebrun_rc_command "$1" 78