=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/etc/netstart,v retrieving revision 1.210 retrieving revision 1.211 diff -u -r1.210 -r1.211 --- src/etc/netstart 2020/12/21 16:52:49 1.210 +++ src/etc/netstart 2020/12/23 17:22:07 1.211 @@ -1,6 +1,6 @@ #!/bin/sh - # -# $OpenBSD: netstart,v 1.210 2020/12/21 16:52:49 krw Exp $ +# $OpenBSD: netstart,v 1.211 2020/12/23 17:22:07 krw Exp $ # Turn off Strict Bourne shell mode. set +o sh @@ -27,7 +27,7 @@ # Parse and "unpack" a hostname.if(5) line given as positional parameters. # Fill the _cmds array with the resulting interface configuration commands. parse_hn_line() { - local _af=0 _name=1 _mask=2 _bc=3 _prefix=2 _c _cmd _prev _daddr + local _af=0 _name=1 _mask=2 _bc=3 _prefix=2 _c _cmd _prev _daddr _dhcp _i set -A _c -- "$@" set -o noglob @@ -63,9 +63,20 @@ _c[_name]="${_c[_name]} $_daddr" _cmds[$_prev]="${_c[@]}" ;; - dhcp) _c[0]="ifconfig $_if" - ((${#_c[*]} > 1)) && _cmds[${#_cmds[*]}]="${_c[@]}" - _cmds[${#_cmds[*]}]="dhclient $_if" + dhcp) unset _c[0] + _i=1 + while [[ ${_c[$_i]} == @(-c|-d|-i|-n|-r|-v) ]]; do + if [[ ${_c[$_i]} == @(-c|-i) ]]; then + _dhcp[${#_dhcp[*]}]=${_c[$_i]} + unset _c[$_i] + (( _i++ )) + fi + _dhcp[${#_dhcp[*]}]=${_c[$_i]} + unset _c[$_i] + (( _i++ )) + done + ((${#_c[*]} > 0)) && _cmds[${#_cmds[*]}]="ifconfig $_if ${_c[@]}" + _cmds[${#_cmds[*]}]="dhclient ${_dhcp[@]} $_if" V4_DHCPCONF=true ;; '!'*) _cmd=$(print -- "${_c[@]}" | sed 's/\$if/'$_if'/g')