Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
f6d0cbcf FW |
2 | #ifndef _NFT_FIB_H_ |
3 | #define _NFT_FIB_H_ | |
4 | ||
a1b2f04e JS |
5 | #include <net/netfilter/nf_tables.h> |
6 | ||
f6d0cbcf | 7 | struct nft_fib { |
345023b0 | 8 | u8 dreg; |
f6d0cbcf FW |
9 | u8 result; |
10 | u32 flags; | |
11 | }; | |
12 | ||
13 | extern const struct nla_policy nft_fib_policy[]; | |
14 | ||
6443ebc3 LZ |
15 | static inline bool |
16 | nft_fib_is_loopback(const struct sk_buff *skb, const struct net_device *in) | |
17 | { | |
18 | return skb->pkt_type == PACKET_LOOPBACK || in->flags & IFF_LOOPBACK; | |
19 | } | |
20 | ||
f6d0cbcf FW |
21 | int nft_fib_dump(struct sk_buff *skb, const struct nft_expr *expr); |
22 | int nft_fib_init(const struct nft_ctx *ctx, const struct nft_expr *expr, | |
23 | const struct nlattr * const tb[]); | |
24 | int nft_fib_validate(const struct nft_ctx *ctx, const struct nft_expr *expr, | |
25 | const struct nft_data **data); | |
26 | ||
27 | ||
28 | void nft_fib4_eval_type(const struct nft_expr *expr, struct nft_regs *regs, | |
29 | const struct nft_pktinfo *pkt); | |
30 | void nft_fib4_eval(const struct nft_expr *expr, struct nft_regs *regs, | |
31 | const struct nft_pktinfo *pkt); | |
32 | ||
33 | void nft_fib6_eval_type(const struct nft_expr *expr, struct nft_regs *regs, | |
34 | const struct nft_pktinfo *pkt); | |
35 | void nft_fib6_eval(const struct nft_expr *expr, struct nft_regs *regs, | |
36 | const struct nft_pktinfo *pkt); | |
37 | ||
055c4b34 | 38 | void nft_fib_store_result(void *reg, const struct nft_fib *priv, |
e633508a | 39 | const struct net_device *dev); |
f6d0cbcf | 40 | #endif |