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