Date: Tue, 25 Mar 2014 13:34:15 -0600 From: Alan Somers <asomers@freebsd.org> To: Hiroki Sato <hrs@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r252015 - in head: etc share/man/man5 Message-ID: <CAOtMX2hrCxyRupu5wQhbw%2BHdGER4RDdysDFcheWpAp1G-2152w@mail.gmail.com> In-Reply-To: <201306200229.r5K2TnfR085621@svn.freebsd.org> References: <201306200229.r5K2TnfR085621@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jun 19, 2013 at 8:29 PM, Hiroki Sato <hrs@freebsd.org> wrote: > Author: hrs > Date: Thu Jun 20 02:29:49 2013 > New Revision: 252015 > URL: http://svnweb.freebsd.org/changeset/base/252015 > > Log: > - Add CIDR notation support like 192.168.1-2.10-16/24 to $ifconfig_IF_aliasN. > This is an extended version of ipv4_addr_IF which supports both IPv4 and > IPv6, and multiple range specifications. To avoid to generate too many > addresses, the maximum number of the generated addresses is currently > limited to 31. > > - Add $ifconfig_IF_aliases, which accepts multiple IP aliases in a variable. > > - ipv6_prefix_IF now supports !/64 prefix length. In addition to the old > 64-bit format (2001:db8:1:1), a full 128-bit format like 2001:db8:1:1::/64 > is supported. > > - Replace ifconfig command with $IFCONFIG_CMD variable to support > a dry-run mode in the future. > > - Remove IP aliases before removing all of IPv4 addresses when doing > "rc.d/netif down". > > - Add a DAD wait to network6_getladdr() because it is possible to fail to > configure an EUI64 address when ipv6_prefix_IF is specified. > > A summary of the supported ifconfig_* variables is as follows: > > # IPv4 configuration. > ifconfig_em0="inet 192.168.0.1" > # IPv6 configuration. > ifconfig_em0_ipv6="inet6 2001:db8::1/64" > # IPv4 address range spec. Now deprecated. > ipv4_addr_em0="10.2.1.1-10" > # IPv6 alias. > ifconfig_em0_alias0="inet6 2001:db8:5::1 prefixlen 70" > # IPv4 alias. > ifconfig_em0_alias1="inet 10.2.2.1/24" > # IPv4 alias with range spec w/o AF keyword (backward compat). > ifconfig_em0_alias2="10.3.1.1-10/32" > # IPv6 alias with range spec. > ifconfig_em0_alias3="inet6 2001:db8:20-2f::1/64" > # ifconfig_IF_aliases is just like ifconfig_IF_aliasN. > ifconfig_em0_aliases="inet 10.3.3.201-204/24 inet6 2001:db8:210-213::1/64 inet 10.1.1.1/24" > # IPv6 alias (backward compat) > ipv6_ifconfig_em0_alias0="inet6 2001:db8:f::1/64" > # IPv6 alias w/o AF keyword (backward compat) > ipv6_ifconfig_em0_alias1="2001:db8:f:1::1/64" > # IPv6 prefix. > ipv6_prefix_em0="2001:db8::/64" > > Tested by: Kimmo Paasiala > > Modified: > head/etc/network.subr > head/share/man/man5/rc.conf.5 > > Modified: head/etc/network.subr > ============================================================================== > --- head/etc/network.subr Thu Jun 20 02:26:32 2013 (r252014) > +++ head/etc/network.subr Thu Jun 20 02:29:49 2013 (r252015) > @@ -24,6 +24,10 @@ ... > + for _c in $_args; do > + case $_c in > + ${_af}) > + case $_tmpargs in > + ${_af}\ *-*) > + ifalias_af_common_handler $_if $_af $_action \ > + `ifalias_expand_addr $_af $_action ${_tmpargs#${_af}\ }` > ;; > - "") ... > + # Process the last component if any. > + if [ -n "$_tmpargs}" ]; then > + case $_tmpargs in > + ${_af}\ *-*) > + ifalias_af_common_handler $_if $_af $_action \ > + `ifalias_expand_addr $_af $_action ${_tmpargs#${_af}\ }` > + ;; The "${_af}/ *-*" globbing pattern is too greedy. It matches - characters that are not part of the IP address specification. The example I found was "ifalias_af_common_handler igb1 inet -alias inet 192.168.34.45/20 fib 1 vhid 8 pass TtZeYgnyslwK6k6cItngoQAh1-E advskew 250". Note the "-" in the CARP password. This caused ifalias_af_common_handler to get stuck in an infinite recursive loop. In my case, the workaround was easy; I just used a CARP password with no "-". But I can imagine other situations that might trigger this same behavior, like "ifalias_af_common_handler igb1 inet 192.168.0.2/24 -group foo". It would be best if you tightened up the globbing pattern. -Alan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2hrCxyRupu5wQhbw%2BHdGER4RDdysDFcheWpAp1G-2152w>