1d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik#ifndef _XT_SET_H
2d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik#define _XT_SET_H
3d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
4e3e241b2769b27669d05f0a05083acd21b4faa2cPatrick McHardy#include <linux/types.h>
5d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik#include <linux/netfilter/ipset/ip_set.h>
6d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
7d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik/* Revision 0 interface: backward compatible with netfilter/iptables */
8d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
9d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik/*
10d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik * Option flags for kernel operations (xt_set_info_v0)
11d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik */
12d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik#define IPSET_SRC		0x01	/* Source match/add */
13d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik#define IPSET_DST		0x02	/* Destination match/add */
14d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik#define IPSET_MATCH_INV		0x04	/* Inverse matching */
15d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
16d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsikstruct xt_set_info_v0 {
17d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	ip_set_id_t index;
18d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	union {
19d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik		__u32 flags[IPSET_DIM_MAX + 1];
20d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik		struct {
21d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik			__u32 __flags[IPSET_DIM_MAX];
22d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik			__u8 dim;
23d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik			__u8 flags;
24d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik		} compat;
25d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	} u;
26d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik};
27d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
28d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik/* match and target infos */
29d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsikstruct xt_set_info_match_v0 {
30d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	struct xt_set_info_v0 match_set;
31d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik};
32d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
33d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsikstruct xt_set_info_target_v0 {
34d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	struct xt_set_info_v0 add_set;
35d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	struct xt_set_info_v0 del_set;
36d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik};
37d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
38ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsik/* Revision 1  match and target */
39d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
40d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsikstruct xt_set_info {
41d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	ip_set_id_t index;
42d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	__u8 dim;
43d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	__u8 flags;
44d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik};
45d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
46d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik/* match and target infos */
47ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsikstruct xt_set_info_match_v1 {
48d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	struct xt_set_info match_set;
49d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik};
50d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
51ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsikstruct xt_set_info_target_v1 {
52d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	struct xt_set_info add_set;
53d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik	struct xt_set_info del_set;
54d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik};
55d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik
56ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsik/* Revision 2 target */
57ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsik
58ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsikstruct xt_set_info_target_v2 {
59ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsik	struct xt_set_info add_set;
60ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsik	struct xt_set_info del_set;
615276e16bb6f35412583518d6f04651dd9dc114beJan Engelhardt	__u32 flags;
625276e16bb6f35412583518d6f04651dd9dc114beJan Engelhardt	__u32 timeout;
63ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsik};
64ac8cc925d35fc5a05da2bd097e602f20de2478a4Jozsef Kadlecsik
65d956798d82d2d331c031301965d69e17a1a48a2bJozsef Kadlecsik#endif /*_XT_SET_H*/
66