linux/net/netfilter/nfnetlink_acct.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * (C) 2011 Pablo Neira Ayuso <[email protected]>
 * (C) 2011 Intra2net AG <https://www.intra2net.com>
 */
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <linux/atomic.h>
#include <linux/refcount.h>
#include <linux/netlink.h>
#include <linux/rculist.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <net/netlink.h>
#include <net/sock.h>
#include <net/netns/generic.h>

#include <linux/netfilter.h>
#include <linux/netfilter/nfnetlink.h>
#include <linux/netfilter/nfnetlink_acct.h>

MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_DESCRIPTION();

struct nf_acct {};

struct nfacct_filter {};

struct nfnl_acct_net {};

static unsigned int nfnl_acct_net_id __read_mostly;

static inline struct nfnl_acct_net *nfnl_acct_pernet(struct net *net)
{}

#define NFACCT_F_QUOTA
#define NFACCT_OVERQUOTA_BIT

static int nfnl_acct_new(struct sk_buff *skb, const struct nfnl_info *info,
			 const struct nlattr * const tb[])
{}

static int
nfnl_acct_fill_info(struct sk_buff *skb, u32 portid, u32 seq, u32 type,
		   int event, struct nf_acct *acct)
{}

static int
nfnl_acct_dump(struct sk_buff *skb, struct netlink_callback *cb)
{}

static int nfnl_acct_done(struct netlink_callback *cb)
{}

static const struct nla_policy filter_policy[NFACCT_FILTER_MAX + 1] =;

static int nfnl_acct_start(struct netlink_callback *cb)
{}

static int nfnl_acct_get(struct sk_buff *skb, const struct nfnl_info *info,
			 const struct nlattr * const tb[])
{}

/* try to delete object, fail if it is still in use. */
static int nfnl_acct_try_del(struct nf_acct *cur)
{}

static int nfnl_acct_del(struct sk_buff *skb, const struct nfnl_info *info,
			 const struct nlattr * const tb[])
{}

static const struct nla_policy nfnl_acct_policy[NFACCT_MAX+1] =;

static const struct nfnl_callback nfnl_acct_cb[NFNL_MSG_ACCT_MAX] =;

static const struct nfnetlink_subsystem nfnl_acct_subsys =;

MODULE_ALIAS_NFNL_SUBSYS();

struct nf_acct *nfnl_acct_find_get(struct net *net, const char *acct_name)
{}
EXPORT_SYMBOL_GPL();

void nfnl_acct_put(struct nf_acct *acct)
{}
EXPORT_SYMBOL_GPL();

void nfnl_acct_update(const struct sk_buff *skb, struct nf_acct *nfacct)
{}
EXPORT_SYMBOL_GPL();

static void nfnl_overquota_report(struct net *net, struct nf_acct *nfacct)
{}

int nfnl_acct_overquota(struct net *net, struct nf_acct *nfacct)
{}
EXPORT_SYMBOL_GPL();

static int __net_init nfnl_acct_net_init(struct net *net)
{}

static void __net_exit nfnl_acct_net_exit(struct net *net)
{}

static struct pernet_operations nfnl_acct_ops =;

static int __init nfnl_acct_init(void)
{}

static void __exit nfnl_acct_exit(void)
{}

module_init();
module_exit(nfnl_acct_exit);