#include <linux/types.h>
#include <linux/skbuff.h>
#include <linux/net.h>
#include <linux/module.h>
#include <linux/mpls.h>
#include <linux/vmalloc.h>
#include <net/ip.h>
#include <net/dst.h>
#include <net/lwtunnel.h>
#include <net/netevent.h>
#include <net/netns/generic.h>
#include <net/ip6_fib.h>
#include <net/route.h>
#include <net/mpls_iptunnel.h>
#include <linux/mpls_iptunnel.h>
#include "internal.h"
static const struct nla_policy mpls_iptunnel_policy[MPLS_IPTUNNEL_MAX + 1] = …;
static unsigned int mpls_encap_size(struct mpls_iptunnel_encap *en)
{ … }
static int mpls_xmit(struct sk_buff *skb)
{ … }
static int mpls_build_state(struct net *net, struct nlattr *nla,
unsigned int family, const void *cfg,
struct lwtunnel_state **ts,
struct netlink_ext_ack *extack)
{ … }
static int mpls_fill_encap_info(struct sk_buff *skb,
struct lwtunnel_state *lwtstate)
{ … }
static int mpls_encap_nlsize(struct lwtunnel_state *lwtstate)
{ … }
static int mpls_encap_cmp(struct lwtunnel_state *a, struct lwtunnel_state *b)
{ … }
static const struct lwtunnel_encap_ops mpls_iptun_ops = …;
static int __init mpls_iptunnel_init(void)
{ … }
module_init(…) …;
static void __exit mpls_iptunnel_exit(void)
{ … }
module_exit(mpls_iptunnel_exit);
MODULE_ALIAS_RTNL_LWT(…);
MODULE_SOFTDEP(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;