1dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#ifndef __LINUX_NETFILTER_H
2dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define __LINUX_NETFILTER_H
3dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
4dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <linux/types.h>
5dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
6dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
7dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* Responses from hook functions. */
8dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_DROP 0
9dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_ACCEPT 1
10dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_STOLEN 2
11dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_QUEUE 3
12dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_REPEAT 4
13dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_STOP 5
14dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_MAX_VERDICT NF_STOP
15dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
16dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* we overload the higher bits for encoding auxiliary data such as the queue
17dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * number. Not nice, but better than additional function arguments. */
18dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_VERDICT_MASK 0x0000ffff
19dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_VERDICT_BITS 16
20dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
21dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_VERDICT_QMASK 0xffff0000
22dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_VERDICT_QBITS 16
23dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
24dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NF_QUEUE_NR(x) ((((x) << NF_VERDICT_BITS) & NF_VERDICT_QMASK) | NF_QUEUE)
25dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
26dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* only for userspace compatibility */
27dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* Generic cache responses from hook functions.
28dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat   <= 0x2000 is used for protocol-flags. */
29dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NFC_UNKNOWN 0x4000
30dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define NFC_ALTERED 0x8000
31dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
32dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatenum nf_inet_hooks {
33dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NF_INET_PRE_ROUTING,
34dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NF_INET_LOCAL_IN,
35dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NF_INET_FORWARD,
36dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NF_INET_LOCAL_OUT,
37dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NF_INET_POST_ROUTING,
38dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NF_INET_NUMHOOKS
39dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
40dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
41dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatenum {
42dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NFPROTO_UNSPEC =  0,
43dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NFPROTO_IPV4   =  2,
44dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NFPROTO_ARP    =  3,
45dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NFPROTO_BRIDGE =  7,
46dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NFPROTO_IPV6   = 10,
47dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NFPROTO_DECNET = 12,
48dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	NFPROTO_NUMPROTO,
49dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
50dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
51dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatunion nf_inet_addr {
52dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	__u32		all[4];
53dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	__be32		ip;
54dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	__be32		ip6[4];
55dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	struct in_addr	in;
56dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat	struct in6_addr	in6;
57dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
58dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
59dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#endif /*__LINUX_NETFILTER_H*/
60