#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/udp.h>
static struct sk_buff *esp4_gro_receive(struct list_head *head,
struct sk_buff *skb)
{ … }
static void esp4_gso_encap(struct xfrm_state *x, struct sk_buff *skb)
{ … }
static struct sk_buff *xfrm4_tunnel_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *xfrm4_transport_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *xfrm4_beet_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *xfrm4_outer_mode_gso_segment(struct xfrm_state *x,
struct sk_buff *skb,
netdev_features_t features)
{ … }
static struct sk_buff *esp4_gso_segment(struct sk_buff *skb,
netdev_features_t features)
{ … }
static int esp_input_tail(struct xfrm_state *x, struct sk_buff *skb)
{ … }
static int esp_xmit(struct xfrm_state *x, struct sk_buff *skb, netdev_features_t features)
{ … }
static const struct net_offload esp4_offload = …;
static const struct xfrm_type_offload esp_type_offload = …;
static int __init esp4_offload_init(void)
{ … }
static void __exit esp4_offload_exit(void)
{ … }
module_init(…) …;
module_exit(esp4_offload_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_ALIAS_XFRM_OFFLOAD_TYPE(…);
MODULE_DESCRIPTION(…) …;