Re: ipv6_addrs_IF aliases in rc.conf(5)

From: Kimmo Paasiala <kpaasial_at_gmail.com>
Date: Sat, 22 Dec 2012 05:41:51 +0200
On Sat, Dec 22, 2012 at 5:09 AM, Kimmo Paasiala <kpaasial_at_gmail.com> wrote:
> On Sat, Dec 22, 2012 at 3:19 AM, Kimmo Paasiala <kpaasial_at_gmail.com> wrote:
>> On Sat, Dec 22, 2012 at 1:38 AM, Łukasz Wąsikowski
>> <lukasz_at_wasikowski.net> wrote:
>>> W dniu 2012-12-21 13:23, Kimmo Paasiala pisze:
>>>> On Fri, Dec 21, 2012 at 5:43 AM, Kimmo Paasiala <kpaasial_at_gmail.com> wrote:
>>>>> On Thu, Dec 20, 2012 at 3:27 PM, Jilles Tjoelker <jilles_at_stack.nl> wrote:
>>>>>> On Thu, Dec 20, 2012 at 01:04:34PM +0200, Kimmo Paasiala wrote:
>>>>>>> A question related to this for those who have been doing work on the
>>>>>>> rc(8) scripts. Can I assume that /usr/bin is available when
>>>>>>> network.subr functions are used? Doing calculations on hexadecimal
>>>>>>> numbers is going to be very awkward if I can't use for example bc(1).
>>>>>>
>>>>>> You cannot assume that /usr/bin is available when setting up the
>>>>>> network. It may be that /usr is mounted via NFS.
>>>>>>
>>>>>> You can use hexadecimal numbers (prefixed with 0x) in $((...))
>>>>>> expressions. In FreeBSD 9.0 or newer, sh has a printf builtin you can
>>>>>> use; in older versions you can use hexdigit and hexprint from
>>>>>> network.subr.
>>>>>>
>>>>>> --
>>>>>> Jilles Tjoelker
>>>>>
>>>>> Thanks, I've rewitten my patch to support ranges. It is attached in
>>>>> this message.
>>>>>
>>>>> Again it's against a very recent 9-STABLE, I still haven't found time
>>>>> to see if it applies to CURRENT.
>>>>>
>>>>> It does allow you to do crazy stuff like
>>>>>
>>>>> ipv6_addrs_re0="2001:db8:1111:2222::1-ffff/64"
>>>>>
>>>>> However I didn't find anything to limit the number of aliases in the
>>>>> ipv4 version of the function either.
>>>>>
>>>>> Please test it :)
>>>>>
>>>>>
>>>>> Then a question about the PR
>>>>> (http://www.freebsd.org/cgi/query-pr.cgi?pr=174225) I wrote, how can I
>>>>> attach this new patch to it? The submit follow up -button fires up my
>>>>> email client and I'm not so sure how to submit a new patch for the PR
>>>>> in an email in such a way that it appears properly formatted in the
>>>>> PR.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Kimmo Paasiala
>>>>
>>>> PR updated with the new patch.
>>>
>>> Your patch applied cleanly, but it's not working or I am doing something
>>> wrong.
>>>
>>> root_at_freebsd:~ # uname -a
>>> FreeBSD freebsd 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #1 r244567: Fri
>>> Dec 21 23:57:28 CET 2012     root_at_freebsd:/usr/obj/usr/src/sys/GENERIC
>>> amd64
>>>
>>> root_at_freebsd:~ # grep -Ev '^[[:space:]]*#|^$' /etc/rc.conf
>>> hostname="freebsd"
>>> ifconfig_em0="up"
>>> ipv4_addrs_em0="192.168.168.20-24/24"
>>> defaultrouter="192.168.168.1"
>>> ipv6_activate_all_interfaces="YES"
>>> ipv6_addrs_em0="2001:6a0:1cb::1-6/64"
>>> ipv6_defaultrouter="2001:6a0:1cb::ffff"
>>> sshd_enable="YES"
>>> dumpdev="NO"
>>> named_enable="YES"
>>>
>>> root_at_freebsd:~ # ifconfig
>>> em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>>         options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
>>>         ether 08:00:27:02:83:71
>>>         inet6 fe80::a00:27ff:fe02:8371%em0 prefixlen 64 scopeid 0x1
>>>         inet 192.168.168.20 netmask 0xffffff00 broadcast 192.168.168.255
>>>         inet 192.168.168.21 netmask 0xffffffff broadcast 192.168.168.21
>>>         inet 192.168.168.22 netmask 0xffffffff broadcast 192.168.168.22
>>>         inet 192.168.168.23 netmask 0xffffffff broadcast 192.168.168.23
>>>         inet 192.168.168.24 netmask 0xffffffff broadcast 192.168.168.24
>>>         nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
>>>         media: Ethernet autoselect (1000baseT <full-duplex>)
>>>         status: active
>>> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
>>>         options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
>>>         inet6 ::1 prefixlen 128
>>>         inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
>>>         inet 127.0.0.1 netmask 0xff000000
>>>         nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
>>>
>>> --
>>> best regards,
>>> Lukasz Wasikowski
>>
>> You need to first add a single ipv6 address using the
>> ifconfig_em0_ipv6 -syntax.
>>
>> ifconfig_em0_ipv6="2001:6a0:1cb::1/64"
>>
>> And then this should add the rest of the addresses
>>
>> ipv6_addrs_em0="2001:6a0:1cb::2-6/64"
>>
>> It looks like the reason for the difference to ipv4_addrs_IF is that
>> the "alias" parameter for ifconfig(8) operates differently for IPv6
>> addresses, the first address of an interface can't be added with
>> "alias", for IPv4 it does not care. I'll have to dig deeper but that's
>> what the problem seems to be.
>>
>> -Kimmo
>
> The 'alias' parameter of ifconfig(8) is not the problem on the first
> ipv6 address, I have verified that. However, there's probably
> something in network.subr or /etc/rc.d/netif that I have overlooked
> and causes my code to be skipped if there's no ifconfig_IF_ipv6
> variable defined in rc.conf(5).
>
> -Kimmo

Yeah, this is problem in network.subr. An interface is not recognized
as IPv6 capable if the interface is not in "ipv6_network_interfaces"
and there's no "ifconfig_IF_ipv6" in rc.conf(5), bummer. For IPv4 it
"just works" because the interface is always assumed to be IPv4
capable.

-Kimmo
Received on Sat Dec 22 2012 - 02:41:53 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:33 UTC