Blame include/linux/netfilter/xt_hashlimit.h

Packit Service d1fe03
#ifndef _XT_HASHLIMIT_H
Packit Service d1fe03
#define _XT_HASHLIMIT_H
Packit Service d1fe03
Packit Service d1fe03
#include <linux/types.h>
Packit Service d1fe03
Packit Service d1fe03
/* timings are in milliseconds. */
Packit Service d1fe03
#define XT_HASHLIMIT_SCALE 10000
Packit Service d1fe03
#define XT_HASHLIMIT_SCALE_v2 1000000llu
Packit Service d1fe03
/* 1/10,000 sec period => max of 10,000/sec.  Min rate is then 429490
Packit Service d1fe03
 * seconds, or one packet every 59 hours.
Packit Service d1fe03
 */
Packit Service d1fe03
Packit Service d1fe03
/* packet length accounting is done in 16-byte steps */
Packit Service d1fe03
#define XT_HASHLIMIT_BYTE_SHIFT 4
Packit Service d1fe03
Packit Service d1fe03
/* details of this structure hidden by the implementation */
Packit Service d1fe03
struct xt_hashlimit_htable;
Packit Service d1fe03
Packit Service d1fe03
enum {
Packit Service d1fe03
	XT_HASHLIMIT_HASH_DIP	= 1 << 0,
Packit Service d1fe03
	XT_HASHLIMIT_HASH_DPT	= 1 << 1,
Packit Service d1fe03
	XT_HASHLIMIT_HASH_SIP	= 1 << 2,
Packit Service d1fe03
	XT_HASHLIMIT_HASH_SPT	= 1 << 3,
Packit Service d1fe03
	XT_HASHLIMIT_INVERT	= 1 << 4,
Packit Service d1fe03
	XT_HASHLIMIT_BYTES	= 1 << 5,
Packit Service d1fe03
	XT_HASHLIMIT_RATE_MATCH	= 1 << 6,
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct hashlimit_cfg {
Packit Service d1fe03
	__u32 mode;	  /* bitmask of XT_HASHLIMIT_HASH_* */
Packit Service d1fe03
	__u32 avg;    /* Average secs between packets * scale */
Packit Service d1fe03
	__u32 burst;  /* Period multiplier for upper limit. */
Packit Service d1fe03
Packit Service d1fe03
	/* user specified */
Packit Service d1fe03
	__u32 size;		/* how many buckets */
Packit Service d1fe03
	__u32 max;		/* max number of entries */
Packit Service d1fe03
	__u32 gc_interval;	/* gc interval */
Packit Service d1fe03
	__u32 expire;	/* when do entries expire? */
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct xt_hashlimit_info {
Packit Service d1fe03
	char name [IFNAMSIZ];		/* name */
Packit Service d1fe03
	struct hashlimit_cfg cfg;
Packit Service d1fe03
Packit Service d1fe03
	/* Used internally by the kernel */
Packit Service d1fe03
	struct xt_hashlimit_htable *hinfo;
Packit Service d1fe03
	union {
Packit Service d1fe03
		void *ptr;
Packit Service d1fe03
		struct xt_hashlimit_info *master;
Packit Service d1fe03
	} u;
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct hashlimit_cfg1 {
Packit Service d1fe03
	__u32 mode;	  /* bitmask of XT_HASHLIMIT_HASH_* */
Packit Service d1fe03
	__u32 avg;    /* Average secs between packets * scale */
Packit Service d1fe03
	__u32 burst;  /* Period multiplier for upper limit. */
Packit Service d1fe03
Packit Service d1fe03
	/* user specified */
Packit Service d1fe03
	__u32 size;		/* how many buckets */
Packit Service d1fe03
	__u32 max;		/* max number of entries */
Packit Service d1fe03
	__u32 gc_interval;	/* gc interval */
Packit Service d1fe03
	__u32 expire;	/* when do entries expire? */
Packit Service d1fe03
Packit Service d1fe03
	__u8 srcmask, dstmask;
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct hashlimit_cfg2 {
Packit Service d1fe03
	__u64 avg;		/* Average secs between packets * scale */
Packit Service d1fe03
	__u64 burst;		/* Period multiplier for upper limit. */
Packit Service d1fe03
	__u32 mode;		/* bitmask of XT_HASHLIMIT_HASH_* */
Packit Service d1fe03
Packit Service d1fe03
	/* user specified */
Packit Service d1fe03
	__u32 size;		/* how many buckets */
Packit Service d1fe03
	__u32 max;		/* max number of entries */
Packit Service d1fe03
	__u32 gc_interval;	/* gc interval */
Packit Service d1fe03
	__u32 expire;		/* when do entries expire? */
Packit Service d1fe03
Packit Service d1fe03
	__u8 srcmask, dstmask;
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct hashlimit_cfg3 {
Packit Service d1fe03
	__u64 avg;		/* Average secs between packets * scale */
Packit Service d1fe03
	__u64 burst;		/* Period multiplier for upper limit. */
Packit Service d1fe03
	__u32 mode;		/* bitmask of XT_HASHLIMIT_HASH_* */
Packit Service d1fe03
Packit Service d1fe03
	/* user specified */
Packit Service d1fe03
	__u32 size;		/* how many buckets */
Packit Service d1fe03
	__u32 max;		/* max number of entries */
Packit Service d1fe03
	__u32 gc_interval;	/* gc interval */
Packit Service d1fe03
	__u32 expire;		/* when do entries expire? */
Packit Service d1fe03
Packit Service d1fe03
	__u32 interval;		/* in seconds*/
Packit Service d1fe03
	__u8 srcmask, dstmask;
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct xt_hashlimit_mtinfo1 {
Packit Service d1fe03
	char name[IFNAMSIZ];
Packit Service d1fe03
	struct hashlimit_cfg1 cfg;
Packit Service d1fe03
Packit Service d1fe03
	/* Used internally by the kernel */
Packit Service d1fe03
	struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct xt_hashlimit_mtinfo2 {
Packit Service d1fe03
	char name[NAME_MAX];
Packit Service d1fe03
	struct hashlimit_cfg2 cfg;
Packit Service d1fe03
Packit Service d1fe03
	/* Used internally by the kernel */
Packit Service d1fe03
	struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
struct xt_hashlimit_mtinfo3 {
Packit Service d1fe03
	char name[NAME_MAX];
Packit Service d1fe03
	struct hashlimit_cfg3 cfg;
Packit Service d1fe03
Packit Service d1fe03
	/* Used internally by the kernel */
Packit Service d1fe03
	struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
Packit Service d1fe03
};
Packit Service d1fe03
Packit Service d1fe03
#endif /*_XT_HASHLIMIT_H*/