178344Sobrien#!/bin/sh 278344Sobrien# 398184Sgordon# $FreeBSD$ 478344Sobrien# 578344Sobrien 678344Sobrien# PROVIDE: dhclient 7147088Sbrooks# KEYWORD: nojail nostart 878344Sobrien 978344Sobrien. /etc/rc.subr 10113675Smtm. /etc/network.subr 1178344Sobrien 12226345Sdesifn="$2" 13226345Sdes 1478344Sobrienname="dhclient" 15124618Smtmrcvar= 16226345Sdespidfile="/var/run/${name}.${ifn}.pid" 17226345Sdesstart_precmd="dhclient_prestart" 18226879Sreastop_precmd="dhclient_pre_check" 1978344Sobrien 20226879Srea# rc_force check can only be done at the run_rc_command 21226879Srea# time, so we're testing it in the pre* hooks. 22226879Sreadhclient_pre_check() 23226879Srea{ 24226879Srea if [ -z "${rc_force}" ] && ! dhcpif $ifn; then 25230007Srea local msg 26230007Srea msg="'$ifn' is not a DHCP-enabled interface" 27230007Srea if [ -z "${rc_quiet}" ]; then 28230388Srea echo "$msg" 29230007Srea else 30230007Srea debug "$msg" 31230388Srea fi 32230007Srea exit 1 33226879Srea fi 34226879Srea} 35226879Srea 36226345Sdesdhclient_prestart() 37113675Smtm{ 38226879Srea dhclient_pre_check 39226879Srea 40226345Sdes # Interface-specific flags (see rc.subr for $flags setting) 41226345Sdes specific=$(get_if_var $ifn dhclient_flags_IF) 42161410Sbrian if [ -z "$flags" -a -n "$specific" ]; then 43161410Sbrian rc_flags=$specific 44161410Sbrian fi 45161410Sbrian 46226345Sdes background_dhclient=$(get_if_var $ifn background_dhclient_IF $background_dhclient) 47167881Smtm if checkyesno background_dhclient; then 48147088Sbrooks rc_flags="${rc_flags} -b" 49118108Smbr fi 50118108Smbr 51226345Sdes rc_flags="${rc_flags} ${ifn}" 52113675Smtm} 53113675Smtm 54147088Sbrooksload_rc_config $name 55162972Sbrooksload_rc_config network 56117021Smtm 57226345Sdesif [ -z $ifn ] ; then 58226345Sdes # only complain if a command was specified but no interface 59226345Sdes if [ -n "$1" ] ; then 60226879Srea err 1 "$0: no interface specified" 61226345Sdes fi 62117021Smtmfi 63117021Smtm 6478344Sobrienrun_rc_command "$1" 65