]> git.ipfire.org Git - thirdparty/kernel/linux.git/blame - include/net/netfilter/nf_tables_core.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[thirdparty/kernel/linux.git] / include / net / netfilter / nf_tables_core.h
CommitLineData
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
5extern struct nft_expr_type nft_imm_type;
6extern struct nft_expr_type nft_cmp_type;
7extern struct nft_expr_type nft_lookup_type;
8extern struct nft_expr_type nft_bitwise_type;
9extern struct nft_expr_type nft_byteorder_type;
10extern struct nft_expr_type nft_payload_type;
11extern struct nft_expr_type nft_dynset_type;
12extern struct nft_expr_type nft_range_type;
13
5eccdfaa
JP
14int nf_tables_core_module_init(void);
15void nf_tables_core_module_exit(void);
96518518 16
cb7dbfd0
PM
17struct 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 */
27static 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
33extern const struct nft_expr_ops nft_cmp_fast_ops;
34
c29b72e0
PM
35struct 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
42struct 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 52extern const struct nft_expr_ops nft_payload_fast_ops;
9f08ea84
PNA
53
54extern struct static_key_false nft_counters_enabled;
e639f7ab 55extern struct static_key_false nft_trace_enabled;
c29b72e0 56
96518518 57#endif /* _NET_NF_TABLES_CORE_H */