aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2007-11-14 01:56:23 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:53:58 -0500
commit2a8cc6c89039e0530a3335954253b76ed0f9339a (patch)
treedf7c77496032025bf73d0ee60441e0cc2724ed29 /include
parent303065a8545bf7524550bd9564afb48e8a685a2d (diff)
[IPV6] ADDRCONF: Support RFC3484 configurable address selection policy table.
Policy table is implemented as an RCU linear list since we do not expect large list nor frequent updates. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/if_addrlabel.h32
-rw-r--r--include/linux/rtnetlink.h7
-rw-r--r--include/net/addrconf.h8
3 files changed, 47 insertions, 0 deletions
diff --git a/include/linux/if_addrlabel.h b/include/linux/if_addrlabel.h
new file mode 100644
index 000000000000..9fe79c95dd28
--- /dev/null
+++ b/include/linux/if_addrlabel.h
@@ -0,0 +1,32 @@
1/*
2 * if_addrlabel.h - netlink interface for address labels
3 *
4 * Copyright (C)2007 USAGI/WIDE Project, All Rights Reserved.
5 *
6 * Authors:
7 * YOSHIFUJI Hideaki @ USAGI/WIDE <yoshfuji@linux-ipv6.org>
8 */
9
10#ifndef __LINUX_IF_ADDRLABEL_H
11#define __LINUX_IF_ADDRLABEL_H
12
13struct ifaddrlblmsg
14{
15 __u8 ifal_family; /* Address family */
16 __u8 __ifal_reserved; /* Reserved */
17 __u8 ifal_prefixlen; /* Prefix length */
18 __u8 ifal_flags; /* Flags */
19 __u32 ifal_index; /* Link index */
20 __u32 ifal_seq; /* sequence number */
21};
22
23enum
24{
25 IFAL_ADDRESS = 1,
26 IFAL_LABEL = 2,
27 __IFAL_MAX
28};
29
30#define IFAL_MAX (__IFAL_MAX - 1)
31
32#endif
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index 4e81836191df..e20dcc89a836 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -100,6 +100,13 @@ enum {
100 RTM_NEWNDUSEROPT = 68, 100 RTM_NEWNDUSEROPT = 68,
101#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT 101#define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
102 102
103 RTM_NEWADDRLABEL = 72,
104#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
105 RTM_DELADDRLABEL,
106#define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
107 RTM_GETADDRLABEL,
108#define RTM_GETADDRLABEL RTM_GETADDRLABEL
109
103 __RTM_MAX, 110 __RTM_MAX,
104#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1) 111#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
105}; 112};
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index 33b593e17441..bccc2feb99da 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -84,6 +84,14 @@ extern void addrconf_leave_solict(struct inet6_dev *idev,
84 struct in6_addr *addr); 84 struct in6_addr *addr);
85 85
86/* 86/*
87 * IPv6 Address Label subsystem (addrlabel.c)
88 */
89extern int ipv6_addr_label_init(void);
90extern void ipv6_addr_label_rtnl_register(void);
91extern u32 ipv6_addr_label(const struct in6_addr *addr,
92 int type, int ifindex);
93
94/*
87 * multicast prototypes (mcast.c) 95 * multicast prototypes (mcast.c)
88 */ 96 */
89extern int ipv6_sock_mc_join(struct sock *sk, int ifindex, 97extern int ipv6_sock_mc_join(struct sock *sk, int ifindex,