diff options
author | dteske <dteske@FreeBSD.org> | 2014-04-07 22:40:29 +0000 |
---|---|---|
committer | dteske <dteske@FreeBSD.org> | 2014-04-07 22:40:29 +0000 |
commit | 6b8b017a4a4246e2c313248a141f0404fee63c10 (patch) | |
tree | 726f5ff942b9d58435207ae40eeeb0a4008fc971 /etc/network.subr | |
parent | 4fc5a92a2420790ab7045014952f3fb86ca4a2ca (diff) | |
download | FreeBSD-src-6b8b017a4a4246e2c313248a141f0404fee63c10.zip FreeBSD-src-6b8b017a4a4246e2c313248a141f0404fee63c10.tar.gz |
Loosen the processing of *_IF_aliasN vars to be less strict. Previously,
the first alias had to be _alias0 and processing stopped at the first non-
defined variable (preventing gaps). Allowing gaps gives the administrator
the ability to group aliases in an adhoc manner and also lifts the
requirement to renumber aliases simply to comment-out an existing one.
Aliases are processed in numerical ascending order.
Discussed on: -rc
MFC after: 1 week
Diffstat (limited to 'etc/network.subr')
-rw-r--r-- | etc/network.subr | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/etc/network.subr b/etc/network.subr index 474e479..aa72749 100644 --- a/etc/network.subr +++ b/etc/network.subr @@ -283,10 +283,8 @@ get_if_var() fi _if=$1 - _punct=". - / +" - for _punct_c in $_punct; do - _if=`ltr ${_if} ${_punct_c} '_'` - done + _punct=".-/+" + ltr ${_if} "${_punct}" '_' _if _var=$2 _default=$3 @@ -1076,6 +1074,7 @@ ifalias_af_common_handler() ifalias_af_common() { local _ret _if _af _action alias ifconfig_args _aliasn _c _tmpargs _iaf + local _punct=".-/+" _ret=1 _aliasn= @@ -1083,10 +1082,14 @@ ifalias_af_common() _af=$2 _action=$3 + # Normalize $_if before using it in a pattern to list_vars() + ltr "$_if" "$_punct" "_" _if + # ifconfig_IF_aliasN which starts with $_af - alias=0 - while : ; do - ifconfig_args=`get_if_var $_if ifconfig_IF_alias${alias}` + for alias in `list_vars ifconfig_${_if}_alias[0-9]\* | + sort_lite -nk1.$((9+${#_if}+7))` + do + eval ifconfig_args=\"\$$alias\" _iaf= case $ifconfig_args in inet\ *) _iaf=inet ;; @@ -1107,15 +1110,15 @@ ifalias_af_common() warn "\$ifconfig_${_if}_alias${alias} needs " \ "\"inet\" keyword for an IPv4 address." esac - alias=$(($alias + 1)) done # backward compatibility: ipv6_ifconfig_IF_aliasN. case $_af in inet6) - alias=0 - while : ; do - ifconfig_args=`get_if_var $_if ipv6_ifconfig_IF_alias${alias}` + for alias in `list_vars ipv6_ifconfig_${_if}_alias[0-9]\* | + sort_lite -nk1.$((14+${#_if}+7))` + do + eval ifconfig_args=\"\$$alias\" case ${_action}:"${ifconfig_args}" in *:"") break @@ -1127,7 +1130,6 @@ ifalias_af_common() "instead." ;; esac - alias=$(($alias + 1)) done esac |