blob: 358fb86f57eb952816bc76736b7b85644dd77184 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _NET_IP6_TUNNEL_H
2#define _NET_IP6_TUNNEL_H
3
4#include <linux/ipv6.h>
5#include <linux/netdevice.h>
6#include <linux/ip6_tunnel.h>
7
8/* capable of sending packets */
9#define IP6_TNL_F_CAP_XMIT 0x10000
10/* capable of receiving packets */
11#define IP6_TNL_F_CAP_RCV 0x20000
Ville Nuorvalad0087b22012-06-28 18:15:52 +000012/* determine capability on a per-packet basis */
13#define IP6_TNL_F_CAP_PER_PACKET 0x40000
Linus Torvalds1da177e2005-04-16 15:20:36 -070014
Linus Torvalds1da177e2005-04-16 15:20:36 -070015/* IPv6 tunnel */
16
17struct ip6_tnl {
Eric Dumazet6f0bcf12010-10-24 21:33:16 +000018 struct ip6_tnl __rcu *next; /* next tunnel in list */
Linus Torvalds1da177e2005-04-16 15:20:36 -070019 struct net_device *dev; /* virtual device associated with tunnel */
Joe Perchesf4ab2f722007-12-20 13:56:32 -080020 struct ip6_tnl_parm parms; /* tunnel configuration parameters */
Linus Torvalds1da177e2005-04-16 15:20:36 -070021 struct flowi fl; /* flowi template for xmit */
22 struct dst_entry *dst_cache; /* cached dst */
23 u32 dst_cookie;
24};
25
26/* Tunnel encapsulation limit destination sub-option */
27
28struct ipv6_tlv_tnl_enc_lim {
29 __u8 type; /* type-code for option */
30 __u8 length; /* option length */
31 __u8 encap_limit; /* tunnel encapsulation limit */
Eric Dumazetbc105022010-06-03 03:21:52 -070032} __packed;
Linus Torvalds1da177e2005-04-16 15:20:36 -070033
34#endif