dhclient revision 118066
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 118066 2003-07-26 18:50:53Z mtm $ 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 rc_flags="${rc_flags} ${_cooked_list}" 63 return 0 64} 65 66dhclient_poststart() 67{ 68 for ifn in ${_cooked_list}; do 69 ifalias_up ${ifn} 70 ipx_up ${ifn} 71 ifconfig ${ifn} 72 done 73} 74 75dhclient_prestop() 76{ 77 dhclient_common || return 1 78 79 for ifn in ${_cooked_list}; do 80 ipx_down ${ifn} 81 ifalias_down ${ifn} 82 done 83 echo -n "Releasing DHCP leases:" 84 for ifn in $_cooked_list ; do 85 ${command} -r $ifn 86 if [ $? -eq 0 ]; then 87 echo -n " $ifn" 88 else 89 _fail="$_fail $ifn" 90 fi 91 done 92 echo '.' 93 debug "The following leases failed to release: $_fail" 94} 95 96dhclient_poststop() 97{ 98 for ifn in ${_cooked_list}; do 99 ifscript_down ${ifn} 100 done 101} 102 103if [ -n "$2" ]; then 104 _cmdifn="$2" 105fi 106 107load_rc_config $name 108run_rc_command "$1" 109