1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _XT_RATE_H
2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _XT_RATE_H
3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* timings are in milliseconds. */
5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define XT_LIMIT_SCALE 10000
6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 1/10,000 sec period => max of 10,000/sec.  Min rate is then 429490
8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru   seconds, or one every 59 hours. */
9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct xt_rateinfo {
10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_int32_t avg;    /* Average secs between packets * scale */
11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_int32_t burst;  /* Period multiplier for upper limit. */
12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	/* Used internally by the kernel */
14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	unsigned long prev;
15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_int32_t credit;
16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	u_int32_t credit_cap, cost;
17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	/* Ugly, ugly fucker. */
19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	struct xt_rateinfo *master;
20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru};
21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /*_XT_RATE_H*/
22