Merge branch 'vendor/FILE'
[dragonfly.git] / etc / rc.d / dhclient
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.20.2.4 2007/03/10 14:07:01 yar Exp $
5 # $DragonFly: src/etc/rc.d/dhclient,v 1.11 2008/08/30 21:21:40 swildner Exp $
6 #
7
8 # PROVIDE: dhclient
9 # KEYWORD: nojail nostart
10 #
11
12 . /etc/rc.subr
13 . /etc/network.subr
14
15 name="dhclient"
16 rcvar=
17 start_cmd="dhclient_start"
18 stop_cmd="dhclient_stop"
19
20 dhclient_start()
21 {
22         # prevent unnecessary restarts
23         # XXX: dhclient had better create a pidfile
24         if [ -x /bin/pgrep ]; then
25                 pids=`/bin/pgrep -f "dhclient: $ifn(\$| .*)"`
26                 if [ -n "$pids" ]; then
27                         exit 0
28                 fi
29         fi
30
31         # Override for $ifn specific flags (see rc.subr for $flags setting)
32         eval specific=\$dhclient_flags_$ifn
33         if [ -z "$flags" -a -n "$specific" ]; then
34                 rc_flags=$specific
35         fi
36
37         ${dhclient_program} ${rc_flags} $ifn
38 }
39
40 dhclient_stop()
41 {
42         ifconfig $ifn down      # cause dhclient to die
43 }
44
45 ifn="$2"
46
47 load_rc_config $name
48 load_rc_config network
49
50 if ! dhcpif $ifn; then
51         return 1
52 fi
53
54 run_rc_command "$1"