Sorry , I forgot to attach the patch so don't wonder when you see it twice ! This patch allows network device drivers to write their own IPv6 address autoconfiguration function which will be then called by the IPv6 stack.The ipv6_generate_eui64(..) function is used as default. The new net_device function pointer as well as the new struct member dev_id is needed to avoid duplicate address conflicts on Linux for z/Series when shared OSA cards are used with IPv6 so that it is allowed to replace the part 0xFFFE of an EUI-64 based interface indentifier by another 16 bit value. The following changes are performed: drivers/net/net_init.c initialization of dev_id and generate_eui64 in ether_setup, tr_setup and fddi_setup. include/linux/netdevice.h introduced new function pointer generate_eui64 and new variable dev_id in net_device structure. include/net/addrconf.h function prototype for ipv6_generate_eui64 function net/ipv6/addrconf.c make ipv6_generate_eui64 non-static replace all ipv6_generate_eui64 calls with dev->generate_eui64 net/8021q/vlan.c Take it into account for VLAN devices in function register_802_1Q_vlan_device(). On Linux for zSeries OSA network cards can be shared among various Linuxes. The OSA card has only one MAC address. This leads to duplicate address conflicts in conjunction with IPv6 and a vanilla kernel if more than one Linux use the same card. But the device driver for the card can deliver a unique 16-bit identifier for each Linux sharing the same card. This identifier is placed instead of the part 0xFFFE in the interface identifier. The "u" bit of the interface identifier is not inverted when the new feature is used. Hence the resulting interface identifier has local scope according to RFC2373. Consequently this change of the autoconfiguration does not violate any RFCs. Mit freundlichen Grüssen / Best regards Frank Pavlic Linux for eServer Development Schoenaicher Str. 220, 71032 Boeblingen Phone: ext. +49-(0)7031/16-2463, int. *120-2463 mailto: pavlic@de.ibm.com
Attachment:
shared-ipv6.diff
Description: Binary data