linux/include/net/ip6_tunnel.h
<<
>>
Prefs
   1#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#define IP6TUNNEL_ERR_TIMEO (30*HZ)
   9
  10/* capable of sending packets */
  11#define IP6_TNL_F_CAP_XMIT 0x10000
  12/* capable of receiving packets */
  13#define IP6_TNL_F_CAP_RCV 0x20000
  14/* determine capability on a per-packet basis */
  15#define IP6_TNL_F_CAP_PER_PACKET 0x40000
  16
  17struct __ip6_tnl_parm {
  18        char name[IFNAMSIZ];    /* name of tunnel device */
  19        int link;               /* ifindex of underlying L2 interface */
  20        __u8 proto;             /* tunnel protocol */
  21        __u8 encap_limit;       /* encapsulation limit for tunnel */
  22        __u8 hop_limit;         /* hop limit for tunnel */
  23        __be32 flowinfo;        /* traffic class and flowlabel for tunnel */
  24        __u32 flags;            /* tunnel flags */
  25        struct in6_addr laddr;  /* local tunnel end-point address */
  26        struct in6_addr raddr;  /* remote tunnel end-point address */
  27
  28        __be16                  i_flags;
  29        __be16                  o_flags;
  30        __be32                  i_key;
  31        __be32                  o_key;
  32};
  33
  34/* IPv6 tunnel */
  35struct ip6_tnl {
  36        struct ip6_tnl __rcu *next;     /* next tunnel in list */
  37        struct net_device *dev; /* virtual device associated with tunnel */
  38        struct __ip6_tnl_parm parms;    /* tunnel configuration parameters */
  39        struct flowi fl;        /* flowi template for xmit */
  40        struct dst_entry *dst_cache;    /* cached dst */
  41        u32 dst_cookie;
  42
  43        int err_count;
  44        unsigned long err_time;
  45
  46        /* These fields used only by GRE */
  47        __u32 i_seqno;  /* The last seen seqno  */
  48        __u32 o_seqno;  /* The last output seqno */
  49        int hlen;       /* Precalculated GRE header length */
  50        int mlink;
  51};
  52
  53/* Tunnel encapsulation limit destination sub-option */
  54
  55struct ipv6_tlv_tnl_enc_lim {
  56        __u8 type;              /* type-code for option         */
  57        __u8 length;            /* option length                */
  58        __u8 encap_limit;       /* tunnel encapsulation limit   */
  59} __packed;
  60
  61struct dst_entry *ip6_tnl_dst_check(struct ip6_tnl *t);
  62void ip6_tnl_dst_reset(struct ip6_tnl *t);
  63void ip6_tnl_dst_store(struct ip6_tnl *t, struct dst_entry *dst);
  64int ip6_tnl_rcv_ctl(struct ip6_tnl *t, const struct in6_addr *laddr,
  65                const struct in6_addr *raddr);
  66int ip6_tnl_xmit_ctl(struct ip6_tnl *t);
  67__u16 ip6_tnl_parse_tlv_enc_lim(struct sk_buff *skb, __u8 *raw);
  68__u32 ip6_tnl_get_cap(struct ip6_tnl *t, const struct in6_addr *laddr,
  69                             const struct in6_addr *raddr);
  70
  71#endif
  72
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.