#include <linux/types.h>
#include <linux/ip.h>
#include <linux/netfilter.h>
#include <linux/module.h>
#include <linux/rcupdate.h>
#include <linux/skbuff.h>
#include <net/netns/generic.h>
#include <net/route.h>
#include <net/ip.h>
#include <linux/netfilter_bridge.h>
#include <linux/netfilter_ipv4.h>
#include <net/netfilter/ipv4/nf_defrag_ipv4.h>
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
#include <net/netfilter/nf_conntrack.h>
#endif
#include <net/netfilter/nf_conntrack_zones.h>
static DEFINE_MUTEX(defrag4_mutex);
static int nf_ct_ipv4_gather_frags(struct net *net, struct sk_buff *skb,
u_int32_t user)
{ … }
static enum ip_defrag_users nf_ct_defrag_user(unsigned int hooknum,
struct sk_buff *skb)
{ … }
static unsigned int ipv4_conntrack_defrag(void *priv,
struct sk_buff *skb,
const struct nf_hook_state *state)
{ … }
static const struct nf_hook_ops ipv4_defrag_ops[] = …;
static void __net_exit defrag4_net_exit(struct net *net)
{ … }
static const struct nf_defrag_hook defrag_hook = …;
static struct pernet_operations defrag4_net_ops = …;
static int __init nf_defrag_init(void)
{ … }
static void __exit nf_defrag_fini(void)
{ … }
int nf_defrag_ipv4_enable(struct net *net)
{ … }
EXPORT_SYMBOL_GPL(…);
void nf_defrag_ipv4_disable(struct net *net)
{ … }
EXPORT_SYMBOL_GPL(…);
module_init(…) …;
module_exit(nf_defrag_fini);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;