+++ /dev/null
-.TH IPQ_MESSAGE_TYPE 3 "16 October 2001" "Linux iptables 1.2" "Linux Programmer's Manual"
-.\"
-.\" Copyright (c) 2000-2001 Netfilter Core Team
-.\"
-.\" This program is free software; you can redistribute it and/or modify
-.\" it under the terms of the GNU General Public License as published by
-.\" the Free Software Foundation; either version 2 of the License, or
-.\" (at your option) any later version.
-.\"
-.\" This program is distributed in the hope that it will be useful,
-.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
-.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-.\" GNU General Public License for more details.
-.\"
-.\" You should have received a copy of the GNU General Public License
-.\" along with this program; if not, write to the Free Software
-.\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-.\"
-.\"
-.SH NAME
-ipq_message_type, ipq_get_packet, ipq_getmsgerr \(em query queue messages
-.SH SYNOPSIS
-.B #include <linux/netfilter.h>
-.br
-.B #include <libipq.h>
-.sp
-.BI "int ipq_message_type(const unsigned char *" buf ");"
-.br
-.BI "ipq_packet_msg_t *ipq_get_packet(const unsigned char *" buf ");"
-.br
-.BI "int ipq_get_msgerr(const unsigned char *" buf ");"
-.SH DESCRIPTION
-The
-.B ipq_message_type
-function returns the type of queue message returned to userspace
-via
-.BR ipq_read .
-.PP
-.B ipq_message_type
-should always be called following a successful call to
-.B ipq_read
-to determine whether the message is a packet message or an
-error message. The
-.I buf
-parameter should be the same data obtained from
-the previous call to
-.BR ipq_read .
-.PP
-.B ipq_message_type
-will return one of the following values:
-.TP
-.B NLMSG_ERROR
-An error message generated by the Netlink transport.
-.PP
-.TP
-.B IPQM_PACKET
-A packet message containing packet metadata and optional packet payload data.
-.PP
-The
-.B ipq_get_packet
-function should be called if
-.B ipq_message_type
-returns
-.BR IPQM_PACKET .
-The
-.I buf
-parameter should point to the same data used for the call to
-.BR ipq_message_type .
-The pointer returned by
-.B ipq_get_packet
-points to a packet message, which is declared as follows:
-.PP
-.RS
-.nf
-typedef struct ipq_packet_msg {
- unsigned long packet_id; /* ID of queued packet */
- unsigned long mark; /* Netfilter mark value */
- long timestamp_sec; /* Packet arrival time (seconds) */
- long timestamp_usec; /* Packet arrvial time (+useconds) */
- unsigned int hook; /* Netfilter hook we rode in on */
- char indev_name[IFNAMSIZ]; /* Name of incoming interface */
- char outdev_name[IFNAMSIZ]; /* Name of outgoing interface */
- unsigned short hw_protocol; /* Hardware protocol (network order) */
- unsigned short hw_type; /* Hardware type */
- unsigned char hw_addrlen; /* Hardware address length */
- unsigned char hw_addr[8]; /* Hardware address */
- size_t data_len; /* Length of packet data */
- unsigned char payload[0]; /* Optional packet data */
-} ipq_packet_msg_t;
-.fi
-.RE
-.PP
-Each of these fields may be read by the application. If the queue mode
-is
-.B IPQ_COPY_PACKET
-and the
-.I data_len
-value is greater than zero, the packet payload contents may be accessed
-in the memory following the
-.B ipq_packet_msg_t
-structure to a range of
-.I data_len.
-.PP
-The
-.I packet_id
-field contains a packet identifier to be used when calling
-.BR ipq_set_verdict .
-.PP
-The
-.B ipq_get_msgerr
-function should be called if
-.B ipq_message_type
-returns
-.BR NLMSG_ERROR.
-The
-.I buf
-parameter should point to the same data used for the call to
-.BR ipq_message_type .
-The value returned by
-.B ipq_get_msgerr
-is set by higher level kernel code and corresponds to standard
-.B errno
-values.
-.SH BUGS
-None known.
-.SH AUTHOR
-James Morris <jmorris@intercode.com.au>
-.SH COPYRIGHT
-Copyright (c) 2000-2001 Netfilter Core Team.
-.PP
-Distributed under the GNU General Public License.
-.SH SEE ALSO
-.BR iptables (8),
-.BR libipq (3).