130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _XT_SET_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _XT_SET_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/netfilter/ipset/ip_set.h> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Revision 0 interface: backward compatible with netfilter/iptables */ 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Option flags for kernel operations (xt_set_info_v0) 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IPSET_SRC 0x01 /* Source match/add */ 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IPSET_DST 0x02 /* Destination match/add */ 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IPSET_MATCH_INV 0x04 /* Inverse matching */ 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info_v0 { 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ip_set_id_t index; 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng union { 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 flags[IPSET_DIM_MAX + 1]; 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct { 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 __flags[IPSET_DIM_MAX]; 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dim; 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 flags; 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } compat; 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng } u; 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* match and target infos */ 2930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info_match_v0 { 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info_v0 match_set; 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info_target_v0 { 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info_v0 add_set; 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info_v0 del_set; 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Revision 1 match and target */ 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info { 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng ip_set_id_t index; 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 dim; 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 flags; 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* match and target infos */ 4730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info_match_v1 { 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info match_set; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info_target_v1 { 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info add_set; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info del_set; 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Revision 2 target */ 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info_target_v2 { 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info add_set; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info del_set; 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 flags; 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 timeout; 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Revision 3 match */ 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct xt_set_info_match_v3 { 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct xt_set_info match_set; 6912e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris struct ip_set_counter_match0 packets; 7012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris struct ip_set_counter_match0 bytes; 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 flags; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 747c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris/* Revision 3 target */ 757c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris 767c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferrisstruct xt_set_info_target_v3 { 777c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris struct xt_set_info add_set; 787c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris struct xt_set_info del_set; 797c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris struct xt_set_info map_set; 807c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris __u32 flags; 817c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris __u32 timeout; 827c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris}; 837c0b639731767acd9b3788628d81174c641fa6b9Christopher Ferris 8412e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* Revision 4 match */ 8512e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris 8612e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferrisstruct xt_set_info_match_v4 { 8712e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris struct xt_set_info match_set; 8812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris struct ip_set_counter_match packets; 8912e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris struct ip_set_counter_match bytes; 9012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris __u32 flags; 9112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris}; 9212e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /*_XT_SET_H*/ 94