mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 10:29:37 +00:00
![Jan Engelhardt](/assets/img/avatar_default.png)
Along comes... xt_u32, a revamped ipt_u32 from POM-NG, Plus: * 2007-06-02: added ipv6 support * 2007-06-05: uses kmalloc for the big buffer * 2007-06-05: added inversion * 2007-06-20: use skb_copy_bits() and get rid of the big buffer and lock (suggested by Pablo Neira Ayuso) Signed-off-by: Jan Engelhardt <jengelh@gmx.de> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
40 lines
695 B
C
40 lines
695 B
C
#ifndef _XT_U32_H
|
|
#define _XT_U32_H 1
|
|
|
|
enum xt_u32_ops {
|
|
XT_U32_AND,
|
|
XT_U32_LEFTSH,
|
|
XT_U32_RIGHTSH,
|
|
XT_U32_AT,
|
|
};
|
|
|
|
struct xt_u32_location_element {
|
|
u_int32_t number;
|
|
u_int8_t nextop;
|
|
};
|
|
|
|
struct xt_u32_value_element {
|
|
u_int32_t min;
|
|
u_int32_t max;
|
|
};
|
|
|
|
/*
|
|
* Any way to allow for an arbitrary number of elements?
|
|
* For now, I settle with a limit of 10 each.
|
|
*/
|
|
#define XT_U32_MAXSIZE 10
|
|
|
|
struct xt_u32_test {
|
|
struct xt_u32_location_element location[XT_U32_MAXSIZE+1];
|
|
struct xt_u32_value_element value[XT_U32_MAXSIZE+1];
|
|
u_int8_t nnums;
|
|
u_int8_t nvalues;
|
|
};
|
|
|
|
struct xt_u32 {
|
|
struct xt_u32_test tests[XT_U32_MAXSIZE+1];
|
|
u_int8_t ntests;
|
|
u_int8_t invert;
|
|
};
|
|
|
|
#endif /* _XT_U32_H */
|