1#ifndef _NFNETLINK_QUEUE_H
2#define _NFNETLINK_QUEUE_H
3
4#include <linux/types.h>
5#include <linux/netfilter/nfnetlink.h>
6
7enum nfqnl_msg_types {
8 NFQNL_MSG_PACKET,
9 NFQNL_MSG_VERDICT,
10 NFQNL_MSG_CONFIG,
11 NFQNL_MSG_VERDICT_BATCH,
12
13 NFQNL_MSG_MAX
14};
15
16struct nfqnl_msg_packet_hdr {
17 __be32 packet_id;
18 __be16 hw_protocol;
19 __u8 hook;
20} __attribute__ ((packed));
21
22struct nfqnl_msg_packet_hw {
23 __be16 hw_addrlen;
24 __u16 _pad;
25 __u8 hw_addr[8];
26};
27
28struct nfqnl_msg_packet_timestamp {
29 __aligned_be64 sec;
30 __aligned_be64 usec;
31};
32
33enum nfqnl_attr_type {
34 NFQA_UNSPEC,
35 NFQA_PACKET_HDR,
36 NFQA_VERDICT_HDR,
37 NFQA_MARK,
38 NFQA_TIMESTAMP,
39 NFQA_IFINDEX_INDEV,
40 NFQA_IFINDEX_OUTDEV,
41 NFQA_IFINDEX_PHYSINDEV,
42 NFQA_IFINDEX_PHYSOUTDEV,
43 NFQA_HWADDR,
44 NFQA_PAYLOAD,
45
46 __NFQA_MAX
47};
48#define NFQA_MAX (__NFQA_MAX - 1)
49
50struct nfqnl_msg_verdict_hdr {
51 __be32 verdict;
52 __be32 id;
53};
54
55
56enum nfqnl_msg_config_cmds {
57 NFQNL_CFG_CMD_NONE,
58 NFQNL_CFG_CMD_BIND,
59 NFQNL_CFG_CMD_UNBIND,
60 NFQNL_CFG_CMD_PF_BIND,
61 NFQNL_CFG_CMD_PF_UNBIND,
62};
63
64struct nfqnl_msg_config_cmd {
65 __u8 command;
66 __u8 _pad;
67 __be16 pf;
68};
69
70enum nfqnl_config_mode {
71 NFQNL_COPY_NONE,
72 NFQNL_COPY_META,
73 NFQNL_COPY_PACKET,
74};
75
76struct nfqnl_msg_config_params {
77 __be32 copy_range;
78 __u8 copy_mode;
79} __attribute__ ((packed));
80
81
82enum nfqnl_attr_config {
83 NFQA_CFG_UNSPEC,
84 NFQA_CFG_CMD,
85 NFQA_CFG_PARAMS,
86 NFQA_CFG_QUEUE_MAXLEN,
87 __NFQA_CFG_MAX
88};
89#define NFQA_CFG_MAX (__NFQA_CFG_MAX-1)
90
91#endif
92