linux/include/net/netfilter/nf_tables_core.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _NET_NF_TABLES_CORE_H
   3#define _NET_NF_TABLES_CORE_H
   4
   5#include <net/netfilter/nf_tables.h>
   6
   7extern struct nft_expr_type nft_imm_type;
   8extern struct nft_expr_type nft_cmp_type;
   9extern struct nft_expr_type nft_lookup_type;
  10extern struct nft_expr_type nft_bitwise_type;
  11extern struct nft_expr_type nft_byteorder_type;
  12extern struct nft_expr_type nft_payload_type;
  13extern struct nft_expr_type nft_dynset_type;
  14extern struct nft_expr_type nft_range_type;
  15extern struct nft_expr_type nft_meta_type;
  16extern struct nft_expr_type nft_rt_type;
  17extern struct nft_expr_type nft_exthdr_type;
  18
  19int nf_tables_core_module_init(void);
  20void nf_tables_core_module_exit(void);
  21
  22struct nft_cmp_fast_expr {
  23        u32                     data;
  24        enum nft_registers      sreg:8;
  25        u8                      len;
  26};
  27
  28struct nft_immediate_expr {
  29        struct nft_data         data;
  30        enum nft_registers      dreg:8;
  31        u8                      dlen;
  32};
  33
  34/* Calculate the mask for the nft_cmp_fast expression. On big endian the
  35 * mask needs to include the *upper* bytes when interpreting that data as
  36 * something smaller than the full u32, therefore a cpu_to_le32 is done.
  37 */
  38static inline u32 nft_cmp_fast_mask(unsigned int len)
  39{
  40        return cpu_to_le32(~0U >> (FIELD_SIZEOF(struct nft_cmp_fast_expr,
  41                                                data) * BITS_PER_BYTE - len));
  42}
  43
  44extern const struct nft_expr_ops nft_cmp_fast_ops;
  45
  46struct nft_payload {
  47        enum nft_payload_bases  base:8;
  48        u8                      offset;
  49        u8                      len;
  50        enum nft_registers      dreg:8;
  51};
  52
  53struct nft_payload_set {
  54        enum nft_payload_bases  base:8;
  55        u8                      offset;
  56        u8                      len;
  57        enum nft_registers      sreg:8;
  58        u8                      csum_type;
  59        u8                      csum_offset;
  60        u8                      csum_flags;
  61};
  62
  63extern const struct nft_expr_ops nft_payload_fast_ops;
  64
  65extern struct static_key_false nft_counters_enabled;
  66extern struct static_key_false nft_trace_enabled;
  67
  68extern struct nft_set_type nft_set_rhash_type;
  69extern struct nft_set_type nft_set_hash_type;
  70extern struct nft_set_type nft_set_hash_fast_type;
  71extern struct nft_set_type nft_set_rbtree_type;
  72extern struct nft_set_type nft_set_bitmap_type;
  73
  74#endif /* _NET_NF_TABLES_CORE_H */
  75