Skip to contentSkip to conversation

IPv6 over Firewire

PATCH In review YOSHIFUJI Hideaki 2 participants 13 messages Feb 10, 2013 – Mar 10, 2013

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover IPv6 over Firewire

This is TAKE 2 of IPv6 over IEEE1394(Firewire) (RFC3146) support by extended MAC approach.

YOSHIFUJI Hideaki (4):
firewire net: Accept IPv4 and ARP only.
firewire net: Send L2 multicast via GASP. firewire net, ipv4 arp: Extend hardware address and remove
driver-level packet inspection.
ipv6: IPv6 over Firewire (RFC3146) support.

 drivers/firewire/Kconfig |    6 +-
 drivers/firewire/net.c   |  329 +++++++++++++++++++++-------------------------
 include/linux/if_arp.h   |   12 +-
 include/net/firewire.h   |   25 ++++
 net/ipv4/arp.c           |   18 ++-
 net/ipv6/addrconf.c      |   20 ++-
 6 files changed, 222 insertions(+), 188 deletions(-)
 create mode 100644 include/net/firewire.h
Signature · 1 line
1.7.9.5
#1 lore raw

Hi Yoshifuji!

thanks for your submission. The first glance looks good to me but I need to look over your patch set more thoroughly.

Were you able to test your changes against different IP over firewire implementations? If not, I will test against the existing Linux implementation, MacOSX and Windows.

Regards,

Stephan

#2 lore raw
Quoted 3 lines · Stephan Gatzka

Were you able to test your changes against different IP over firewire implementations? If not, I will test against the existing Linux implementation, MacOSX and Windows.

I have tested against MacOS X 10.5.8.

ARP and ping works but unfortunately NDP does not seem to work.

If I assign static NDP entry on Linux, ping6 ff02::1%fw0 from MacOS works well.

I checked tcpdump on both side, and I guess this is because MacOS is broken;
- tcpdump on Linux side complains that ICMP checksum is incorrect.
- tcpdump on MacOS side says that length of Link-layer address option is 2 (16) instead of 3 (24).

I think we should check others like FreeBSD as well.

Thanks.

--yoshfuji

#3 lore raw
Quoted 5 lines

I have tested against MacOS X 10.5.8.

ARP and ping works but unfortunately NDP does not seem to work.

Quoted 7 lines

If I assign static NDP entry on Linux, ping6 ff02::1%fw0 from MacOS works well.

I checked tcpdump on both side, and I guess this is because MacOS is broken; - tcpdump on Linux side complains that ICMP checksum is incorrect. - tcpdump on MacOS side says that length of Link-layer address option is 2 (16) instead of 3 (24).

Than I would assume that there is a bug in your new implementation. RFC3146 section 8 states that the link layer option is of length 3. In addition, my proof of concept implementation also worked with MacOS X and I double checked the ndisc packets directly on the firewire line using a firewire sniffing device (firespy).

Regards,

Stephan

#4 lore raw

Hi,

Quoted 13 lines · Stephan Gatzka
Quoted 5 lines

I have tested against MacOS X 10.5.8.

ARP and ping works but unfortunately NDP does not seem to work.

Quoted 7 lines

If I assign static NDP entry on Linux, ping6 ff02::1%fw0 from MacOS works well.icmp

I checked tcpdump on both side, and I guess this is because MacOS is broken; - tcpdump on Linux side complains that ICMP checksum is incorrect. - tcpdump on MacOS side says that length of Link-layer address option is 2 (16) instead of 3 (24).

Quoted 5 lines

Than I would assume that there is a bug in your new implementation. RFC3146 section 8 states that the link layer option is of length 3. In addition, my proof of concept implementation also worked with MacOS X and I double checked the ndisc packets directly on the firewire line using a firewire sniffing device (firespy).

Can I have you code?

I meant, on MacOS X, it reports its originating lladdr option of 16bytes. Then Linux side receives lladdr option of 24bytes, in ICMPv6 with incorrect checksum. I guess that lladdr option is 16byte long at bpf layer, and then, it is mangled in the driver, but ICMPv6 checksum was not modified.

In reverse, on Linux side, it sends lladdr option of 24 bytes long with correct checksum, but it is ignored by MacOS.

--yoshfuji

#7 lore raw
Quoted 4 lines

Have you tried after skb->ip_summed = CHECKSUM_NONE change?

--yoshfuji

No, I' don't think so.

Nevertheless, there is some hope that I can try out your patch set during this week and find some insight why IPv6 does not work with MacOS X.

Regards,

Stephan

#8 lore raw

Hi Yoshfuji,

Quoted 2 lines

Nevertheless, there is some hope that I can try out your patch set during this week and find some insight why IPv6 does not work with MacOS X.

Unfortunately, until now I did not find some time to try out your IPv6 over firewire implementation. But now I did.

I just fired a ping6 from my Linux box running your kernel.

Using a FireSpy device I sniffed directly on the firewire line and dumped the ndisc packets. They look pretty well, I can't see any problems. The only thing I can't really judge about is the ICMPv6 checksum. But wireshark says the checksum is correct.

Hopefully I get a MacOS X notebook today so that I can also sniff the packets from MacOS too.

I'll keep you informed.

Regards,

Stephan

#9 lore raw
In reply to Stephan Gatzka

Hi Yoshfuji,

Quoted 2 lines

Nevertheless, there is some hope that I can try out your patch set during this week and find some insight why IPv6 does not work with

MacOS X.

Unfortunately, until now I did not find some time to try out your IPv6 over firewire implementation. But now I did.

I just fired a ping6 from my Linux box running your kernel.

Using a FireSpy device I sniffed directly on the firewire line and dumped the ndisc packets. They look pretty well, I can't see any problems. The only thing I can't really judge about is the ICMPv6 checksum. But wireshark says the checksum is correct.

The packets send from MacOS X also look good, but yes, their (recalculated) checksum might be wrong. The wireshark running on my receiving linux box does not agree with the checksum send by MacOS X.

Now I would also assume that MacOS X is wrong. To proof that you can test your code against MacOS X with CHECKSUM_UNNECESSARY. I would assume that your implementation will work then. Unfortunately I no longer have the MacOS laptop available.

Regards,

Stephan

#10 lore raw

O.k., I rechecked all checksums send by IPv6 over FireWire from Linux and from MacOS.

The checksums from Yoshis implementation are correct, MacOS is wrong.

What I don't understand is that using my proof of concept patch. I could ping6 MacOSX from my Linux box. Even with CHECKSUM_UNNECESSARY MacOSX should also throw away the packets send from Linux. Hm, I have to recheck this.

Regards,

Stephan