1288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#ifndef _IP6_TUNNEL_H
2288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define _IP6_TUNNEL_H
3288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA
467881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger#include <linux/types.h>
567881151423f1173ddc31e4f27d736044c2c9a96Stephen Hemminger
6288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define IPV6_TLV_TNL_ENCAP_LIMIT 4
7288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
8288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA
9288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA/* don't add encapsulation limit if one isn't present in inner packet */
10288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define IP6_TNL_F_IGN_ENCAP_LIMIT 0x1
11288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA/* copy the traffic class field from the inner packet */
12288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define IP6_TNL_F_USE_ORIG_TCLASS 0x2
13288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA/* copy the flowlabel from the inner packet */
14288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define IP6_TNL_F_USE_ORIG_FLOWLABEL 0x4
15288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA/* being used for Mobile IPv6 */
16288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define IP6_TNL_F_MIP6_DEV 0x8
17288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA/* copy DSCP from the outer packet */
18288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#define IP6_TNL_F_RCV_DSCP_COPY 0x10
199044a4547d73df5c41fd53c83e5ccc2a59200797Stephen Hemminger/* copy fwmark from inner packet */
209044a4547d73df5c41fd53c83e5ccc2a59200797Stephen Hemminger#define IP6_TNL_F_USE_ORIG_FWMARK 0x20
21288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA
22288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURAstruct ip6_tnl_parm {
23288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	char name[IFNAMSIZ];	/* name of tunnel device */
24288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	int link;		/* ifindex of underlying L2 interface */
25288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	__u8 proto;		/* tunnel protocol */
26288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	__u8 encap_limit;	/* encapsulation limit for tunnel */
27288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	__u8 hop_limit;		/* hop limit for tunnel */
28ead2ba7008c9db02954dae6f180aed8770a0560dStephen Hemminger	__be32 flowinfo;	/* traffic class and flowlabel for tunnel */
29288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	__u32 flags;		/* tunnel flags */
30288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	struct in6_addr laddr;	/* local tunnel end-point address */
31288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA	struct in6_addr raddr;	/* remote tunnel end-point address */
32288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA};
33288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA
34f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemmingerstruct ip6_tnl_parm2 {
35f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	char name[IFNAMSIZ];	/* name of tunnel device */
36f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	int link;		/* ifindex of underlying L2 interface */
37f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__u8 proto;		/* tunnel protocol */
38f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__u8 encap_limit;	/* encapsulation limit for tunnel */
39f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__u8 hop_limit;		/* hop limit for tunnel */
40f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__be32 flowinfo;	/* traffic class and flowlabel for tunnel */
41f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__u32 flags;		/* tunnel flags */
42f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	struct in6_addr laddr;	/* local tunnel end-point address */
43f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	struct in6_addr raddr;	/* remote tunnel end-point address */
44f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger
45f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__be16			i_flags;
46f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__be16			o_flags;
47f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__be32			i_key;
48f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger	__be32			o_key;
49f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger};
50f22640712fe7508df78b0eda397c4bc35a9ce936Stephen Hemminger
51288384f22ffafd2d7d888ee45d8dfcf26d3f2b1cMasahide NAKAMURA#endif
52