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