| .TH IPQ_SET_MODE 3 "16 October 2001" "Linux iptables 1.2" "Linux Programmer's Manual"  | 
 | .\" | 
 | .\" $Id: ipq_set_mode.3,v 1.1 2000/11/20 14:13:32 jamesm Exp $ | 
 | .\" | 
 | .\"     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_set_mode - set the ip_queue queuing mode | 
 | .SH SYNOPSIS | 
 | .B #include <linux/netfilter.h> | 
 | .br | 
 | .B #include <libipq.h> | 
 | .sp | 
 | .BI "int ipq_set_mode(const struct ipq_handle *" h ", u_int8_t " mode ", size_t " range ); | 
 | .SH DESCRIPTION | 
 | The | 
 | .B 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. | 
 | .PP | 
 | The | 
 | .I h | 
 | parameter is a context handle which must previously have been returned  | 
 | successfully from a call to | 
 | .BR ipq_create_handle . | 
 | .PP | 
 | The | 
 | .I mode | 
 | parameter must be one of: | 
 | .TP | 
 | .B IPQ_COPY_META | 
 | Copy only packet metadata to userspace. | 
 | .TP | 
 | .B IPQ_COPY_PACKET | 
 | Copy packet metadata and packet payloads to userspace. | 
 | .PP | 
 | The | 
 | .I range | 
 | parameter is used to specify how many bytes of the payload to copy | 
 | to userspace.  It is only valid for | 
 | .B IPQ_COPY_PACKET | 
 | mode and is otherwise ignored.  The maximum useful value for | 
 | .I range | 
 | is 65535 (greater values will be clamped to this by ip_queue). | 
 | .PP | 
 | .B ipq_set_mode | 
 | is usually used immediately following | 
 | .B ipq_create_handle | 
 | to enable the flow of packets to userspace. | 
 | .PP | 
 | 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. | 
 | .SH RETURN VALUE | 
 | On failure, -1 is returned. | 
 | .br | 
 | On success, a non-zero positive value is returned. | 
 | .SH ERRORS | 
 | On failure, a descriptive error message will be available | 
 | via the | 
 | .B ipq_errstr | 
 | function. | 
 | .SH DIAGNOSTICS | 
 | A relatively common failure may occur if the ip_queue module is not loaded. | 
 | In this case, the following code excerpt: | 
 | .PP | 
 | .RS | 
 | .nf | 
 | status = ipq_set_mode(h, IPQ_COPY_META, 0); | 
 | if (status < 0) { | 
 | 	ipq_perror("myapp"); | 
 | 	ipq_destroy_handle(h); | 
 | 	exit(1); | 
 | } | 
 | .RE | 
 | .fi | 
 | .PP | 
 | would generate the following output: | 
 | .PP | 
 | .I myapp: Failed to send netlink message: Connection refused | 
 | .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 libipq (3), | 
 | .BR iptables (8). |