dhclient revision 118108
1#!/bin/sh 2# 3# $NetBSD: dhclient,v 1.8 2002/03/22 04:33:58 thorpej Exp $ 4# $FreeBSD: head/etc/rc.d/dhclient 118108 2003-07-28 08:15:52Z mbr $ 5# 6 7# PROVIDE: dhclient 8# REQUIRE: network netif mountcritlocal 9# BEFORE: NETWORKING 10# KEYWORD: FreeBSD NetBSD 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" 21case "${OSTYPE}" in 22FreeBSD) 23 rcvar= 24 start_precmd="dhclient_prestart" 25 start_postcmd="dhclient_poststart" 26 stop_precmd="dhclient_prestop" 27 stop_postcmd="dhclient_poststop" 28 ;; 29NetBSD) 30 rcvar=$name 31 command="/sbin/${name}" 32 ;; 33esac 34 35dhclient_common() 36{ 37 dhcp_list="`list_net_interfaces dhcp`" 38 if [ -z "$dhcp_list" ]; then 39 return 1 40 fi 41 42 # Determine the scope of the command 43 # 44 _cooked_list="$dhcp_list" 45 if [ -n "$_cmdifn" ]; then 46 eval _cooked_list=\"`expr "$dhcp_list" : ".*\($_cmdifn\).*"`\" 47 if [ -z "$_cooked_list" ]; then 48 err "No such network interface: $_cmdifn" 49 return 1 50 fi 51 fi 52} 53 54dhclient_prestart() 55{ 56 dhclient_common || return 1 57 58 for ifn in ${_cooked_list}; do 59 ifscript_up ${ifn} 60 done 61 62 if checkyesno background_dhclient; then 63 rc_flags="${rc_flags} -nw" 64 fi 65 66 rc_flags="${rc_flags} ${_cooked_list}" 67 return 0 68} 69 70dhclient_poststart() 71{ 72 for ifn in ${_cooked_list}; do 73 ifalias_up ${ifn} 74 ipx_up ${ifn} 75 ifconfig ${ifn} 76 done 77} 78 79dhclient_prestop() 80{ 81 dhclient_common || return 1 82 83 for ifn in ${_cooked_list}; do 84 ipx_down ${ifn} 85 ifalias_down ${ifn} 86 done 87 echo -n "Releasing DHCP leases:" 88 for ifn in $_cooked_list ; do 89 ${command} -r $ifn 90 if [ $? -eq 0 ]; then 91 echo -n " $ifn" 92 else 93 _fail="$_fail $ifn" 94 fi 95 done 96 echo '.' 97 debug "The following leases failed to release: $_fail" 98} 99 100dhclient_poststop() 101{ 102 for ifn in ${_cooked_list}; do 103 ifscript_down ${ifn} 104 done 105} 106 107if [ -n "$2" ]; then 108 _cmdifn="$2" 109 stop_cmd=":" 110fi 111 112load_rc_config $name 113run_rc_command "$1" 114