Poster of Linux kernelThe best gift for a Linux geek
IPQ_SET_MODE

IPQ_SET_MODE

Section: Linux Programmer's Manual (3) Updated: 16 October 2001
Local index Up
 

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).


 

Index

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
DIAGNOSTICS
BUGS
AUTHOR
COPYRIGHT
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 21:48:38 GMT, April 16, 2011