#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/netlink.h>
#include <linux/inetdevice.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/rcupdate.h>
#include <linux/export.h>
#include <net/inet_dscp.h>
#include <net/ip.h>
#include <net/route.h>
#include <net/tcp.h>
#include <net/ip_fib.h>
#include <net/nexthop.h>
#include <net/fib_rules.h>
#include <linux/indirect_call_wrapper.h>
struct fib4_rule { … };
static bool fib4_rule_matchall(const struct fib_rule *rule)
{ … }
bool fib4_rule_default(const struct fib_rule *rule)
{ … }
EXPORT_SYMBOL_GPL(…);
int fib4_rules_dump(struct net *net, struct notifier_block *nb,
struct netlink_ext_ack *extack)
{ … }
unsigned int fib4_rules_seq_read(struct net *net)
{ … }
int __fib_lookup(struct net *net, struct flowi4 *flp,
struct fib_result *res, unsigned int flags)
{ … }
EXPORT_SYMBOL_GPL(…);
INDIRECT_CALLABLE_SCOPE int fib4_rule_action(struct fib_rule *rule,
struct flowi *flp, int flags,
struct fib_lookup_arg *arg)
{ … }
INDIRECT_CALLABLE_SCOPE bool fib4_rule_suppress(struct fib_rule *rule,
int flags,
struct fib_lookup_arg *arg)
{ … }
INDIRECT_CALLABLE_SCOPE int fib4_rule_match(struct fib_rule *rule,
struct flowi *fl, int flags)
{ … }
static struct fib_table *fib_empty_table(struct net *net)
{ … }
static int fib4_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
struct fib_rule_hdr *frh,
struct nlattr **tb,
struct netlink_ext_ack *extack)
{ … }
static int fib4_rule_delete(struct fib_rule *rule)
{ … }
static int fib4_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
struct nlattr **tb)
{ … }
static int fib4_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
struct fib_rule_hdr *frh)
{ … }
static size_t fib4_rule_nlmsg_payload(struct fib_rule *rule)
{ … }
static void fib4_rule_flush_cache(struct fib_rules_ops *ops)
{ … }
static const struct fib_rules_ops __net_initconst fib4_rules_ops_template = …;
static int fib_default_rules_init(struct fib_rules_ops *ops)
{ … }
int __net_init fib4_rules_init(struct net *net)
{ … }
void __net_exit fib4_rules_exit(struct net *net)
{ … }