[IPV6]: ADDRCONF: Split up ipv6_generate_eui64() by device type.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
YOSHIFUJI Hideaki
2006-03-20 16:54:49 -08:00
committed by David S. Miller
parent 955189efb4
commit 073a8e0e15

View File

@@ -1299,12 +1299,8 @@ static void addrconf_leave_anycast(struct inet6_ifaddr *ifp)
__ipv6_dev_ac_dec(ifp->idev, &addr); __ipv6_dev_ac_dec(ifp->idev, &addr);
} }
static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) static int addrconf_ifid_eui48(u8 *eui, struct net_device *dev)
{ {
switch (dev->type) {
case ARPHRD_ETHER:
case ARPHRD_FDDI:
case ARPHRD_IEEE802_TR:
if (dev->addr_len != ETH_ALEN) if (dev->addr_len != ETH_ALEN)
return -1; return -1;
memcpy(eui, dev->dev_addr, 3); memcpy(eui, dev->dev_addr, 3);
@@ -1332,20 +1328,39 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev)
eui[0] ^= 2; eui[0] ^= 2;
} }
return 0; return 0;
case ARPHRD_ARCNET: }
static int addrconf_ifid_arcnet(u8 *eui, struct net_device *dev)
{
/* XXX: inherit EUI-64 from other interface -- yoshfuji */ /* XXX: inherit EUI-64 from other interface -- yoshfuji */
if (dev->addr_len != ARCNET_ALEN) if (dev->addr_len != ARCNET_ALEN)
return -1; return -1;
memset(eui, 0, 7); memset(eui, 0, 7);
eui[7] = *(u8*)dev->dev_addr; eui[7] = *(u8*)dev->dev_addr;
return 0; return 0;
case ARPHRD_INFINIBAND: }
static int addrconf_ifid_infiniband(u8 *eui, struct net_device *dev)
{
if (dev->addr_len != INFINIBAND_ALEN) if (dev->addr_len != INFINIBAND_ALEN)
return -1; return -1;
memcpy(eui, dev->dev_addr + 12, 8); memcpy(eui, dev->dev_addr + 12, 8);
eui[0] |= 2; eui[0] |= 2;
return 0; return 0;
} }
static int ipv6_generate_eui64(u8 *eui, struct net_device *dev)
{
switch (dev->type) {
case ARPHRD_ETHER:
case ARPHRD_FDDI:
case ARPHRD_IEEE802_TR:
return addrconf_ifid_eui48(eui, dev);
case ARPHRD_ARCNET:
return addrconf_ifid_arcnet(eui, dev);
case ARPHRD_INFINIBAND:
return addrconf_ifid_infiniband(eui, dev);
}
return -1; return -1;
} }