Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[IPV6] ADDRCONF: Uninline ipv6_isatap_eui64().

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>

+25 -16
+1 -14
include/net/addrconf.h
··· 233 233 (addr->s6_addr32[3] ^ htonl(0x00000002))) == 0); 234 234 } 235 235 236 - static inline int ipv6_isatap_eui64(u8 *eui, __be32 addr) 237 - { 238 - eui[0] = (ipv4_is_zeronet(addr) || ipv4_is_private_10(addr) || 239 - ipv4_is_loopback(addr) || ipv4_is_linklocal_169(addr) || 240 - ipv4_is_private_172(addr) || ipv4_is_test_192(addr) || 241 - ipv4_is_anycast_6to4(addr) || ipv4_is_private_192(addr) || 242 - ipv4_is_test_198(addr) || ipv4_is_multicast(addr) || 243 - ipv4_is_lbcast(addr)) ? 0x00 : 0x02; 244 - eui[1] = 0; 245 - eui[2] = 0x5E; 246 - eui[3] = 0xFE; 247 - memcpy (eui+4, &addr, 4); 248 - return 0; 249 - } 236 + extern int __ipv6_isatap_ifid(u8 *eui, __be32 addr); 250 237 251 238 static inline int ipv6_addr_is_isatap(const struct in6_addr *addr) 252 239 {
+24 -2
net/ipv6/addrconf.c
··· 1494 1494 return 0; 1495 1495 } 1496 1496 1497 + int __ipv6_isatap_ifid(u8 *eui, __be32 addr) 1498 + { 1499 + eui[0] = (ipv4_is_zeronet(addr) || ipv4_is_private_10(addr) || 1500 + ipv4_is_loopback(addr) || ipv4_is_linklocal_169(addr) || 1501 + ipv4_is_private_172(addr) || ipv4_is_test_192(addr) || 1502 + ipv4_is_anycast_6to4(addr) || ipv4_is_private_192(addr) || 1503 + ipv4_is_test_198(addr) || ipv4_is_multicast(addr) || 1504 + ipv4_is_lbcast(addr)) ? 0x00 : 0x02; 1505 + eui[1] = 0; 1506 + eui[2] = 0x5E; 1507 + eui[3] = 0xFE; 1508 + memcpy(eui + 4, &addr, 4); 1509 + return 0; 1510 + } 1511 + EXPORT_SYMBOL(__ipv6_isatap_ifid); 1512 + 1513 + static int addrconf_ifid_sit(u8 *eui, struct net_device *dev) 1514 + { 1515 + if (dev->priv_flags & IFF_ISATAP) 1516 + return __ipv6_isatap_ifid(eui, *(__be32 *)dev->dev_addr); 1517 + return -1; 1518 + } 1519 + 1497 1520 static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) 1498 1521 { 1499 1522 switch (dev->type) { ··· 1529 1506 case ARPHRD_INFINIBAND: 1530 1507 return addrconf_ifid_infiniband(eui, dev); 1531 1508 case ARPHRD_SIT: 1532 - if (dev->priv_flags & IFF_ISATAP) 1533 - return ipv6_isatap_eui64(eui, *(__be32 *)dev->dev_addr); 1509 + return addrconf_ifid_sit(eui, dev); 1534 1510 } 1535 1511 return -1; 1536 1512 }