19640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt#ifndef _XT_U32_H 29640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt#define _XT_U32_H 1 39640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt 4dbe77cc974cee656eae37e75039dd1a410a4535bJan Engelhardt#include <linux/types.h> 5dbe77cc974cee656eae37e75039dd1a410a4535bJan Engelhardt 69640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardtenum xt_u32_ops { 79640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt XT_U32_AND, 89640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt XT_U32_LEFTSH, 99640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt XT_U32_RIGHTSH, 109640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt XT_U32_AT, 119640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt}; 129640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt 139640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardtstruct xt_u32_location_element { 14b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u32 number; 15b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u8 nextop; 169640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt}; 179640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt 189640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardtstruct xt_u32_value_element { 19b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u32 min; 20b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u32 max; 219640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt}; 229640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt 239640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt/* 249640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt * Any way to allow for an arbitrary number of elements? 259640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt * For now, I settle with a limit of 10 each. 269640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt */ 279640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt#define XT_U32_MAXSIZE 10 289640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt 299640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardtstruct xt_u32_test { 309640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt struct xt_u32_location_element location[XT_U32_MAXSIZE+1]; 319640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt struct xt_u32_value_element value[XT_U32_MAXSIZE+1]; 32b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u8 nnums; 33b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u8 nvalues; 349640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt}; 359640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt 369640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardtstruct xt_u32 { 379640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt struct xt_u32_test tests[XT_U32_MAXSIZE+1]; 38b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u8 ntests; 39b4af04be14560b3fcc6cf23200148d408014a2f5Jan Engelhardt __u8 invert; 409640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt}; 419640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt 429640e529bd08c4c0458246fae0fd6b473c94ab46Jan Engelhardt#endif /* _XT_U32_H */ 43