#include <linux/skbuff.h>
#include <linux/init.h>
#include <net/protocol.h>
#include <crypto/aead.h>
#include <crypto/authenc.h>
#include <linux/err.h>
#include <linux/module.h>
#include <net/gro.h>
#include <net/gso.h>
#include <net/ip.h>
#include <net/xfrm.h>
#include <net/esp.h>
#include <linux/scatterlist.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <net/ip6_route.h>
#include <net/ipv6.h>
#include <linux/icmpv6.h>
static __u16 esp6_nexthdr_esp_offset(struct ipv6hdr *ipv6_hdr, int nhlen)
{ … }
static struct sk_buff *esp6_gro_receive(struct list_head *head,
struct sk_buff *skb)
{ … }
static void esp6_gso_encap(struct xfrm_state *x, struct sk_buff *skb)
{ … }
static struct sk_buff *xfrm6_tunnel_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *xfrm6_transport_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *xfrm6_beet_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *xfrm6_outer_mode_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *esp6_gso_segment(struct sk_buff *skb,
netdev_features_t features)
{ … }
static int esp6_input_tail(struct xfrm_state *x, struct sk_buff *skb)
{ … }
static int esp6_xmit(struct xfrm_state *x, struct sk_buff *skb, netdev_features_t features)
{ … }
static const struct net_offload esp6_offload = …;
static const struct xfrm_type_offload esp6_type_offload = …;
static int __init esp6_offload_init(void)
{ … }
static void __exit esp6_offload_exit(void)
{ … }
module_init(…) …;
module_exit(esp6_offload_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_ALIAS_XFRM_OFFLOAD_TYPE(…);
MODULE_DESCRIPTION(…) …;