]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
96518518 PM |
2 | #ifndef _NET_NF_TABLES_CORE_H |
3 | #define _NET_NF_TABLES_CORE_H | |
4 | ||
4e24877e LZ |
5 | extern struct nft_expr_type nft_imm_type; |
6 | extern struct nft_expr_type nft_cmp_type; | |
7 | extern struct nft_expr_type nft_lookup_type; | |
8 | extern struct nft_expr_type nft_bitwise_type; | |
9 | extern struct nft_expr_type nft_byteorder_type; | |
10 | extern struct nft_expr_type nft_payload_type; | |
11 | extern struct nft_expr_type nft_dynset_type; | |
12 | extern struct nft_expr_type nft_range_type; | |
13 | ||
5eccdfaa JP |
14 | int nf_tables_core_module_init(void); |
15 | void nf_tables_core_module_exit(void); | |
96518518 | 16 | |
cb7dbfd0 PM |
17 | struct nft_cmp_fast_expr { |
18 | u32 data; | |
19 | enum nft_registers sreg:8; | |
20 | u8 len; | |
21 | }; | |
22 | ||
b855d416 PM |
23 | /* Calculate the mask for the nft_cmp_fast expression. On big endian the |
24 | * mask needs to include the *upper* bytes when interpreting that data as | |
25 | * something smaller than the full u32, therefore a cpu_to_le32 is done. | |
26 | */ | |
27 | static inline u32 nft_cmp_fast_mask(unsigned int len) | |
28 | { | |
29 | return cpu_to_le32(~0U >> (FIELD_SIZEOF(struct nft_cmp_fast_expr, | |
30 | data) * BITS_PER_BYTE - len)); | |
31 | } | |
32 | ||
cb7dbfd0 PM |
33 | extern const struct nft_expr_ops nft_cmp_fast_ops; |
34 | ||
c29b72e0 PM |
35 | struct nft_payload { |
36 | enum nft_payload_bases base:8; | |
37 | u8 offset; | |
38 | u8 len; | |
39 | enum nft_registers dreg:8; | |
40 | }; | |
41 | ||
7ec3f7b4 PM |
42 | struct nft_payload_set { |
43 | enum nft_payload_bases base:8; | |
44 | u8 offset; | |
45 | u8 len; | |
46 | enum nft_registers sreg:8; | |
47 | u8 csum_type; | |
48 | u8 csum_offset; | |
18140969 | 49 | u8 csum_flags; |
7ec3f7b4 PM |
50 | }; |
51 | ||
c29b72e0 | 52 | extern const struct nft_expr_ops nft_payload_fast_ops; |
9f08ea84 PNA |
53 | |
54 | extern struct static_key_false nft_counters_enabled; | |
e639f7ab | 55 | extern struct static_key_false nft_trace_enabled; |
c29b72e0 | 56 | |
96518518 | 57 | #endif /* _NET_NF_TABLES_CORE_H */ |