Commit 2b741653 authored by Masahide NAKAMURA's avatar Masahide NAKAMURA Committed by David S. Miller

[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: default avatarMasahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e23c7194
...@@ -134,6 +134,7 @@ struct in6_flowlabel_req ...@@ -134,6 +134,7 @@ struct in6_flowlabel_req
#define IPPROTO_ICMPV6 58 /* ICMPv6 */ #define IPPROTO_ICMPV6 58 /* ICMPv6 */
#define IPPROTO_NONE 59 /* IPv6 no next header */ #define IPPROTO_NONE 59 /* IPv6 no next header */
#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */ #define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
#define IPPROTO_MH 135 /* IPv6 mobility header */
/* /*
* IPv6 TLV options. * IPv6 TLV options.
......
...@@ -72,12 +72,21 @@ struct flowi { ...@@ -72,12 +72,21 @@ struct flowi {
} dnports; } dnports;
__u32 spi; __u32 spi;
#ifdef CONFIG_IPV6_MIP6
struct {
__u8 type;
} mht;
#endif
} uli_u; } uli_u;
#define fl_ip_sport uli_u.ports.sport #define fl_ip_sport uli_u.ports.sport
#define fl_ip_dport uli_u.ports.dport #define fl_ip_dport uli_u.ports.dport
#define fl_icmp_type uli_u.icmpt.type #define fl_icmp_type uli_u.icmpt.type
#define fl_icmp_code uli_u.icmpt.code #define fl_icmp_code uli_u.icmpt.code
#define fl_ipsec_spi uli_u.spi #define fl_ipsec_spi uli_u.spi
#ifdef CONFIG_IPV6_MIP6
#define fl_mh_type uli_u.mht.type
#endif
__u32 secid; /* used by xfrm; see secid.txt */ __u32 secid; /* used by xfrm; see secid.txt */
} __attribute__((__aligned__(BITS_PER_LONG/8))); } __attribute__((__aligned__(BITS_PER_LONG/8)));
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
#define NEXTHDR_ICMP 58 /* ICMP for IPv6. */ #define NEXTHDR_ICMP 58 /* ICMP for IPv6. */
#define NEXTHDR_NONE 59 /* No next header */ #define NEXTHDR_NONE 59 /* No next header */
#define NEXTHDR_DEST 60 /* Destination options header. */ #define NEXTHDR_DEST 60 /* Destination options header. */
#define NEXTHDR_MOBILITY 135 /* Mobility header. */
#define NEXTHDR_MAX 255 #define NEXTHDR_MAX 255
......
...@@ -28,6 +28,29 @@ ...@@ -28,6 +28,29 @@
#define MIP6_OPT_PAD_1 0 #define MIP6_OPT_PAD_1 0
#define MIP6_OPT_PAD_N 1 #define MIP6_OPT_PAD_N 1
/*
* Mobility Header
*/
struct ip6_mh {
__u8 ip6mh_proto;
__u8 ip6mh_hdrlen;
__u8 ip6mh_type;
__u8 ip6mh_reserved;
__u16 ip6mh_cksum;
/* Followed by type specific messages */
__u8 data[0];
} __attribute__ ((__packed__));
#define IP6_MH_TYPE_BRR 0 /* Binding Refresh Request */
#define IP6_MH_TYPE_HOTI 1 /* HOTI Message */
#define IP6_MH_TYPE_COTI 2 /* COTI Message */
#define IP6_MH_TYPE_HOT 3 /* HOT Message */
#define IP6_MH_TYPE_COT 4 /* COT Message */
#define IP6_MH_TYPE_BU 5 /* Binding Update */
#define IP6_MH_TYPE_BACK 6 /* Binding ACK */
#define IP6_MH_TYPE_BERROR 7 /* Binding Error */
#define IP6_MH_TYPE_MAX IP6_MH_TYPE_BERROR
extern int mip6_init(void); extern int mip6_init(void);
extern void mip6_fini(void); extern void mip6_fini(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment