---
name: "ipq_create_handle"
section: "3"
platform: "linux"
package: "iptables"
version: "1:1.8.13-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ipq_create_handle"
---

# ipq\_create\_handle(3)

create and destroy libipq handles.

## NAME

ipq\_create\_handle, ipq\_destroy\_handle — create and destroy libipq handles.

## SYNOPSIS

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

**struct ipq\_handle \*ipq\_create\_handle(uint32\_t** *flags***, uint32\_t** *protocol***);**\
 **int ipq\_destroy\_handle(struct ipq\_handle \****h***);**

## DESCRIPTION

The **ipq\_create\_handle** function initialises libipq for an application, attempts to bind to the Netlink socket used by ip\_queue, and returns an opaque context handle.  It should be the first libipq function to be called by an application.  The handle returned should be used in all subsequent library calls which  require a handle parameter.

The *flags* parameter is not currently used and should be set to zero by the application for forward compatibility.

The *protocol* parameter is used to specify the protocol of the packets to be queued. Valid values are NFPROTO\_IPV4 for IPv4 and NFPROTO\_IPV6 for IPv6. Currently, only one protocol may be queued at a time for a handle.

The **ipq\_destroy\_handle** function frees up resources allocated by **ipq\_create\_handle**, and should be used when the handle is no longer required by the application.

## RETURN VALUES

On success, **ipq\_create\_handle** returns a pointer to a context handle.\
 On failure, NULL is returned.

On success, **ipq\_destroy\_handle** returns zero.\
 On failure, -1 is returned.

## ERRORS

On failure, a descriptive error message will be available via the **ipq\_errstr** function.

## 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

[**iptables**(8)](/iptables/8.md), [**libipq**(3)](/libipq/3.md).
