Blame bootstrap_ver/libipq/ipq_message_type.3

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