Hi,
I ask for integration of the attached patch into the
stock kernel. The patch is against kernel version 2.5.59
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@xxxxxxxxxx
shared-ipv6.diff
Description: Binary data
|