Home | History | Annotate | Download | only in netfilter
      1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2 #ifndef _XT_SET_H
      3 #define _XT_SET_H
      4 
      5 #include <linux/types.h>
      6 #include <linux/netfilter/ipset/ip_set.h>
      7 
      8 /* Revision 0 interface: backward compatible with netfilter/iptables */
      9 
     10 /*
     11  * Option flags for kernel operations (xt_set_info_v0)
     12  */
     13 #define IPSET_SRC		0x01	/* Source match/add */
     14 #define IPSET_DST		0x02	/* Destination match/add */
     15 #define IPSET_MATCH_INV		0x04	/* Inverse matching */
     16 
     17 struct xt_set_info_v0 {
     18 	ip_set_id_t index;
     19 	union {
     20 		__u32 flags[IPSET_DIM_MAX + 1];
     21 		struct {
     22 			__u32 __flags[IPSET_DIM_MAX];
     23 			__u8 dim;
     24 			__u8 flags;
     25 		} compat;
     26 	} u;
     27 };
     28 
     29 /* match and target infos */
     30 struct xt_set_info_match_v0 {
     31 	struct xt_set_info_v0 match_set;
     32 };
     33 
     34 struct xt_set_info_target_v0 {
     35 	struct xt_set_info_v0 add_set;
     36 	struct xt_set_info_v0 del_set;
     37 };
     38 
     39 /* Revision 1  match and target */
     40 
     41 struct xt_set_info {
     42 	ip_set_id_t index;
     43 	__u8 dim;
     44 	__u8 flags;
     45 };
     46 
     47 /* match and target infos */
     48 struct xt_set_info_match_v1 {
     49 	struct xt_set_info match_set;
     50 };
     51 
     52 struct xt_set_info_target_v1 {
     53 	struct xt_set_info add_set;
     54 	struct xt_set_info del_set;
     55 };
     56 
     57 /* Revision 2 target */
     58 
     59 struct xt_set_info_target_v2 {
     60 	struct xt_set_info add_set;
     61 	struct xt_set_info del_set;
     62 	__u32 flags;
     63 	__u32 timeout;
     64 };
     65 
     66 /* Revision 3 match */
     67 
     68 struct xt_set_info_match_v3 {
     69 	struct xt_set_info match_set;
     70 	struct ip_set_counter_match0 packets;
     71 	struct ip_set_counter_match0 bytes;
     72 	__u32 flags;
     73 };
     74 
     75 /* Revision 3 target */
     76 
     77 struct xt_set_info_target_v3 {
     78 	struct xt_set_info add_set;
     79 	struct xt_set_info del_set;
     80 	struct xt_set_info map_set;
     81 	__u32 flags;
     82 	__u32 timeout;
     83 };
     84 
     85 /* Revision 4 match */
     86 
     87 struct xt_set_info_match_v4 {
     88 	struct xt_set_info match_set;
     89 	struct ip_set_counter_match packets;
     90 	struct ip_set_counter_match bytes;
     91 	__u32 flags;
     92 };
     93 
     94 #endif /*_XT_SET_H*/
     95