~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/net/netfilter/nf_tables_core.h

Version: ~ [ linux-5.11-rc3 ] ~ [ linux-5.10.7 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.89 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.167 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.215 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.251 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.251 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 
  7 extern struct nft_expr_type nft_imm_type;
  8 extern struct nft_expr_type nft_cmp_type;
  9 extern struct nft_expr_type nft_lookup_type;
 10 extern struct nft_expr_type nft_bitwise_type;
 11 extern struct nft_expr_type nft_byteorder_type;
 12 extern struct nft_expr_type nft_payload_type;
 13 extern struct nft_expr_type nft_dynset_type;
 14 extern struct nft_expr_type nft_range_type;
 15 extern struct nft_expr_type nft_meta_type;
 16 extern struct nft_expr_type nft_rt_type;
 17 extern struct nft_expr_type nft_exthdr_type;
 18 
 19 #ifdef CONFIG_NETWORK_SECMARK
 20 extern struct nft_object_type nft_secmark_obj_type;
 21 #endif
 22 
 23 int nf_tables_core_module_init(void);
 24 void nf_tables_core_module_exit(void);
 25 
 26 struct nft_cmp_fast_expr {
 27         u32                     data;
 28         enum nft_registers      sreg:8;
 29         u8                      len;
 30 };
 31 
 32 struct nft_immediate_expr {
 33         struct nft_data         data;
 34         enum nft_registers      dreg:8;
 35         u8                      dlen;
 36 };
 37 
 38 /* Calculate the mask for the nft_cmp_fast expression. On big endian the
 39  * mask needs to include the *upper* bytes when interpreting that data as
 40  * something smaller than the full u32, therefore a cpu_to_le32 is done.
 41  */
 42 static inline u32 nft_cmp_fast_mask(unsigned int len)
 43 {
 44         return cpu_to_le32(~0U >> (FIELD_SIZEOF(struct nft_cmp_fast_expr,
 45                                                 data) * BITS_PER_BYTE - len));
 46 }
 47 
 48 extern const struct nft_expr_ops nft_cmp_fast_ops;
 49 
 50 struct nft_payload {
 51         enum nft_payload_bases  base:8;
 52         u8                      offset;
 53         u8                      len;
 54         enum nft_registers      dreg:8;
 55 };
 56 
 57 struct nft_payload_set {
 58         enum nft_payload_bases  base:8;
 59         u8                      offset;
 60         u8                      len;
 61         enum nft_registers      sreg:8;
 62         u8                      csum_type;
 63         u8                      csum_offset;
 64         u8                      csum_flags;
 65 };
 66 
 67 extern const struct nft_expr_ops nft_payload_fast_ops;
 68 
 69 extern struct static_key_false nft_counters_enabled;
 70 extern struct static_key_false nft_trace_enabled;
 71 
 72 extern struct nft_set_type nft_set_rhash_type;
 73 extern struct nft_set_type nft_set_hash_type;
 74 extern struct nft_set_type nft_set_hash_fast_type;
 75 extern struct nft_set_type nft_set_rbtree_type;
 76 extern struct nft_set_type nft_set_bitmap_type;
 77 
 78 struct nft_expr;
 79 struct nft_regs;
 80 struct nft_pktinfo;
 81 void nft_meta_get_eval(const struct nft_expr *expr,
 82                        struct nft_regs *regs, const struct nft_pktinfo *pkt);
 83 void nft_cmp_eval(const struct nft_expr *expr,
 84                   struct nft_regs *regs, const struct nft_pktinfo *pkt);
 85 void nft_lookup_eval(const struct nft_expr *expr,
 86                      struct nft_regs *regs, const struct nft_pktinfo *pkt);
 87 void nft_payload_eval(const struct nft_expr *expr,
 88                       struct nft_regs *regs, const struct nft_pktinfo *pkt);
 89 void nft_immediate_eval(const struct nft_expr *expr,
 90                         struct nft_regs *regs, const struct nft_pktinfo *pkt);
 91 void nft_bitwise_eval(const struct nft_expr *expr,
 92                       struct nft_regs *regs, const struct nft_pktinfo *pkt);
 93 void nft_range_eval(const struct nft_expr *expr,
 94                     struct nft_regs *regs, const struct nft_pktinfo *pkt);
 95 void nft_byteorder_eval(const struct nft_expr *expr,
 96                         struct nft_regs *regs, const struct nft_pktinfo *pkt);
 97 void nft_dynset_eval(const struct nft_expr *expr,
 98                      struct nft_regs *regs, const struct nft_pktinfo *pkt);
 99 void nft_rt_get_eval(const struct nft_expr *expr,
100                      struct nft_regs *regs, const struct nft_pktinfo *pkt);
101 #endif /* _NET_NF_TABLES_CORE_H */
102 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp