Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 90634
b: refs/heads/master
c: dfd982b
h: refs/heads/master
v: v3
  • Loading branch information
YOSHIFUJI Hideaki committed Apr 12, 2008
1 parent 9a0bffa commit b42c4c3
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3eb84f49290461e2b83d6e8ee1f3f0e504340c8b
refs/heads/master: dfd982baff01c18e3e1717c97fdac79c28f105ce
15 changes: 1 addition & 14 deletions trunk/include/net/addrconf.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,20 +233,7 @@ static inline int ipv6_addr_is_ll_all_routers(const struct in6_addr *addr)
(addr->s6_addr32[3] ^ htonl(0x00000002))) == 0);
}

static inline int ipv6_isatap_eui64(u8 *eui, __be32 addr)
{
eui[0] = (ipv4_is_zeronet(addr) || ipv4_is_private_10(addr) ||
ipv4_is_loopback(addr) || ipv4_is_linklocal_169(addr) ||
ipv4_is_private_172(addr) || ipv4_is_test_192(addr) ||
ipv4_is_anycast_6to4(addr) || ipv4_is_private_192(addr) ||
ipv4_is_test_198(addr) || ipv4_is_multicast(addr) ||
ipv4_is_lbcast(addr)) ? 0x00 : 0x02;
eui[1] = 0;
eui[2] = 0x5E;
eui[3] = 0xFE;
memcpy (eui+4, &addr, 4);
return 0;
}
extern int __ipv6_isatap_ifid(u8 *eui, __be32 addr);

static inline int ipv6_addr_is_isatap(const struct in6_addr *addr)
{
Expand Down
26 changes: 24 additions & 2 deletions trunk/net/ipv6/addrconf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1494,6 +1494,29 @@ static int addrconf_ifid_infiniband(u8 *eui, struct net_device *dev)
return 0;
}

int __ipv6_isatap_ifid(u8 *eui, __be32 addr)
{
eui[0] = (ipv4_is_zeronet(addr) || ipv4_is_private_10(addr) ||
ipv4_is_loopback(addr) || ipv4_is_linklocal_169(addr) ||
ipv4_is_private_172(addr) || ipv4_is_test_192(addr) ||
ipv4_is_anycast_6to4(addr) || ipv4_is_private_192(addr) ||
ipv4_is_test_198(addr) || ipv4_is_multicast(addr) ||
ipv4_is_lbcast(addr)) ? 0x00 : 0x02;
eui[1] = 0;
eui[2] = 0x5E;
eui[3] = 0xFE;
memcpy(eui + 4, &addr, 4);
return 0;
}
EXPORT_SYMBOL(__ipv6_isatap_ifid);

static int addrconf_ifid_sit(u8 *eui, struct net_device *dev)
{
if (dev->priv_flags & IFF_ISATAP)
return __ipv6_isatap_ifid(eui, *(__be32 *)dev->dev_addr);
return -1;
}

static int ipv6_generate_eui64(u8 *eui, struct net_device *dev)
{
switch (dev->type) {
Expand All @@ -1506,8 +1529,7 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev)
case ARPHRD_INFINIBAND:
return addrconf_ifid_infiniband(eui, dev);
case ARPHRD_SIT:
if (dev->priv_flags & IFF_ISATAP)
return ipv6_isatap_eui64(eui, *(__be32 *)dev->dev_addr);
return addrconf_ifid_sit(eui, dev);
}
return -1;
}
Expand Down

0 comments on commit b42c4c3

Please sign in to comment.