Man Pages

ipq_message_type(3) - phpMan ipq_message_type(3) - phpMan

Command: man perldoc info search(apropos)  


IPQ_MESSAGE_TYPE(3)        Linux Programmer's Manual       IPQ_MESSAGE_TYPE(3)



NAME
       ipq_message_type, ipq_get_packet, ipq_getmsgerr -- query queue messages

SYNOPSIS
       #include <linux/netfilter.h>
       #include <libipq.h>

       int ipq_message_type(const unsigned char *buf);
       ipq_packet_msg_t *ipq_get_packet(const unsigned char *buf);
       int ipq_get_msgerr(const unsigned char *buf);

DESCRIPTION
       The ipq_message_type function returns the type of queue message returned to userspace via ipq_read.

       ipq_message_type  should always be called following a successful call to ipq_read to determine whether the mes-
       sage is a packet message or an error message. The buf parameter should be the same data obtained from the  pre-
       vious call to ipq_read.

       ipq_message_type will return one of the following values:

       NLMSG_ERROR
              An error message generated by the Netlink transport.


       IPQM_PACKET
              A packet message containing packet metadata and optional packet payload data.

       The ipq_get_packet function should be called if ipq_message_type returns IPQM_PACKET.  The buf parameter should
       point to the same data used for the call to ipq_message_type.  The pointer returned by ipq_get_packet points to
       a packet message, which is declared as follows:

              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;

       Each  of  these  fields  may be read by the application.  If the queue mode is IPQ_COPY_PACKET and the data_len
       value is greater than zero,  the  packet  payload  contents  may  be  accessed  in  the  memory  following  the
       ipq_packet_msg_t structure to a range of data_len.

       The packet_id field contains a packet identifier to be used when calling ipq_set_verdict.

       The ipq_get_msgerr function should be called if ipq_message_type returns NLMSG_ERROR.  The buf parameter should
       point to the same data used for the call to ipq_message_type.  The value returned by ipq_get_msgerr is  set  by
       higher level kernel code and corresponds to standard errno values.

BUGS
       None known.

AUTHOR
       James Morris <jmorrisATintercode.au>

COPYRIGHT
       Copyright (c) 2000-2001 Netfilter Core Team.

       Distributed under the GNU General Public License.

SEE ALSO
       iptables(8), libipq(3).



Linux iptables 1.2              16 October 2001            IPQ_MESSAGE_TYPE(3)