14489c0d66d9a0e6033c9472fd54df155788010b7Yasuyuki KOZAKAI#ifndef _XT_RATE_H
24489c0d66d9a0e6033c9472fd54df155788010b7Yasuyuki KOZAKAI#define _XT_RATE_H
31da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson
4350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt#include <linux/types.h>
5350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt
61da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson/* timings are in milliseconds. */
74489c0d66d9a0e6033c9472fd54df155788010b7Yasuyuki KOZAKAI#define XT_LIMIT_SCALE 10000
81da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson
9350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardtstruct xt_limit_priv;
10350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt
111da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson/* 1/10,000 sec period => max of 10,000/sec.  Min rate is then 429490
121da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson   seconds, or one every 59 hours. */
134489c0d66d9a0e6033c9472fd54df155788010b7Yasuyuki KOZAKAIstruct xt_rateinfo {
14350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u32 avg;    /* Average secs between packets * scale */
15350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u32 burst;  /* Period multiplier for upper limit. */
161da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson
171da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson	/* Used internally by the kernel */
18350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	unsigned long prev; /* moved to xt_limit_priv */
19350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u32 credit; /* moved to xt_limit_priv */
20350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u32 credit_cap, cost;
21e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
22350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	struct xt_limit_priv *master;
231da399c30a2c42490f1c6cb84857e31522546c9dMartin Josefsson};
244489c0d66d9a0e6033c9472fd54df155788010b7Yasuyuki KOZAKAI#endif /*_XT_RATE_H*/
25