aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/in6.h1
-rw-r--r--include/net/flow.h9
-rw-r--r--include/net/ipv6.h1
-rw-r--r--include/net/mip6.h23
4 files changed, 34 insertions, 0 deletions
diff --git a/include/linux/in6.h b/include/linux/in6.h
index 086ec2ac8c5f..d776829b443f 100644
--- a/include/linux/in6.h
+++ b/include/linux/in6.h
@@ -134,6 +134,7 @@ struct in6_flowlabel_req
134#define IPPROTO_ICMPV6 58 /* ICMPv6 */ 134#define IPPROTO_ICMPV6 58 /* ICMPv6 */
135#define IPPROTO_NONE 59 /* IPv6 no next header */ 135#define IPPROTO_NONE 59 /* IPv6 no next header */
136#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */ 136#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
137#define IPPROTO_MH 135 /* IPv6 mobility header */
137 138
138/* 139/*
139 * IPv6 TLV options. 140 * IPv6 TLV options.
diff --git a/include/net/flow.h b/include/net/flow.h
index 21d988b2058a..e0522914316e 100644
--- a/include/net/flow.h
+++ b/include/net/flow.h
@@ -72,12 +72,21 @@ struct flowi {
72 } dnports; 72 } dnports;
73 73
74 __u32 spi; 74 __u32 spi;
75
76#ifdef CONFIG_IPV6_MIP6
77 struct {
78 __u8 type;
79 } mht;
80#endif
75 } uli_u; 81 } uli_u;
76#define fl_ip_sport uli_u.ports.sport 82#define fl_ip_sport uli_u.ports.sport
77#define fl_ip_dport uli_u.ports.dport 83#define fl_ip_dport uli_u.ports.dport
78#define fl_icmp_type uli_u.icmpt.type 84#define fl_icmp_type uli_u.icmpt.type
79#define fl_icmp_code uli_u.icmpt.code 85#define fl_icmp_code uli_u.icmpt.code
80#define fl_ipsec_spi uli_u.spi 86#define fl_ipsec_spi uli_u.spi
87#ifdef CONFIG_IPV6_MIP6
88#define fl_mh_type uli_u.mht.type
89#endif
81 __u32 secid; /* used by xfrm; see secid.txt */ 90 __u32 secid; /* used by xfrm; see secid.txt */
82} __attribute__((__aligned__(BITS_PER_LONG/8))); 91} __attribute__((__aligned__(BITS_PER_LONG/8)));
83 92
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 8e6ec6063f8c..72bf47b2a4e0 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -40,6 +40,7 @@
40#define NEXTHDR_ICMP 58 /* ICMP for IPv6. */ 40#define NEXTHDR_ICMP 58 /* ICMP for IPv6. */
41#define NEXTHDR_NONE 59 /* No next header */ 41#define NEXTHDR_NONE 59 /* No next header */
42#define NEXTHDR_DEST 60 /* Destination options header. */ 42#define NEXTHDR_DEST 60 /* Destination options header. */
43#define NEXTHDR_MOBILITY 135 /* Mobility header. */
43 44
44#define NEXTHDR_MAX 255 45#define NEXTHDR_MAX 255
45 46
diff --git a/include/net/mip6.h b/include/net/mip6.h
index 42b65bace122..fd43178faace 100644
--- a/include/net/mip6.h
+++ b/include/net/mip6.h
@@ -28,6 +28,29 @@
28#define MIP6_OPT_PAD_1 0 28#define MIP6_OPT_PAD_1 0
29#define MIP6_OPT_PAD_N 1 29#define MIP6_OPT_PAD_N 1
30 30
31/*
32 * Mobility Header
33 */
34struct ip6_mh {
35 __u8 ip6mh_proto;
36 __u8 ip6mh_hdrlen;
37 __u8 ip6mh_type;
38 __u8 ip6mh_reserved;
39 __u16 ip6mh_cksum;
40 /* Followed by type specific messages */
41 __u8 data[0];
42} __attribute__ ((__packed__));
43
44#define IP6_MH_TYPE_BRR 0 /* Binding Refresh Request */
45#define IP6_MH_TYPE_HOTI 1 /* HOTI Message */
46#define IP6_MH_TYPE_COTI 2 /* COTI Message */
47#define IP6_MH_TYPE_HOT 3 /* HOT Message */
48#define IP6_MH_TYPE_COT 4 /* COT Message */
49#define IP6_MH_TYPE_BU 5 /* Binding Update */
50#define IP6_MH_TYPE_BACK 6 /* Binding ACK */
51#define IP6_MH_TYPE_BERROR 7 /* Binding Error */
52#define IP6_MH_TYPE_MAX IP6_MH_TYPE_BERROR
53
31extern int mip6_init(void); 54extern int mip6_init(void);
32extern void mip6_fini(void); 55extern void mip6_fini(void);
33 56