[[!meta copyright="Copyright © 2007, 2008, 2010, 2012, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] [[Stefan_Siegl|stesie]] has added IPv6 support to the pfinet [[translator]]. This was [[!GNU_Savannah_task 5470]]. # Implementation Because the IPv4 and IPv6 protocols are quite related to each other (think of mapped IPv4 addresses, etc.), there is no separate [[server|translator]] for IPv6 but support for the latter has been incorporated into the common pfinet. Unfortunately it's a little bit clumsy now to set the [[translator]] up, since it has to be bound to */servers/socket/2* (like before) as well as */servers/socket/26* (for IPv6). To achieve this, you can tell pfinet to install [[active_translators|active]] on specified nodes, using **-4** and **-6** options. This is, you have to install a [[passive_translator|passive]] on */servers/socket/2* that also binds the IPv6 port and vice versa. # Examples Normal IPv4 network setup, address 192.168.7.23/24 and gateway 192.168.7.1. IPv6 address shall be assigned using IPv6 auto-configuration. settrans -fgp /servers/socket/2 ↩ /hurd/pfinet -6 /servers/socket/26 ↩ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 settrans -fgp /servers/socket/26 ↩ /hurd/pfinet -4 /servers/socket/2 ↩ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 Quite the same, but with static IPv6 address assignment: settrans -fgp /servers/socket/2 ↩ /hurd/pfinet -6 /servers/socket/26 ↩ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩ -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1 settrans -fgp /servers/socket/26 ↩ /hurd/pfinet -4 /servers/socket/2 ↩ -i eth0 -a 192.168.7.23 -m 255.255.255.0 -g 192.168.7.1 ↩ -A 2001:4b88:10e4:0:216:3eff:feff:4223/64 -G 2001:4b88:10e4::1 # Missing Functionality Amongst other things, support for [[IOCTL]]s is missing. ### IRC, freenode, #hurd, 2012-12-12 hm, pfinet seems not to support ipv6 well at all :( braunr: really? pinotree: i can't manage to set a global address statically and make it communicate with neighbours pfinet receives the advertisement (during neighbour discovery) but immediately resends the same solicitation again According to the pfinet/README IPv6 support was added in 2007 from Linux 2.2.14 while the rest is from 2.2.12 according to me, bugs were added at the same time :p in addition, ipv6 in linux 2.2 was, uh, not working well either even with 2.4, it was still messy maybe we should try to upgrade the TCP/IP stack to something 2.6+? (a lot of work though) we've already had that discussion Yes. What is the best way forward, a GSoC task? There is one already: http://www.gnu.org/software/hurd/community/gsoc/project_ideas/tcp_ip_stack.html personally, i'd advocate resuing code from netbsd ### IRC, freenode, #hurd, 2013-02-23 we're beginning to seriously lack ipv6 though what is the actual problem? (again) lack? we do have ipv6 working i couldn't have it work with public addresses uh? I believe it worked for me yes i told you a few months back braunr reported recently that v6 did not work as expected? I don't remember about that (and my inbox neither) it was only on irc routing would be nice to have too the stack can do it but we lack the interface anyway, there would be benefits on working on it, but what we have now is fine and again, there are priorities braunr: it seems ndp doesn't work indeed, I wonder why, it was working for me that's what i found too there have been other additions to the ipv6 spec over time, i don't know what else we might be lacking ndp is elder yes ndp isn't lacking and pfinet *does* actually do ndp :) that's a different issue my debugging session ended in the routing code and i didn't investigate further braunr: it seems the BPF filter on /dev/eth0 doesn't include IPv6 frames that'd explain that it worked before but not any more oh good i'd love to assign global addresses to our VMs :) ok, it goes through, there is just a remaining multicast join issue yep, ethernet_set_multi is empty :) ok, enabling ALLMULTI was enough to fix it you can ping6 2001:910:1059:2:5054:00ff:fe12:3456 :) Indeed, IPv6 now works properly, and the very machine hosting this wiki (darnassus.sceen.net) can be reached with that protocol. ## IRC, freenode, #hurd, 2013-01-13 gnu_srs, gnu_srs1: fyi, I'm having a look at cherry-picking the v6only option from linux ### IRC, freenode, #hurd, 2013-02-23 youpi: From when is the Linux 524354b4d086a4f013343d727eaccb7b4c39eb25 commit (IPV6_V6ONLY)? which repo? I don't have such commit here http://git.savannah.gnu.org/cgit/hurd/hurd.git/commit/?id=2b2d7fdc42475019e5ce3eabc9c9673e3c13d89f From which release, 2.4.x, 2.6.x? it's very old 2002 it's not in the current linux git tree, but in the "history" tree I don't remember its url git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git might be even older