1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _NET_NF_TABLES_CORE_H 3 #define _NET_NF_TABLES_CORE_H 4 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 14 int nf_tables_core_module_init(void); 15 void nf_tables_core_module_exit(void); 16 17 struct nft_cmp_fast_expr { 18 u32 data; 19 enum nft_registers sreg:8; 20 u8 len; 21 }; 22 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 33 extern const struct nft_expr_ops nft_cmp_fast_ops; 34 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 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; 49 u8 csum_flags; 50 }; 51 52 extern const struct nft_expr_ops nft_payload_fast_ops; 53 54 extern struct static_key_false nft_counters_enabled; 55 extern struct static_key_false nft_trace_enabled; 56 57 #endif /* _NET_NF_TABLES_CORE_H */ 58
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.