Re: ipv6_addrs_IF aliases in rc.conf(5)

From: Kimmo Paasiala <kpaasial_at_gmail.com>
Date: Sat, 22 Dec 2012 03:19:09 +0200
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
Received on Sat Dec 22 2012 - 00:19:11 UTC

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