tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

I'm trying to make a 6rd pseudo-device



Hello tech-net:

I am trying to make my own 6rd pseudo-device for NetBSD (partly, to try to use Comcast's 6rd support, and partly to learn more about how these kinds of drivers work?). I'm building with current (5.99.43).

I modeled my 'sixrd' driver after the 'stf' driver since they're both doing almost the same tunneling with just a few different rules.

After creating the device, I configure it with the IPv6 address 2001:55c:62d8:93c7::1:

   ifconfig sixrd0 inet6 2001:55c:62d8:93c7::1 prefixlen 32

Then I try to ping6 to 2001:55c:62d8:93c7::2 which should force the packets to/thru my driver, but instead, I get the following:

  lily# ping6 2001:55c:45fc:5042::2
  PING6(56=40+8+8 bytes) 2001:55c:62d8:93c7::1 --> 2001:55c:45fc:5042::2
  ping6: sendmsg: Message too long
  ping6: wrote 2001:55c:45fc:5042::2 16 chars, ret=-1
  ping6: sendmsg: Message too long
  ping6: wrote 2001:55c:45fc:5042::2 16 chars, ret=-1
  ping6: sendmsg: Message too long
  ping6: wrote 2001:55c:45fc:5042::2 16 chars, ret=-1
  ^C
  --- 2001:55c:45fc:5042::2 ping6 statistics ---
  3 packets transmitted, 0 packets received, 100.0% packet loss

I have a debug statement in the sixrd_output() routine, so I'd see if any packets were trying to be sent.

It's almost as if the IPv6 stack is checking the length, and thinking the packet is too big to send on the target interface? My device's settings are all identical to what the stf driver uses. Any ideas?

Thanks,

Patrick Klos



Home | Main Index | Thread Index | Old Index