Skip to contentSkip to conversation

New: Trying to use a TUN device fir IPv6 traffic, cannot set destination address.

Bugme-new Andrew Morton 3 participants 3 messages Dec 22, 2009 – Dec 28, 2009 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]/

#1 lore raw

(switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface).

Quoted 49 lines · On Sat, 19 Dec 2009 10:35:18 GMT [email protected] wrote:

http://bugzilla.kernel.org/show_bug.cgi?id=14839

Summary: Trying to use a TUN device fir IPv6 traffic, cannot
set destination address.
Product: Networking
Version: 2.5
Kernel Version: 2.6.31.6
Platform: All
OS/Version: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: IPV6
AssignedTo: [email protected]
ReportedBy: [email protected]
Regression: No

I am modifying a program that uses a TUN device for IPv4 traffic so that the same TUN device can also be used for IPv6 traffic. Using ioctl SIOCSIFADDR will add an IPv6 address but ioctl SIOCSDSTADDR to add an IPv6 destination address always results in error ENODEV (19 No such device).

I searched around the source and found addrconf_set_dstaddr in addrconf.c which seems to be the routine called to set the destination address. However, the routine only sets a destination address for a SIT device, otherwise if returns ENODEV.

Below is the ifconfig output for the TUN device:-

$ ifconfig tun3
tun3      Link encap:UNSPEC  HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.3.235  P-t-P:192.168.250.235  Mask:255.255.255.255
          inet6 addr: fd00::3:235/128 Scope:Global
          UP POINTOPOINT RUNNING  MTU:1344  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

BTW, ifconfig cannot add an IPv6 destination address either, the code has a comment saying that the support needs to be written.

Can a TUN device be used for IPv6 traffic? I cannot find a definitive answer, only 'should'. Or is that nobody has ever wanted to use a TUN device for IPv6 traffic, and so the kernel support has not been written? Or am I doing something wrong?

#2 lore raw
Quoted 3 lines · On Tue, 22 Dec 2009 15:12:38 -0800 Andrew Morton <[email protected]>…
Quoted 3 lines

BTW, ifconfig cannot add an IPv6 destination address either, the code has a comment saying that the support needs to be written.

Use iproute2 utilities. ifconfig is considered deprecated legacy interface, especially for IPV6.

#3 lore raw
In reply to Andrew Morton
Quoted 54 lines · Andrew Morton

(switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface).

Quoted 48 lines · On Sat, 19 Dec 2009 10:35:18 GMT [email protected] wrote:

http://bugzilla.kernel.org/show_bug.cgi?id=14839

Summary: Trying to use a TUN device fir IPv6 traffic, cannot
set destination address.
Product: Networking
Version: 2.5
Kernel Version: 2.6.31.6
Platform: All
OS/Version: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: IPV6
AssignedTo: [email protected]
ReportedBy: [email protected]
Regression: No

I am modifying a program that uses a TUN device for IPv4 traffic so that the same TUN device can also be used for IPv6 traffic. Using ioctl SIOCSIFADDR will add an IPv6 address but ioctl SIOCSDSTADDR to add an IPv6 destination address always results in error ENODEV (19 No such device).

I searched around the source and found addrconf_set_dstaddr in addrconf.c which seems to be the routine called to set the destination address. However, the routine only sets a destination address for a SIT device, otherwise if returns ENODEV.

Below is the ifconfig output for the TUN device:-

$ ifconfig tun3
tun3      Link encap:UNSPEC  HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.3.235  P-t-P:192.168.250.235  Mask:255.255.255.255
          inet6 addr: fd00::3:235/128 Scope:Global
          UP POINTOPOINT RUNNING  MTU:1344  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

BTW, ifconfig cannot add an IPv6 destination address either, the code has a comment saying that the support needs to be written.

Can a TUN device be used for IPv6 traffic? I cannot find a definitive answer, only 'should'. Or is that nobody has ever wanted to use a TUN device for IPv6 traffic, and so the kernel support has not been written? Or am I doing something wrong?

Sorry for the delay guys. I was under the impression that things like OpenVPN work just fine with IPv6 (OpenVPN uses TUN device).

Here is a quote from OpenVPN FAQ
--
Point-to-point IPv6 tunnels are supported on OSes which have IPv6 TUN driver support (this includes Linux and the BSDs). IPv6 over TAP is always supported as is any other protocol which can run over Ethernet.
--

So. I'd suggest looking at the OpenVPN code. AFAIK all the kernel plumbing is fine.

Max