1IPQ_MESSAGE_TYPE(3) Linux Programmer's Manual IPQ_MESSAGE_TYPE(3)
2
3
4
6 ipq_message_type, ipq_get_packet, ipq_getmsgerr — query queue messages
7
9 #include <linux/netfilter.h>
10 #include <libipq.h>
11
12 int ipq_message_type(const unsigned char *buf);
13 ipq_packet_msg_t *ipq_get_packet(const unsigned char *buf);
14 int ipq_get_msgerr(const unsigned char *buf);
15
17 The ipq_message_type function returns the type of queue message
18 returned to userspace via ipq_read.
19
20 ipq_message_type should always be called following a successful call to
21 ipq_read to determine whether the message is a packet message or an
22 error message. The buf parameter should be the same data obtained from
23 the previous call to ipq_read.
24
25 ipq_message_type will return one of the following values:
26
27 NLMSG_ERROR
28 An error message generated by the Netlink transport.
29
30 IPQM_PACKET
31 A packet message containing packet metadata and optional packet
32 payload data.
33
34 The ipq_get_packet function should be called if ipq_message_type
35 returns IPQM_PACKET. The buf parameter should point to the same data
36 used for the call to ipq_message_type. The pointer returned by
37 ipq_get_packet points to a packet message, which is declared as fol‐
38 lows:
39
40 typedef struct ipq_packet_msg {
41 unsigned long packet_id; /* ID of queued packet */
42 unsigned long mark; /* Netfilter mark value */
43 long timestamp_sec; /* Packet arrival time (seconds) */
44 long timestamp_usec; /* Packet arrvial time (+useconds) */
45 unsigned int hook; /* Netfilter hook we rode in on */
46 char indev_name[IFNAMSIZ]; /* Name of incoming interface */
47 char outdev_name[IFNAMSIZ]; /* Name of outgoing interface */
48 unsigned short hw_protocol; /* Hardware protocol (network order) */
49 unsigned short hw_type; /* Hardware type */
50 unsigned char hw_addrlen; /* Hardware address length */
51 unsigned char hw_addr[8]; /* Hardware address */
52 size_t data_len; /* Length of packet data */
53 unsigned char payload[0]; /* Optional packet data */
54 } ipq_packet_msg_t;
55
56 Each of these fields may be read by the application. If the queue mode
57 is IPQ_COPY_PACKET and the data_len value is greater than zero, the
58 packet payload contents may be accessed in the memory following the
59 ipq_packet_msg_t structure to a range of data_len.
60
61 The packet_id field contains a packet identifier to be used when call‐
62 ing ipq_set_verdict.
63
64 The ipq_get_msgerr function should be called if ipq_message_type
65 returns NLMSG_ERROR. The buf parameter should point to the same data
66 used for the call to ipq_message_type. The value returned by
67 ipq_get_msgerr is set by higher level kernel code and corresponds to
68 standard errno values.
69
71 None known.
72
74 James Morris <jmorris@intercode.com.au>
75
77 Copyright (c) 2000-2001 Netfilter Core Team.
78
79 Distributed under the GNU General Public License.
80
82 iptables(8), libipq(3).
83
84
85
86Linux iptables 1.2 16 October 2001 IPQ_MESSAGE_TYPE(3)