1#!/bin/sh 2# 3# $NetBSD: dhclient,v 1.8 2002/03/22 04:33:58 thorpej Exp $ 4# $FreeBSD: src/etc/rc.d/dhclient,v 1.6 2003/06/29 05:34:41 mtm Exp $ 5# $DragonFly: src/etc/rc.d/dhclient,v 1.7 2005/11/19 21:47:32 swildner Exp $ 6# 7 8# PROVIDE: dhclient 9# REQUIRE: netif mountcritlocal 10# BEFORE: NETWORKING 11# 12# Note that there no syslog logging of dhclient messages at boot because 13# dhclient needs to start before services that syslog depends upon do. 14# 15 16. /etc/rc.subr 17. /etc/network.subr 18 19name="dhclient" 20pidfile="/var/run/${name}.pid" 21 rcvar= 22 start_precmd="dhclient_prestart" 23 start_postcmd="dhclient_poststart" 24 stop_cmd="dhclient_stop" 25 stop_precmd="dhclient_prestop" 26 stop_postcmd="dhclient_poststop" 27 28 29dhclient_common() 30{ 31 dhcp_list="`list_net_interfaces dhcp`" 32 if [ -z "$dhcp_list" ]; then 33 return $RC_IRRELEVANT 34 fi 35 36 # Determine the scope of the command 37 # 38 _cooked_list="$dhcp_list" 39 if [ -n "$_cmdifn" ]; then 40 eval _cooked_list=\"`expr "$dhcp_list" : ".*\($_cmdifn\).*"`\" 41 if [ -z "$_cooked_list" ]; then 42 err "No such network interface: $_cmdifn" 43 return 1 44 fi 45 fi 46} 47 48dhclient_prestart() 49{ 50 dhclient_common || return $? 51 52 for ifn in ${_cooked_list}; do 53 ifscript_up ${ifn} 54 done 55 56 rc_flags="${rc_flags} ${_cooked_list}" 57 return 0 58} 59 60dhclient_poststart() 61{ 62 for ifn in ${_cooked_list}; do 63 ifalias_up ${ifn} 64 ipx_up ${ifn} 65 ifconfig ${ifn} 66 done 67} 68 69dhclient_stop() 70{ 71 echo -n "Releasing DHCP leases:" 72 for ifn in $_cooked_list ; do 73 ${command} -r $ifn 74 if [ $? -eq 0 ]; then 75 echo -n " $ifn" 76 else 77 _fail="$_fail $ifn" 78 fi 79 done 80 echo '.' 81 debug "The following leases failed to release: $_fail" 82} 83 84dhclient_prestop() 85{ 86 dhclient_common || return $? 87 88 for ifn in ${_cooked_list}; do 89 ipx_down ${ifn} 90 ifalias_down ${ifn} 91 done 92} 93 94dhclient_poststop() 95{ 96 for ifn in ${_cooked_list}; do 97 ifscript_down ${ifn} 98 done 99} 100 101if [ -n "$2" ]; then 102 _cmdifn="$2" 103fi 104 105load_rc_config $name 106 107run_rc_command "$1" 108