ipv6_addrs_IF aliases in rc.conf(5)

Kimmo Paasiala kpaasial at gmail.com
Sat Apr 13 12:29:44 UTC 2013


On Thu, Jan 17, 2013 at 7:24 AM, Kimmo Paasiala <kpaasial at gmail.com> wrote:
> On Thu, Dec 27, 2012 at 11:42 PM, Phil Kulin <schors at gmail.com> wrote:
>> 2012/12/26 Kimmo Paasiala <kpaasial at gmail.com>:
>>
>>> I've revised the patch again and updated it at gihub,
>>> https://gist.github.com/4362018.  It can now be applied at top level
>>> of sources (/usr/src typically). It now does the deconfiguration in
>>> reverse order of the configuration, meaning the aliases configured
>>> with ipv6_addrs_IF are removed before the ones configured with
>>> ifconfig_IF_aliasN="inet6 ...".
>>
>> Adapted for FreeBSD 8.2, works fine:
>>
>> --- network.subr.orig   2011-02-17 05:19:39.000000000 +0300
>> +++ network.subr        2012-12-28 00:46:38.000000000 +0400
>> @@ -312,6 +312,12 @@ afexists()
>>  #      1 otherwise.
>>  ipv6if()
>>  {
>> +       # Test for $ipv6_addrs_IF. If it exists then the
>> +       # interface should be configured for IPv6
>> +       _tmpargs=$(get_if_var $_if ipv6_addrs_IF)
>> +       if [ -n "${_tmpargs}" ]; then
>> +               return 0
>> +       fi
>>         if ! checkyesno ipv6_enable; then
>>                 return 1
>>         fi
>> @@ -948,7 +954,12 @@ network6_interface_setup()
>>                         rtsol_interface=no
>>                         ifconfig $i inet6 ${ipv6_ifconfig} alias
>>                 fi
>> -
>> +               ipv6_addrs=`get_if_var $i ipv6_addrs_IF`
>> +               if [ -n "${ipv6_addrs}" ]; then
>> +                       rtsol_available=no
>> +                       rtsol_interface=no
>> +                       ipv6_addrs_common ${i} alias
>> +               fi
>>                 # Wireless NIC cards are virtualized through the wlan interface
>>                 if ! is_wired_interface ${i}; then
>>                         case "${i}" in
>> @@ -1178,3 +1189,39 @@ network6_getladdr()
>>                 esac
>>         done
>>  }
>> +
>> +ipv6_addrs_common()
>> +{
>> +       local _ret _if _action _ip6prefix _ip6prefixes
>> +       local _ip6addr _prefixlen
>> +       local _range _ip6net _ip6low _ip6high
>> +       _ret=1
>> +       _if=$1
>> +       _action=$2
>> +       # get the prefixes from ipv6_addrs_IF variable
>> +       _ip6prefixes=`get_if_var $_if ipv6_addrs_IF`
>> +       for _ip6prefix in ${_ip6prefixes}; do
>> +               _ip6addr=${_ip6prefix%%/*}
>> +               _prefixlen=${_ip6prefix##*/}
>> +               _range=${_ip6addr##*:}
>> +               _ip6net=${_ip6addr%:*}
>> +               _ip6low=${_range%-*}
>> +               _ip6high=${_range#*-}
>> +               # If deleting an alias, set _prefixlen to null string.
>> +               if [ "${_action}" = "-alias" ]; then
>> +                       _prefixlen=""
>> +               else
>> +                       _prefixlen="prefixlen $_prefixlen"
>> +               fi
>> +               _ip6high=$(("0x${_ip6high}"))
>> +               _ip6count=$(("0x${_ip6low}"))
>> +               while [ "${_ip6count}" -le "${_ip6high}" ]; do
>> +                       # Re-uses the _ip6addr variable from above
>> +                       _ip6addr=$(printf "%x" "${_ip6count}")
>> +                       eval "ifconfig ${_if} inet6
>> ${_ip6net}:${_ip6addr} ${_prefixlen} ${_action}"
>> +                       _ip6count=$((${_ip6count}+1))
>> +                       _ret=0
>> +               done
>> +       done
>> +       return $_ret
>> +}
>>
>>
>> --
>> Non nobis Domine non nobis sed Nomini Tuo da gloriam
>> Phil Kulin
>
> I don't have an 8.X system to test but I guess it's fine.
>
> Any more interest in this? I'd love to see this added, not because I
> wrote it but because I want to contribute in any way I can.
>
> -Kimmo

Sorry to resurrect this thread but since nothing has happened in about
three months I have to ask: What can I do to have this commited to
HEAD? I'd be even willing to become a src committer if that's what is
required. I feel that I'm compentent enough. Who can I contact?

-Kimmo


More information about the freebsd-stable mailing list