#include <linux/errno.h>
#include <linux/ip.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/socket.h>
#include <linux/types.h>
#include <net/checksum.h>
#include <net/dst_cache.h>
#include <net/ip.h>
#include <net/ip6_fib.h>
#include <net/ip6_route.h>
#include <net/lwtunnel.h>
#include <net/protocol.h>
#include <uapi/linux/ila.h>
#include "ila.h"
struct ila_lwt { … };
static inline struct ila_lwt *ila_lwt_lwtunnel(
struct lwtunnel_state *lwt)
{ … }
static inline struct ila_params *ila_params_lwtunnel(
struct lwtunnel_state *lwt)
{ … }
static int ila_output(struct net *net, struct sock *sk, struct sk_buff *skb)
{ … }
static int ila_input(struct sk_buff *skb)
{ … }
static const struct nla_policy ila_nl_policy[ILA_ATTR_MAX + 1] = …;
static int ila_build_state(struct net *net, struct nlattr *nla,
unsigned int family, const void *cfg,
struct lwtunnel_state **ts,
struct netlink_ext_ack *extack)
{ … }
static void ila_destroy_state(struct lwtunnel_state *lwt)
{ … }
static int ila_fill_encap_info(struct sk_buff *skb,
struct lwtunnel_state *lwtstate)
{ … }
static int ila_encap_nlsize(struct lwtunnel_state *lwtstate)
{ … }
static int ila_encap_cmp(struct lwtunnel_state *a, struct lwtunnel_state *b)
{ … }
static const struct lwtunnel_encap_ops ila_encap_ops = …;
int ila_lwt_init(void)
{ … }
void ila_lwt_fini(void)
{ … }