Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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.
+9 −0
Original line number Original line Diff line number Diff line
@@ -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)));


+1 −0
Original line number Original line Diff line number Diff line
@@ -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


+23 −0
Original line number Original line Diff line number Diff line
@@ -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);