#define pr_fmt(fmt) …
#include <linux/module.h>
#include <net/ip.h>
#include <net/xfrm.h>
#include <net/ipcomp.h>
#include <linux/crypto.h>
#include <linux/err.h>
#include <linux/pfkeyv2.h>
#include <linux/random.h>
#include <linux/percpu.h>
#include <linux/smp.h>
#include <linux/list.h>
#include <linux/vmalloc.h>
#include <linux/rtnetlink.h>
#include <net/ip6_route.h>
#include <net/icmp.h>
#include <net/ipv6.h>
#include <net/protocol.h>
#include <linux/ipv6.h>
#include <linux/icmpv6.h>
#include <linux/mutex.h>
static int ipcomp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
u8 type, u8 code, int offset, __be32 info)
{ … }
static struct xfrm_state *ipcomp6_tunnel_create(struct xfrm_state *x)
{ … }
static int ipcomp6_tunnel_attach(struct xfrm_state *x)
{ … }
static int ipcomp6_init_state(struct xfrm_state *x,
struct netlink_ext_ack *extack)
{ … }
static int ipcomp6_rcv_cb(struct sk_buff *skb, int err)
{ … }
static const struct xfrm_type ipcomp6_type = …;
static struct xfrm6_protocol ipcomp6_protocol = …;
static int __init ipcomp6_init(void)
{ … }
static void __exit ipcomp6_fini(void)
{ … }
module_init(…) …;
module_exit(ipcomp6_fini);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_ALIAS_XFRM_TYPE(…);