1*0696600cSBjoern A. Zeeb#!/bin/sh 2*0696600cSBjoern A. Zeeb# 3*0696600cSBjoern A. Zeeb# $FreeBSD$ 4*0696600cSBjoern A. Zeeb# 5*0696600cSBjoern A. Zeeb 6*0696600cSBjoern A. Zeeb# PROVIDE: dhclient 7*0696600cSBjoern A. Zeeb# KEYWORD: nojailvnet nostart 8*0696600cSBjoern A. Zeeb 9*0696600cSBjoern A. Zeeb. /etc/rc.subr 10*0696600cSBjoern A. Zeeb. /etc/network.subr 11*0696600cSBjoern A. Zeeb 12*0696600cSBjoern A. Zeebifn="$2" 13*0696600cSBjoern A. Zeeb 14*0696600cSBjoern A. Zeebname="dhclient" 15*0696600cSBjoern A. Zeebdesc="Dynamic Host Configuration Protocol (DHCP) client" 16*0696600cSBjoern A. Zeebrcvar= 17*0696600cSBjoern A. Zeebpidfile="/var/run/dhclient/${name}.${ifn}.pid" 18*0696600cSBjoern A. Zeebstart_precmd="dhclient_prestart" 19*0696600cSBjoern A. Zeebstop_precmd="dhclient_pre_check" 20*0696600cSBjoern A. Zeeb 21*0696600cSBjoern A. Zeeb# rc_force check can only be done at the run_rc_command 22*0696600cSBjoern A. Zeeb# time, so we're testing it in the pre* hooks. 23*0696600cSBjoern A. Zeebdhclient_pre_check() 24*0696600cSBjoern A. Zeeb{ 25*0696600cSBjoern A. Zeeb if [ -z "${rc_force}" ] && ! dhcpif $ifn; then 26*0696600cSBjoern A. Zeeb local msg 27*0696600cSBjoern A. Zeeb msg="'$ifn' is not a DHCP-enabled interface" 28*0696600cSBjoern A. Zeeb if [ -z "${rc_quiet}" ]; then 29*0696600cSBjoern A. Zeeb echo "$msg" 30*0696600cSBjoern A. Zeeb else 31*0696600cSBjoern A. Zeeb debug "$msg" 32*0696600cSBjoern A. Zeeb fi 33*0696600cSBjoern A. Zeeb exit 1 34*0696600cSBjoern A. Zeeb fi 35*0696600cSBjoern A. Zeeb} 36*0696600cSBjoern A. Zeeb 37*0696600cSBjoern A. Zeebdhclient_prestart() 38*0696600cSBjoern A. Zeeb{ 39*0696600cSBjoern A. Zeeb dhclient_pre_check 40*0696600cSBjoern A. Zeeb 41*0696600cSBjoern A. Zeeb # Interface-specific flags (see rc.subr for $flags setting) 42*0696600cSBjoern A. Zeeb specific=$(get_if_var $ifn dhclient_flags_IF) 43*0696600cSBjoern A. Zeeb if [ -z "$flags" -a -n "$specific" ]; then 44*0696600cSBjoern A. Zeeb rc_flags=$specific 45*0696600cSBjoern A. Zeeb fi 46*0696600cSBjoern A. Zeeb 47*0696600cSBjoern A. Zeeb background_dhclient=$(get_if_var $ifn background_dhclient_IF $background_dhclient) 48*0696600cSBjoern A. Zeeb if checkyesno background_dhclient; then 49*0696600cSBjoern A. Zeeb rc_flags="${rc_flags} -b" 50*0696600cSBjoern A. Zeeb fi 51*0696600cSBjoern A. Zeeb 52*0696600cSBjoern A. Zeeb rc_flags="${rc_flags} ${ifn}" 53*0696600cSBjoern A. Zeeb} 54*0696600cSBjoern A. Zeeb 55*0696600cSBjoern A. Zeebload_rc_config $name 56*0696600cSBjoern A. Zeebload_rc_config network 57*0696600cSBjoern A. Zeeb 58*0696600cSBjoern A. Zeebif [ -z $ifn ] ; then 59*0696600cSBjoern A. Zeeb # only complain if a command was specified but no interface 60*0696600cSBjoern A. Zeeb if [ -n "$1" ] ; then 61*0696600cSBjoern A. Zeeb err 1 "$0: no interface specified" 62*0696600cSBjoern A. Zeeb fi 63*0696600cSBjoern A. Zeebfi 64*0696600cSBjoern A. Zeeb 65*0696600cSBjoern A. Zeebrun_rc_command "$1" 66