linux/net/netfilter/nf_tables_core.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2008 Patrick McHardy <[email protected]>
 *
 * Development of this code funded by Astaro AG (http://www.astaro.com/)
 */

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/rculist.h>
#include <linux/skbuff.h>
#include <linux/netlink.h>
#include <linux/netfilter.h>
#include <linux/static_key.h>
#include <linux/netfilter/nfnetlink.h>
#include <linux/netfilter/nf_tables.h>
#include <net/netfilter/nf_tables_core.h>
#include <net/netfilter/nf_tables.h>
#include <net/netfilter/nf_log.h>
#include <net/netfilter/nft_meta.h>

#if defined(CONFIG_MITIGATION_RETPOLINE) && defined(CONFIG_X86)

static struct static_key_false nf_tables_skip_direct_calls;

static bool nf_skip_indirect_calls(void)
{}

static void __init nf_skip_indirect_calls_enable(void)
{}
#else
static inline bool nf_skip_indirect_calls(void) { return false; }

static inline void nf_skip_indirect_calls_enable(void) { }
#endif

static noinline void __nft_trace_packet(const struct nft_pktinfo *pkt,
					const struct nft_verdict *verdict,
					const struct nft_rule_dp *rule,
					struct nft_traceinfo *info,
					enum nft_trace_types type)
{}

static inline void nft_trace_packet(const struct nft_pktinfo *pkt,
				    struct nft_verdict *verdict,
				    struct nft_traceinfo *info,
				    const struct nft_rule_dp *rule,
				    enum nft_trace_types type)
{}

static inline void nft_trace_copy_nftrace(const struct nft_pktinfo *pkt,
					  struct nft_traceinfo *info)
{}

static void nft_bitwise_fast_eval(const struct nft_expr *expr,
				  struct nft_regs *regs)
{}

static void nft_cmp_fast_eval(const struct nft_expr *expr,
			      struct nft_regs *regs)
{}

static void nft_cmp16_fast_eval(const struct nft_expr *expr,
				struct nft_regs *regs)
{}

static noinline void __nft_trace_verdict(const struct nft_pktinfo *pkt,
					 struct nft_traceinfo *info,
					 const struct nft_rule_dp *rule,
					 const struct nft_regs *regs)
{}

static inline void nft_trace_verdict(const struct nft_pktinfo *pkt,
				     struct nft_traceinfo *info,
				     const struct nft_rule_dp *rule,
				     const struct nft_regs *regs)
{}

static bool nft_payload_fast_eval(const struct nft_expr *expr,
				  struct nft_regs *regs,
				  const struct nft_pktinfo *pkt)
{}

DEFINE_STATIC_KEY_FALSE(nft_counters_enabled);

static noinline void nft_update_chain_stats(const struct nft_chain *chain,
					    const struct nft_pktinfo *pkt)
{}

struct nft_jumpstack {};

static void expr_call_ops_eval(const struct nft_expr *expr,
			       struct nft_regs *regs,
			       struct nft_pktinfo *pkt)
{}

#define nft_rule_expr_first(rule)
#define nft_rule_expr_next(expr)
#define nft_rule_expr_last(rule)

#define nft_rule_dp_for_each_expr(expr, last, rule)

unsigned int
nft_do_chain(struct nft_pktinfo *pkt, void *priv)
{}
EXPORT_SYMBOL_GPL();

static struct nft_expr_type *nft_basic_types[] =;

static struct nft_object_type *nft_basic_objects[] =;

int __init nf_tables_core_module_init(void)
{}

void nf_tables_core_module_exit(void)
{}