This target passes the packet to userspace using the
\fBnfnetlink_queue\fP handler.  The packet is put into the queue
identified by its 16-bit queue number.  Userspace can inspect
and modify the packet if desired. Userspace must then drop or
reinject the packet into the kernel.  Please see libnetfilter_queue
for details.
.B
nfnetlink_queue
was added in Linux 2.6.14. The \fBqueue-balance\fP option was added in Linux 2.6.31,
\fBqueue-bypass\fP in 2.6.39.
.TP
\fB\-\-queue\-num\fP \fIvalue\fP
This specifies the QUEUE number to use. Valid queue numbers are 0 to 65535. The default value is 0.
.PP
.TP
\fB\-\-queue\-balance\fP \fIvalue\fP\fB:\fP\fIvalue\fP
This specifies a range of queues to use. Packets are then balanced across the given queues.
This is useful for multicore systems: start multiple instances of the userspace program on
queues x, x+1, .. x+n and use "\-\-queue\-balance \fIx\fP\fB:\fP\fIx+n\fP".
Packets belonging to the same connection are put into the same nfqueue.
.PP
.TP
\fB\-\-queue\-bypass\fP
By default, if no userspace program is listening on an NFQUEUE, then all packets that are to be queued
are dropped.  When this option is used, the NFQUEUE rule behaves like ACCEPT instead, and the packet
will move on to the next table.
.PP
.TP
\fB\-\-queue\-cpu-fanout\fP
Available starting Linux kernel 3.10. When used together with
\fB--queue-balance\fP this will use the CPU ID as an index to map packets to
the queues. The idea is that you can improve performance if there's a queue
per CPU. This requires \fB--queue-balance\fP to be specified.
