Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _IPT_HASHLIMIT_H |
| 2 | #define _IPT_HASHLIMIT_H |
| 3 | |
| 4 | /* timings are in milliseconds. */ |
| 5 | #define IPT_HASHLIMIT_SCALE 10000 |
| 6 | /* 1/10,000 sec period => max of 10,000/sec. Min rate is then 429490 |
| 7 | seconds, or one every 59 hours. */ |
| 8 | |
| 9 | /* details of this structure hidden by the implementation */ |
| 10 | struct ipt_hashlimit_htable; |
| 11 | |
| 12 | #define IPT_HASHLIMIT_HASH_DIP 0x0001 |
| 13 | #define IPT_HASHLIMIT_HASH_DPT 0x0002 |
| 14 | #define IPT_HASHLIMIT_HASH_SIP 0x0004 |
| 15 | #define IPT_HASHLIMIT_HASH_SPT 0x0008 |
| 16 | |
| 17 | struct hashlimit_cfg { |
| 18 | u_int32_t mode; /* bitmask of IPT_HASHLIMIT_HASH_* */ |
| 19 | u_int32_t avg; /* Average secs between packets * scale */ |
| 20 | u_int32_t burst; /* Period multiplier for upper limit. */ |
| 21 | |
| 22 | /* user specified */ |
| 23 | u_int32_t size; /* how many buckets */ |
| 24 | u_int32_t max; /* max number of entries */ |
| 25 | u_int32_t gc_interval; /* gc interval */ |
| 26 | u_int32_t expire; /* when do entries expire? */ |
| 27 | }; |
| 28 | |
| 29 | struct ipt_hashlimit_info { |
| 30 | char name [IFNAMSIZ]; /* name */ |
| 31 | struct hashlimit_cfg cfg; |
| 32 | struct ipt_hashlimit_htable *hinfo; |
| 33 | |
| 34 | /* Used internally by the kernel */ |
| 35 | union { |
| 36 | void *ptr; |
| 37 | struct ipt_hashlimit_info *master; |
| 38 | } u; |
| 39 | }; |
| 40 | #endif /*_IPT_HASHLIMIT_H*/ |