Man Linux: Main Page and Category List

NAME

       ipq_set_mode - set the ip_queue queuing mode

SYNOPSIS

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

       int  ipq_set_mode(const  struct  ipq_handle  *h,  u_int8_t mode, size_t
       range);

DESCRIPTION

       The ipq_set_mode function  sends  a  message  to  the  kernel  ip_queue
       module,  specifying whether packet metadata only, or packet payloads as
       well as metadata should be copied to userspace.

       The h parameter is a context handle which  must  previously  have  been
       returned successfully from a call to ipq_create_handle.

       The mode parameter must be one of:

       IPQ_COPY_META
              Copy only packet metadata to userspace.

       IPQ_COPY_PACKET
              Copy packet metadata and packet payloads to userspace.

       The range parameter is used to specify how many bytes of the payload to
       copy to userspace.  It is only valid for IPQ_COPY_PACKET  mode  and  is
       otherwise  ignored.   The  maximum  useful  value  for  range  is 65535
       (greater values will be clamped to this by ip_queue).

       ipq_set_mode is usually used immediately following ipq_create_handle to
       enable the flow of packets to userspace.

       Note   that   as   the   underlying   Netlink  messaging  transport  is
       connectionless, the ip_queue module does  not  know  that  a  userspace
       application is ready to communicate until it receives a message such as
       this.

RETURN VALUE

       On failure, -1 is returned.
       On success, a non-zero positive value is returned.

ERRORS

       On failure, a descriptive error  message  will  be  available  via  the
       ipq_errstr function.

DIAGNOSTICS

       A  relatively  common  failure  may occur if the ip_queue module is not
       loaded.  In this case, the following code excerpt:

              status = ipq_set_mode(h, IPQ_COPY_META, 0);
              if (status < 0) {
                   ipq_perror("myapp");
                   ipq_destroy_handle(h);
                   exit(1);
              }

       would generate the following output:

       myapp: Failed to send netlink message: Connection refused

BUGS

       None known.

AUTHOR

       James Morris <jmorris@intercode.com.au>

COPYRIGHT

       Copyright (c) 2000-2001 Netfilter Core Team.

       Distributed under the GNU General Public License.

SEE ALSO

       libipq(3), iptables(8).