#!/bin/sh # # Wait for the default route to be up # # $FreeBSD: head/etc/rc.d/defaultroute 188009 2009-02-02 15:33:22Z mtm $ # # 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() { local output carrier nocarrier # Return without waiting if we don't have dhcp interfaces or # if none of the dhcp interfaces is plugged in. dhcp_interfaces=`list_net_interfaces dhcp` [ -z "${dhcp_interfaces}" ] && return carrier=false for _if in ${dhcp_interfaces}; do output=`/sbin/ifconfig ${_if}` nocarrier=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'` [ -z "${nocarrier}" ] && carrier=true done if ! ${carrier}; then return fi # 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 -n "($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 echo } load_rc_config $name run_rc_command "$1"