#define pr_fmt(fmt) …
#include <crypto/hash.h>
#include <crypto/utils.h>
#include <linux/err.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <net/ip.h>
#include <net/xfrm.h>
#include <net/ah.h>
#include <linux/crypto.h>
#include <linux/pfkeyv2.h>
#include <linux/scatterlist.h>
#include <net/icmp.h>
#include <net/protocol.h>
struct ah_skb_cb { … };
#define AH_SKB_CB(__skb) …
static void *ah_alloc_tmp(struct crypto_ahash *ahash, int nfrags,
unsigned int size)
{ … }
static inline u8 *ah_tmp_auth(void *tmp, unsigned int offset)
{ … }
static inline u8 *ah_tmp_icv(void *tmp, unsigned int offset)
{ … }
static inline struct ahash_request *ah_tmp_req(struct crypto_ahash *ahash,
u8 *icv)
{ … }
static inline struct scatterlist *ah_req_sg(struct crypto_ahash *ahash,
struct ahash_request *req)
{ … }
static int ip_clear_mutable_options(const struct iphdr *iph, __be32 *daddr)
{ … }
static void ah_output_done(void *data, int err)
{ … }
static int ah_output(struct xfrm_state *x, struct sk_buff *skb)
{ … }
static void ah_input_done(void *data, int err)
{ … }
static int ah_input(struct xfrm_state *x, struct sk_buff *skb)
{ … }
static int ah4_err(struct sk_buff *skb, u32 info)
{ … }
static int ah_init_state(struct xfrm_state *x, struct netlink_ext_ack *extack)
{ … }
static void ah_destroy(struct xfrm_state *x)
{ … }
static int ah4_rcv_cb(struct sk_buff *skb, int err)
{ … }
static const struct xfrm_type ah_type = …;
static struct xfrm4_protocol ah4_protocol = …;
static int __init ah4_init(void)
{ … }
static void __exit ah4_fini(void)
{ … }
module_init(…) …;
module_exit(ah4_fini);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS_XFRM_TYPE(…);