| @@ -1,15 +1,35 @@ | | | @@ -1,15 +1,35 @@ |
1 | #!/bin/sh | | 1 | #!/bin/sh |
2 | | | 2 | |
3 | # PROVIDE: dhcpcd | | 3 | # PROVIDE: dhcpcd |
4 | # REQUIRE: network mountcritlocal | | 4 | # REQUIRE: network mountcritlocal |
5 | # BEFORE: NETWORKING | | 5 | # BEFORE: NETWORKING |
6 | | | 6 | |
7 | $_rc_subr_loaded . /etc/rc.subr | | 7 | $_rc_subr_loaded . /etc/rc.subr |
8 | | | 8 | |
9 | name=dhcpcd | | 9 | name=dhcpcd |
10 | rcvar=$name | | 10 | rcvar=$name |
11 | command=/sbin/$name | | 11 | command=/sbin/$name |
12 | pidfile=/var/run/$name.pid | | | |
13 | | | 12 | |
14 | load_rc_config $name | | 13 | load_rc_config $name |
| | | 14 | |
| | | 15 | # If the last argument to dhcpcd is a valid interface and the prior argument |
| | | 16 | # is not then dhcpcd will start on one interface only and create a pidfile |
| | | 17 | # based on the interface name. See PR bin/43490. |
| | | 18 | if [ -n "$flags" ]; then |
| | | 19 | myflags=$flags |
| | | 20 | else |
| | | 21 | eval myflags=\$${name}_flags |
| | | 22 | fi |
| | | 23 | ifname="${myflags##* }" |
| | | 24 | myflags="${myflags%% $ifname}" |
| | | 25 | last_flag="${myflags##* }" |
| | | 26 | if /sbin/ifconfig "$ifname" >/dev/null 2>&1 && |
| | | 27 | ! /sbin/ifconfig "$last_flag" >/dev/null 2>&1 |
| | | 28 | then |
| | | 29 | pidfile=/var/run/$name-"$ifname".pid |
| | | 30 | else |
| | | 31 | pidfile=/var/run/$name.pid |
| | | 32 | fi |
| | | 33 | unset myflags ifname last_flag |
| | | 34 | |
15 | run_rc_command "$1" | | 35 | run_rc_command "$1" |