summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTemplin, Fred L <Fred.L.Templin@boeing.com>2008-03-12 01:35:59 +0300
committerYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2008-04-03 05:05:58 +0400
commitfadf6bf06069138f8e97c9a963be38348ba2708b (patch)
treea21470d3db41e5969143f5cd272bc6270dcb384a /include
parentf0bdb7ba5af5a7028479e9067ee74e9d66eea6df (diff)
downloadlinux-fadf6bf06069138f8e97c9a963be38348ba2708b.tar.xz
[IPV6] SIT: Add PRL management for ISATAP.
This patch updates the Linux the Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) implementation. It places the ISATAP potential router list (PRL) in the kernel and adds three new private ioctls for PRL management. [Add several changes of structure name, constant names etc. - yoshfuji] Signed-off-by: Fred L. Templin <fred.l.templin@boeing.com> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/if_tunnel.h18
-rw-r--r--include/linux/skbuff.h3
-rw-r--r--include/net/ipip.h7
-rw-r--r--include/net/ndisc.h9
4 files changed, 33 insertions, 4 deletions
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h
index 228eb4eb3129..f20c224d544c 100644
--- a/include/linux/if_tunnel.h
+++ b/include/linux/if_tunnel.h
@@ -7,6 +7,9 @@
#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
#define SIOCDELTUNNEL (SIOCDEVPRIVATE + 2)
#define SIOCCHGTUNNEL (SIOCDEVPRIVATE + 3)
+#define SIOCADDPRL (SIOCDEVPRIVATE + 5)
+#define SIOCDELPRL (SIOCDEVPRIVATE + 6)
+#define SIOCCHGPRL (SIOCDEVPRIVATE + 7)
#define GRE_CSUM __constant_htons(0x8000)
#define GRE_ROUTING __constant_htons(0x4000)
@@ -17,9 +20,6 @@
#define GRE_FLAGS __constant_htons(0x00F8)
#define GRE_VERSION __constant_htons(0x0007)
-/* i_flags values for SIT mode */
-#define SIT_ISATAP 0x0001
-
struct ip_tunnel_parm
{
char name[IFNAMSIZ];
@@ -31,4 +31,16 @@ struct ip_tunnel_parm
struct iphdr iph;
};
+/* SIT-mode i_flags */
+#define SIT_ISATAP 0x0001
+
+struct ip_tunnel_prl {
+ __be32 addr;
+ __u16 flags;
+ __u16 __reserved;
+};
+
+/* PRL flags */
+#define PRL_DEFAULT 0x0001
+
#endif /* _IF_TUNNEL_H_ */
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index ff72145d5d9e..e10e55c9b081 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -313,7 +313,8 @@ struct sk_buff {
__u16 tc_verd; /* traffic control verdict */
#endif
#endif
- /* 2 byte hole */
+ __u8 ndisc_nodetype:2;
+ /* 14 bit hole */
#ifdef CONFIG_NET_DMA
dma_cookie_t dma_cookie;
diff --git a/include/net/ipip.h b/include/net/ipip.h
index 549e132bca9c..205536a014e8 100644
--- a/include/net/ipip.h
+++ b/include/net/ipip.h
@@ -24,6 +24,13 @@ struct ip_tunnel
int mlink;
struct ip_tunnel_parm parms;
+ struct ip_tunnel_prl_entry *prl; /* potential router list */
+};
+
+struct ip_tunnel_prl_entry
+{
+ struct ip_tunnel_prl_entry *next;
+ struct ip_tunnel_prl entry;
};
#define IPTUNNEL_XMIT() do { \
diff --git a/include/net/ndisc.h b/include/net/ndisc.h
index 5aedf324de66..9f2bae68d28c 100644
--- a/include/net/ndisc.h
+++ b/include/net/ndisc.h
@@ -12,6 +12,15 @@
#define NDISC_REDIRECT 137
/*
+ * Router type: cross-layer information from link-layer to
+ * IPv6 layer reported by certain link types (e.g., RFC4214).
+ */
+#define NDISC_NODETYPE_UNSPEC 0 /* unspecified (default) */
+#define NDISC_NODETYPE_HOST 1 /* host or unauthorized router */
+#define NDISC_NODETYPE_NODEFAULT 2 /* non-default router */
+#define NDISC_NODETYPE_DEFAULT 3 /* default router */
+
+/*
* ndisc options
*/