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 */ | |
6ee584be | 47 | NFQA_CAP_LEN, /* __u32 length of captured packet */ |
7237190d | 48 | NFQA_SKB_INFO, /* __u32 skb meta information */ |
7af4cc3f HW |
49 | |
50 | __NFQA_MAX | |
51 | }; | |
52 | #define NFQA_MAX (__NFQA_MAX - 1) | |
53 | ||
54 | struct nfqnl_msg_verdict_hdr { | |
98a4a861 AV |
55 | __be32 verdict; |
56 | __be32 id; | |
53e26658 | 57 | }; |
7af4cc3f HW |
58 | |
59 | ||
60 | enum nfqnl_msg_config_cmds { | |
61 | NFQNL_CFG_CMD_NONE, | |
62 | NFQNL_CFG_CMD_BIND, | |
63 | NFQNL_CFG_CMD_UNBIND, | |
64 | NFQNL_CFG_CMD_PF_BIND, | |
65 | NFQNL_CFG_CMD_PF_UNBIND, | |
66 | }; | |
67 | ||
68 | struct nfqnl_msg_config_cmd { | |
60c195c7 AB |
69 | __u8 command; /* nfqnl_msg_config_cmds */ |
70 | __u8 _pad; | |
98a4a861 | 71 | __be16 pf; /* AF_xxx for PF_[UN]BIND */ |
53e26658 | 72 | }; |
7af4cc3f HW |
73 | |
74 | enum nfqnl_config_mode { | |
75 | NFQNL_COPY_NONE, | |
76 | NFQNL_COPY_META, | |
77 | NFQNL_COPY_PACKET, | |
78 | }; | |
79 | ||
80 | struct nfqnl_msg_config_params { | |
98a4a861 | 81 | __be32 copy_range; |
60c195c7 | 82 | __u8 copy_mode; /* enum nfqnl_config_mode */ |
7af4cc3f HW |
83 | } __attribute__ ((packed)); |
84 | ||
85 | ||
86 | enum nfqnl_attr_config { | |
87 | NFQA_CFG_UNSPEC, | |
88 | NFQA_CFG_CMD, /* nfqnl_msg_config_cmd */ | |
89 | NFQA_CFG_PARAMS, /* nfqnl_msg_config_params */ | |
60c195c7 | 90 | NFQA_CFG_QUEUE_MAXLEN, /* __u32 */ |
fdb694a0 KK |
91 | NFQA_CFG_MASK, /* identify which flags to change */ |
92 | NFQA_CFG_FLAGS, /* value of these flags (__u32) */ | |
7af4cc3f HW |
93 | __NFQA_CFG_MAX |
94 | }; | |
838ab636 | 95 | #define NFQA_CFG_MAX (__NFQA_CFG_MAX-1) |
7af4cc3f | 96 | |
fdb694a0 KK |
97 | /* Flags for NFQA_CFG_FLAGS */ |
98 | #define NFQA_CFG_F_FAIL_OPEN (1 << 0) | |
9cb01766 | 99 | #define NFQA_CFG_F_CONNTRACK (1 << 1) |
00bd1cc2 FW |
100 | #define NFQA_CFG_F_GSO (1 << 2) |
101 | #define NFQA_CFG_F_MAX (1 << 3) | |
fdb694a0 | 102 | |
7237190d FW |
103 | /* flags for NFQA_SKB_INFO */ |
104 | /* packet appears to have wrong checksums, but they are ok */ | |
105 | #define NFQA_SKB_CSUMNOTREADY (1 << 0) | |
106 | /* packet is GSO (i.e., exceeds device mtu) */ | |
107 | #define NFQA_SKB_GSO (1 << 1) | |
108 | ||
7af4cc3f | 109 | #endif /* _NFNETLINK_QUEUE_H */ |