aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/addrconf.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/addrconf.h')
-rw-r--r--include/net/addrconf.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index bccc2feb99da..c56827da0dee 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -17,6 +17,7 @@
17 17
18#define IPV6_MAX_ADDRESSES 16 18#define IPV6_MAX_ADDRESSES 16
19 19
20#include <linux/in.h>
20#include <linux/in6.h> 21#include <linux/in6.h>
21 22
22struct prefix_info { 23struct prefix_info {
@@ -249,6 +250,24 @@ static inline int ipv6_addr_is_ll_all_routers(const struct in6_addr *addr)
249 addr->s6_addr32[3] == htonl(0x00000002)); 250 addr->s6_addr32[3] == htonl(0x00000002));
250} 251}
251 252
253static inline int ipv6_isatap_eui64(u8 *eui, __be32 addr)
254{
255 eui[0] = (ZERONET(addr) || PRIVATE_10(addr) || LOOPBACK(addr) ||
256 LINKLOCAL_169(addr) || PRIVATE_172(addr) || TEST_192(addr) ||
257 ANYCAST_6TO4(addr) || PRIVATE_192(addr) || TEST_198(addr) ||
258 MULTICAST(addr) || BADCLASS(addr)) ? 0x00 : 0x02;
259 eui[1] = 0;
260 eui[2] = 0x5E;
261 eui[3] = 0xFE;
262 memcpy (eui+4, &addr, 4);
263 return 0;
264}
265
266static inline int ipv6_addr_is_isatap(const struct in6_addr *addr)
267{
268 return ((addr->s6_addr32[2] | htonl(0x02000000)) == htonl(0x02005EFE));
269}
270
252#ifdef CONFIG_PROC_FS 271#ifdef CONFIG_PROC_FS
253extern int if6_proc_init(void); 272extern int if6_proc_init(void);
254extern void if6_proc_exit(void); 273extern void if6_proc_exit(void);