Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
ip6_tunnel.c File Reference
#include <linux/module.h>
#include <linux/capability.h>
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/sockios.h>
#include <linux/icmp.h>
#include <linux/if.h>
#include <linux/in.h>
#include <linux/ip.h>
#include <linux/if_tunnel.h>
#include <linux/net.h>
#include <linux/in6.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h>
#include <linux/icmpv6.h>
#include <linux/init.h>
#include <linux/route.h>
#include <linux/rtnetlink.h>
#include <linux/netfilter_ipv6.h>
#include <linux/slab.h>
#include <linux/hash.h>
#include <asm/uaccess.h>
#include <linux/atomic.h>
#include <net/icmp.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <net/ip6_route.h>
#include <net/addrconf.h>
#include <net/ip6_tunnel.h>
#include <net/xfrm.h>
#include <net/dsfield.h>
#include <net/inet_ecn.h>
#include <net/net_namespace.h>
#include <net/netns/generic.h>

Go to the source code of this file.

Data Structures

struct  ip6_tnl_net
 
struct  pcpu_tstats
 
struct  ipv6_tel_txoption
 

Macros

#define pr_fmt(fmt)   KBUILD_MODNAME ": " fmt
 
#define IP6_TNL_TRACE(x...)   do {;} while(0)
 
#define IPV6_TCLASS_MASK   (IPV6_FLOWINFO_MASK & ~IPV6_FLOWLABEL_MASK)
 
#define IPV6_TCLASS_SHIFT   20
 
#define HASH_SIZE_SHIFT   5
 
#define HASH_SIZE   (1 << HASH_SIZE_SHIFT)
 
#define for_each_ip6_tunnel_rcu(start)   for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))
 

Functions

 MODULE_AUTHOR ("Ville Nuorvala")
 
 MODULE_DESCRIPTION ("IPv6 tunneling device")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_ALIAS_NETDEV ("ip6tnl0")
 
struct pcpu_tstats __attribute__ ((aligned(4 *sizeof(unsigned long))))
 
struct dst_entryip6_tnl_dst_check (struct ip6_tnl *t)
 
 EXPORT_SYMBOL_GPL (ip6_tnl_dst_check)
 
void ip6_tnl_dst_reset (struct ip6_tnl *t)
 
 EXPORT_SYMBOL_GPL (ip6_tnl_dst_reset)
 
void ip6_tnl_dst_store (struct ip6_tnl *t, struct dst_entry *dst)
 
 EXPORT_SYMBOL_GPL (ip6_tnl_dst_store)
 
__u16 ip6_tnl_parse_tlv_enc_lim (struct sk_buff *skb, __u8 *raw)
 
 EXPORT_SYMBOL (ip6_tnl_parse_tlv_enc_lim)
 
__u32 ip6_tnl_get_cap (struct ip6_tnl *t, const struct in6_addr *laddr, const struct in6_addr *raddr)
 
 EXPORT_SYMBOL (ip6_tnl_get_cap)
 
int ip6_tnl_rcv_ctl (struct ip6_tnl *t, const struct in6_addr *laddr, const struct in6_addr *raddr)
 
 EXPORT_SYMBOL_GPL (ip6_tnl_rcv_ctl)
 
int ip6_tnl_xmit_ctl (struct ip6_tnl *t)
 
 EXPORT_SYMBOL_GPL (ip6_tnl_xmit_ctl)
 
 module_init (ip6_tunnel_init)
 
 module_exit (ip6_tunnel_cleanup)
 

Variables

unsigned long rx_packets
 
unsigned long rx_bytes
 
unsigned long tx_packets
 
unsigned long tx_bytes
 
struct ipv6_tel_txoption __attribute__
 

Macro Definition Documentation

#define for_each_ip6_tunnel_rcu (   start)    for (t = rcu_dereference(start); t; t = rcu_dereference(t->next))

ip6_tnl_lookup - fetch tunnel matching the end-point addresses : the address of the tunnel exit-point : the address of the tunnel entry-point

Return: tunnel matching given end-points if found, else fallback tunnel if its device is up, else NULL

Definition at line 171 of file ip6_tunnel.c.

#define HASH_SIZE   (1 << HASH_SIZE_SHIFT)

Definition at line 75 of file ip6_tunnel.c.

#define HASH_SIZE_SHIFT   5

Definition at line 74 of file ip6_tunnel.c.

#define IP6_TNL_TRACE (   x...)    do {;} while(0)

Definition at line 68 of file ip6_tunnel.c.

#define IPV6_TCLASS_MASK   (IPV6_FLOWINFO_MASK & ~IPV6_FLOWLABEL_MASK)

Definition at line 71 of file ip6_tunnel.c.

#define IPV6_TCLASS_SHIFT   20

Definition at line 72 of file ip6_tunnel.c.

#define pr_fmt (   fmt)    KBUILD_MODNAME ": " fmt

Definition at line 21 of file ip6_tunnel.c.

Function Documentation

EXPORT_SYMBOL ( ip6_tnl_parse_tlv_enc_lim  )
EXPORT_SYMBOL ( ip6_tnl_get_cap  )
EXPORT_SYMBOL_GPL ( ip6_tnl_dst_check  )
EXPORT_SYMBOL_GPL ( ip6_tnl_dst_reset  )
EXPORT_SYMBOL_GPL ( ip6_tnl_dst_store  )
EXPORT_SYMBOL_GPL ( ip6_tnl_rcv_ctl  )
EXPORT_SYMBOL_GPL ( ip6_tnl_xmit_ctl  )
struct dst_entry* ip6_tnl_dst_check ( struct ip6_tnl t)
read

Definition at line 129 of file ip6_tunnel.c.

void ip6_tnl_dst_reset ( struct ip6_tnl t)

Definition at line 144 of file ip6_tunnel.c.

void ip6_tnl_dst_store ( struct ip6_tnl t,
struct dst_entry dst 
)

Definition at line 151 of file ip6_tunnel.c.

__u32 ip6_tnl_get_cap ( struct ip6_tnl t,
const struct in6_addr laddr,
const struct in6_addr raddr 
)

Definition at line 699 of file ip6_tunnel.c.

__u16 ip6_tnl_parse_tlv_enc_lim ( struct sk_buff skb,
__u8 raw 
)

parse_tvl_tnl_enc_lim - handle encapsulation limit option : received socket buffer

Return: 0 if none was found, else index to encapsulation limit

Definition at line 380 of file ip6_tunnel.c.

int ip6_tnl_rcv_ctl ( struct ip6_tnl t,
const struct in6_addr laddr,
const struct in6_addr raddr 
)

Definition at line 724 of file ip6_tunnel.c.

int ip6_tnl_xmit_ctl ( struct ip6_tnl t)

Definition at line 867 of file ip6_tunnel.c.

MODULE_ALIAS_NETDEV ( "ip6tnl0"  )
MODULE_AUTHOR ( "Ville Nuorvala"  )
MODULE_DESCRIPTION ( "IPv6 tunneling device )
module_exit ( ip6_tunnel_cleanup  )
module_init ( ip6_tunnel_init  )
MODULE_LICENSE ( "GPL"  )

Variable Documentation

unsigned long rx_bytes

Definition at line 105 of file ip6_tunnel.c.

unsigned long rx_packets

Definition at line 104 of file ip6_tunnel.c.

unsigned long tx_bytes

Definition at line 107 of file ip6_tunnel.c.

unsigned long tx_packets

Definition at line 106 of file ip6_tunnel.c.