Commit | Line | Data |
---|---|---|
7af4cc3f HW |
1 | #ifndef _NFNETLINK_QUEUE_H |
2 | #define _NFNETLINK_QUEUE_H | |
3 | ||
0ba2c6e8 | 4 | #include <linux/types.h> |
7af4cc3f HW |
5 | #include <linux/netfilter/nfnetlink.h> |
6 | ||
7 | enum nfqnl_msg_types { | |
8 | NFQNL_MSG_PACKET, /* packet from kernel to userspace */ | |
9 | NFQNL_MSG_VERDICT, /* verdict from userspace to kernel */ | |
10 | NFQNL_MSG_CONFIG, /* connect to a particular queue */ | |
97d32cf9 | 11 | NFQNL_MSG_VERDICT_BATCH, /* batchv from userspace to kernel */ |
7af4cc3f HW |
12 | |
13 | NFQNL_MSG_MAX | |
14 | }; | |
15 | ||
16 | struct nfqnl_msg_packet_hdr { | |
98a4a861 AV |
17 | __be32 packet_id; /* unique ID of packet in queue */ |
18 | __be16 hw_protocol; /* hw protocol (network order) */ | |
60c195c7 | 19 | __u8 hook; /* netfilter hook */ |
7af4cc3f HW |
20 | } __attribute__ ((packed)); |
21 | ||
22 | struct nfqnl_msg_packet_hw { | |
98a4a861 | 23 | __be16 hw_addrlen; |
60c195c7 AB |
24 | __u16 _pad; |
25 | __u8 hw_addr[8]; | |
53e26658 | 26 | }; |
7af4cc3f HW |
27 | |
28 | struct nfqnl_msg_packet_timestamp { | |
b51bdad6 MF |
29 | __aligned_be64 sec; |
30 | __aligned_be64 usec; | |
53e26658 | 31 | }; |
7af4cc3f HW |
32 | |
33 | enum nfqnl_attr_type { | |
34 | NFQA_UNSPEC, | |
35 | NFQA_PACKET_HDR, | |
36 | NFQA_VERDICT_HDR, /* nfqnl_msg_verdict_hrd */ | |
60c195c7 | 37 | NFQA_MARK, /* __u32 nfmark */ |
7af4cc3f | 38 | NFQA_TIMESTAMP, /* nfqnl_msg_packet_timestamp */ |
60c195c7 AB |
39 | NFQA_IFINDEX_INDEV, /* __u32 ifindex */ |
40 | NFQA_IFINDEX_OUTDEV, /* __u32 ifindex */ | |
41 | NFQA_IFINDEX_PHYSINDEV, /* __u32 ifindex */ | |
42 | NFQA_IFINDEX_PHYSOUTDEV, /* __u32 ifindex */ | |
7af4cc3f HW |
43 | NFQA_HWADDR, /* nfqnl_msg_packet_hw */ |
44 | NFQA_PAYLOAD, /* opaque data payload */ | |
9cb01766 PNA |
45 | NFQA_CT, /* nf_conntrack_netlink.h */ |
46 | NFQA_CT_INFO, /* enum ip_conntrack_info */ | |
7af4cc3f HW |
47 | |
48 | __NFQA_MAX | |
49 | }; | |
50 | #define NFQA_MAX (__NFQA_MAX - 1) | |
51 | ||
52 | struct nfqnl_msg_verdict_hdr { | |
98a4a861 AV |
53 | __be32 verdict; |
54 | __be32 id; | |
53e26658 | 55 | }; |
7af4cc3f HW |
56 | |
57 | ||
58 | enum nfqnl_msg_config_cmds { | |
59 | NFQNL_CFG_CMD_NONE, | |
60 | NFQNL_CFG_CMD_BIND, | |
61 | NFQNL_CFG_CMD_UNBIND, | |
62 | NFQNL_CFG_CMD_PF_BIND, | |
63 | NFQNL_CFG_CMD_PF_UNBIND, | |
64 | }; | |
65 | ||
66 | struct nfqnl_msg_config_cmd { | |
60c195c7 AB |
67 | __u8 command; /* nfqnl_msg_config_cmds */ |
68 | __u8 _pad; | |
98a4a861 | 69 | __be16 pf; /* AF_xxx for PF_[UN]BIND */ |
53e26658 | 70 | }; |
7af4cc3f HW |
71 | |
72 | enum nfqnl_config_mode { | |
73 | NFQNL_COPY_NONE, | |
74 | NFQNL_COPY_META, | |
75 | NFQNL_COPY_PACKET, | |
76 | }; | |
77 | ||
78 | struct nfqnl_msg_config_params { | |
98a4a861 | 79 | __be32 copy_range; |
60c195c7 | 80 | __u8 copy_mode; /* enum nfqnl_config_mode */ |
7af4cc3f HW |
81 | } __attribute__ ((packed)); |
82 | ||
83 | ||
84 | enum nfqnl_attr_config { | |
85 | NFQA_CFG_UNSPEC, | |
86 | NFQA_CFG_CMD, /* nfqnl_msg_config_cmd */ | |
87 | NFQA_CFG_PARAMS, /* nfqnl_msg_config_params */ | |
60c195c7 | 88 | NFQA_CFG_QUEUE_MAXLEN, /* __u32 */ |
fdb694a0 KK |
89 | NFQA_CFG_MASK, /* identify which flags to change */ |
90 | NFQA_CFG_FLAGS, /* value of these flags (__u32) */ | |
7af4cc3f HW |
91 | __NFQA_CFG_MAX |
92 | }; | |
838ab636 | 93 | #define NFQA_CFG_MAX (__NFQA_CFG_MAX-1) |
7af4cc3f | 94 | |
fdb694a0 KK |
95 | /* Flags for NFQA_CFG_FLAGS */ |
96 | #define NFQA_CFG_F_FAIL_OPEN (1 << 0) | |
9cb01766 | 97 | #define NFQA_CFG_F_CONNTRACK (1 << 1) |
fdb694a0 | 98 | |
7af4cc3f | 99 | #endif /* _NFNETLINK_QUEUE_H */ |