From owner-freebsd-rc@FreeBSD.ORG Sat Feb 22 01:17:52 2014 Return-Path: Delivered-To: rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BF6BE170; Sat, 22 Feb 2014 01:17:52 +0000 (UTC) Received: from mx1.fisglobal.com (mx1.fisglobal.com [199.200.24.190]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 80037129A; Sat, 22 Feb 2014 01:17:52 +0000 (UTC) Received: from smarthost.fisglobal.com ([10.132.206.193]) by ltcfislmsgpa03.fnfis.com (8.14.5/8.14.5) with ESMTP id s1M1HoSu016924 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Fri, 21 Feb 2014 19:17:50 -0600 Received: from THEMADHATTER (10.242.181.54) by smarthost.fisglobal.com (10.132.206.193) with Microsoft SMTP Server id 14.3.174.1; Fri, 21 Feb 2014 19:17:48 -0600 From: Sender: Devin Teske To: "'John Nielsen'" References: <20131228055324.GA72764@aim7400.DataIX.local> <9498BE8E-8090-4E7A-8317-18D29B1DDC08@dataix.net> <7DBA7D58-E925-47BC-967C-F653348426A6@fisglobal.com> <7EAEF3AC-DB1B-4D3E-A156-E1E76B765990@jnielsen.net> In-Reply-To: <7EAEF3AC-DB1B-4D3E-A156-E1E76B765990@jnielsen.net> Subject: RE: network.subr _aliasN handling Date: Fri, 21 Feb 2014 17:17:42 -0800 Message-ID: <11c101cf2f6b$e3aee5d0$ab0cb170$@FreeBSD.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_11C2_01CF2F28.D58BA5D0" X-Mailer: Microsoft Outlook 15.0 Thread-Index: AQHDFDC1SCdF87KsAOMxpeOC5ZIl9wGCXs+0Atrl8x0A2Y7j4AImADvJAP+hhVcDLSa/6wFNnotj Content-Language: en-us X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87, 1.0.14, 0.0.0000 definitions=2014-02-21_06:2014-02-21,2014-02-21,1970-01-01 signatures=0 Cc: 'Jason Hellenthal' , rc@freebsd.org, 'Devin Teske' X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Feb 2014 01:17:52 -0000 ------=_NextPart_000_11C2_01CF2F28.D58BA5D0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > -----Original Message----- > From: John Nielsen [mailto:lists@jnielsen.net] > Sent: Friday, February 21, 2014 9:06 AM > To: Devin Teske > Cc: Jason Hellenthal; rc@freebsd.org; net@freebsd.org > Subject: Re: network.subr _aliasN handling > > On Jan 4, 2014, at 4:25 AM, Teske, Devin wrote: > > > On Jan 4, 2014, at 2:59 AM, Jason Hellenthal wrote: > > > >> I believe I know what you mean by that but in a way scares me when you say > sort as in mixing up the original order they appear in which I would find to be > really unattractive to most. > > > > It's not as scary as it sounds. > > > > The issue is that the variables are sorted alphabetically, instead of > > numerically. > > > > Let's take four words: foo1, foo2, foo10, and foo20. > > If you sort them alphabetically, you get: > > > > foo1 > > foo10 > > foo2 > > foo20 > > > > You'll notice this when doing a directory listing, as that too is > > sorted alphabetically. > > > > This is why "alias14" is run before "alias8" and "alias9". Because > > they are processed in alphabetically sorted order. I didn't do > > anything to sort the values, they came pre-sorted in alphabetic order. > > > > If I simply throw in a "| sort -n", then it will change it to numerically sorted. > > As you might expect, numerically sorting the above list would result in: > > > > foo1 > > foo2 > > foo10 > > foo20 > > > > Trivial really. I'll throw a patch at you when I get some cycles (soon). > > Hi Devin, Jason- > > I've been behind on my mailing list e-mail for a while, but I really like the idea > and the patch proposed here. I don't see anything like it in head yet, so ... Ping? > :) > > JN > [Devin Teske] *** this time with attached patch.txt *** Hi JN, here's a new patch that incorporates numerical sorting as well as what the original patch set out to do ... make "gaps" possible (so that you could comment out an alias without having to renumber all the ones following). Give it a look, let me know what you think. -- Devin _____________ The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you. ------=_NextPart_000_11C2_01CF2F28.D58BA5D0 Content-Type: text/plain; name="patch.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="patch.txt" Index: etc/network.subr=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= --- etc/network.subr (revision 255712)=0A= +++ etc/network.subr (working copy)=0A= @@ -1027,9 +1027,10 @@ ifalias_af_common()=0A= _action=3D$3=0A= =0A= # ifconfig_IF_aliasN which starts with $_af=0A= - alias=3D0=0A= - while : ; do=0A= - ifconfig_args=3D`get_if_var $_if ifconfig_IF_alias${alias}`=0A= + for alias in `list_vars ifconfig_${_if}_alias[0-9]\* |=0A= + sort -nk1.$((9+${#_if}+7))`=0A= + do=0A= + eval ifconfig_args=3D\"\$$alias\"=0A= _iaf=3D=0A= case $ifconfig_args in=0A= inet\ *) _iaf=3Dinet ;;=0A= @@ -1051,15 +1052,15 @@ ifalias_af_common()=0A= warn "\$ifconfig_${_if}_alias${alias} needs " \=0A= "\"inet\" keyword for an IPv4 address."=0A= esac=0A= - alias=3D$(($alias + 1))=0A= done=0A= =0A= # backward compatibility: ipv6_ifconfig_IF_aliasN.=0A= case $_af in=0A= inet6)=0A= - alias=3D0=0A= - while : ; do=0A= - ifconfig_args=3D`get_if_var $_if ipv6_ifconfig_IF_alias${alias}`=0A= + for alias in `list_vars ipv6_ifconfig_${_if}_alias[0-9]\* |=0A= + sort -nk1.$((14+${#_if}+7))`=0A= + do=0A= + eval ifconfig_args=3D\"\$$alias\"=0A= case ${_action}:"${ifconfig_args}" in=0A= *:"")=0A= break=0A= @@ -1071,7 +1072,6 @@ ifalias_af_common()=0A= "instead."=0A= ;;=0A= esac=0A= - alias=3D$(($alias + 1))=0A= done=0A= esac=0A= =0A= Index: etc/rc.subr=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= --- etc/rc.subr (revision 255712)=0A= +++ etc/rc.subr (working copy)=0A= @@ -54,6 +54,20 @@ JID=3D`$PS -p $$ -o jid=3D`=0A= # functions=0A= # ---------=0A= =0A= +# list_vars pattern=0A= +# List vars matching pattern.=0A= +# =0A= +list_vars()=0A= +{=0A= + set | { while read LINE; do=0A= + var=3D"${LINE%%=3D*}"=0A= + case "$var" in=0A= + "$LINE"|*[!a-zA-Z0-9_]*) continue ;;=0A= + $1) echo $var=0A= + esac=0A= + done; }=0A= +}=0A= +=0A= # set_rcvar_obsolete oldvar [newvar] [msg]=0A= # Define obsolete variable.=0A= # Global variable $rcvars_obsolete is used.=0A= ------=_NextPart_000_11C2_01CF2F28.D58BA5D0--