diff options
author | Masahide NAKAMURA <nakam@linux-ipv6.org> | 2006-08-23 23:34:26 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 18:07:00 -0400 |
commit | 2b741653b6c824fe7520ee92b6795f11c5f24b24 (patch) | |
tree | eea6f085896ad74e53aa44c00f1b004775e5ef83 | |
parent | e23c7194a8a21e96b99106bdabde94614c4b84d6 (diff) |
[IPV6] MIP6: Add Mobility header definition.
Add Mobility header definition for Mobile IPv6.
Based on MIPL2 kernel patch.
This patch was also written by: Antti Tuominen <anttit@tcs.hut.fi>
Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/in6.h | 1 | ||||
-rw-r--r-- | include/net/flow.h | 9 | ||||
-rw-r--r-- | include/net/ipv6.h | 1 | ||||
-rw-r--r-- | include/net/mip6.h | 23 |
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 | */ | ||
34 | struct 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 | |||
31 | extern int mip6_init(void); | 54 | extern int mip6_init(void); |
32 | extern void mip6_fini(void); | 55 | extern void mip6_fini(void); |
33 | 56 | ||