Re: IPv6 over Firewire
From: Stefan Richter <stefanr@s5r6.in-berlin.de>
Date: 2012-12-21 23:12:50
On Dec 22 YOSHIFUJI Hideaki wrote:
Stephan Gatzka wrote:quoted
quoted
If you are talking about how to build NS/NA/RS/Redirect messages, you can just use ndisc_opt_addr_space() and ndisc_fill_addr_option() here.Thanks, these functions are certainly helpful. But ndisc_opt_addr_space() calculates the required space from dev->addr_len and ndisc_addr_option_pad(dev->type). The latter is 0 for IEEE1394 (firewire). So the required option space just comes from dev->addr_len, which is 8 for firewire, resulting in an option address space of 16 (2 octets). But rfc3146 requires an option address space of 3 octets. So my main question is if in such a situation the best is to reserve additional skb tail room using needed_tailroom in struct netdevice. This directly affects the memory allocated in ndisc_build_skb().Something like this: static inline int ndisc_opt_addr_space(struct net_device *dev) { - return NDISC_OPT_SPACE(dev->addr_len + ndisc_addr_option_pad(dev->type)); + switch (dev->type) { + case ARPHRD_IEEE1394: + return sizeof(struct ndisc_opt_ieee1394_llinfo); + default: + return NDISC_OPT_SPACE(dev->addr_len + ndisc_addr_option_pad(dev->type)); + } }
Can't we increase dev->addr_len for RFC 3146 interfaces? Can't we add another dev->type besides ARPHRD_IEEE1394 (RFC 2734)? Is a single dev instance transporting both IPv4 and IPv6 or will there be separate instances for those? -- Stefan Richter -=====-===-- ==-- =-==- http://arcgraph.de/sr/