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