Date: Sat, 22 Dec 2012 05:41:51 +0200 From: Kimmo Paasiala <kpaasial@gmail.com> To: =?UTF-8?Q?=C5=81ukasz_W=C4=85sikowski?= <lukasz@wasikowski.net> Cc: freebsd-current@freebsd.org, freebsd-stable@freebsd.org Subject: Re: ipv6_addrs_IF aliases in rc.conf(5) Message-ID: <CA%2B7WWSc9ORJQnvaVA0QVnwf4i=wEJ-%2BcYiOqQK3wDUDzL=TGTA@mail.gmail.com> In-Reply-To: <CA%2B7WWSdM=45i5knYHUa_Nq=2dta4ek8Q%2Bp3g_Bf697d7_i__QA@mail.gmail.com> References: <CA%2B7WWSftYL7zjdXmSbapXHJvSAMJrKY2Un6yt4L=RkOu1eq8mw@mail.gmail.com> <CA%2B7WWSe8Qx17ZMjdugSJQKEsqXcJ0Ds1hHUZi-3mMw2KN971RA@mail.gmail.com> <50D1C553.9060100@wasikowski.net> <CA%2B7WWSewg%2BQqcn1L508tAiBY1zLQfne6AC6w7oAco3y=efcX9w@mail.gmail.com> <CA%2B7WWSeibFGNSwtjUeK-U6irj6axGftAHJC2eYU3tQoeM0JRpA@mail.gmail.com> <20121220132750.GB99616@stack.nl> <CA%2B7WWSdqjkZq1y0dyxV9LiycNA0V%2BCyEKt9x0d%2BWJaaWC4SXSg@mail.gmail.com> <CA%2B7WWSc-VwdmYBEtZwO03x-p2o7-eUr9bWrhMhjBCUSah_0v_A@mail.gmail.com> <50D4F2E4.7020600@wasikowski.net> <CA%2B7WWSc9sR74RT=oMT8uSBmNYrK-80t7Y8KKZx9JxuVE4drXBA@mail.gmail.com> <CA%2B7WWSdM=45i5knYHUa_Nq=2dta4ek8Q%2Bp3g_Bf697d7_i__QA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Dec 22, 2012 at 5:09 AM, Kimmo Paasiala <kpaasial@gmail.com> wrote: > On Sat, Dec 22, 2012 at 3:19 AM, Kimmo Paasiala <kpaasial@gmail.com> wrot= e: >> On Sat, Dec 22, 2012 at 1:38 AM, =C5=81ukasz W=C4=85sikowski >> <lukasz@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@gmail.com> w= rote: >>>>> On Thu, Dec 20, 2012 at 3:27 PM, Jilles Tjoelker <jilles@stack.nl> wr= ote: >>>>>> 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 th= e >>>>>>> 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 ca= n >>>>>> 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=3D"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=3D174225) I wrote, how ca= n 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 somethin= g >>> wrong. >>> >>> root@freebsd:~ # uname -a >>> FreeBSD freebsd 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #1 r244567: Fri >>> Dec 21 23:57:28 CET 2012 root@freebsd:/usr/obj/usr/src/sys/GENERIC >>> amd64 >>> >>> root@freebsd:~ # grep -Ev '^[[:space:]]*#|^$' /etc/rc.conf >>> hostname=3D"freebsd" >>> ifconfig_em0=3D"up" >>> ipv4_addrs_em0=3D"192.168.168.20-24/24" >>> defaultrouter=3D"192.168.168.1" >>> ipv6_activate_all_interfaces=3D"YES" >>> ipv6_addrs_em0=3D"2001:6a0:1cb::1-6/64" >>> ipv6_defaultrouter=3D"2001:6a0:1cb::ffff" >>> sshd_enable=3D"YES" >>> dumpdev=3D"NO" >>> named_enable=3D"YES" >>> >>> root@freebsd:~ # ifconfig >>> em0: flags=3D8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu = 1500 >>> options=3D9b<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.25= 5 >>> 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=3D21<PERFORMNUD,AUTO_LINKLOCAL> >>> media: Ethernet autoselect (1000baseT <full-duplex>) >>> status: active >>> lo0: flags=3D8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 >>> options=3D600003<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=3D21<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=3D"2001:6a0:1cb::1/64" >> >> And then this should add the rest of the addresses >> >> ipv6_addrs_em0=3D"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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2B7WWSc9ORJQnvaVA0QVnwf4i=wEJ-%2BcYiOqQK3wDUDzL=TGTA>