.\"
.\" Copyright (c) 1994, 1996, 1997
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that: (1) source code distributions
.\" retain the above copyright notice and this paragraph in its entirety, (2)
.\" distributions including binary code include the above copyright notice and
.\" this paragraph in its entirety in the documentation or other materials
.\" provided with the distribution, and (3) all advertising materials mentioning
.\" features or use of this software display the following acknowledgement:
.\" ``This product includes software developed by the University of California,
.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
.\" the University nor the names of its contributors may be used to endorse
.\" or promote products derived from this software without specific prior
.\" written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.TH PCAP_SET_IMMEDIATE_MODE 3PCAP "23 August 2018"
.SH NAME
pcap_set_immediate_mode \- set immediate mode for a not-yet-activated capture
handle
.SH SYNOPSIS
.nf
.ft B
#include <pcap/pcap.h>
.LP
.ft B
int pcap_set_immediate_mode(pcap_t *p, int immediate_mode);
.ft
.fi
.SH DESCRIPTION
.BR pcap_set_immediate_mode ()
sets whether immediate mode should be set on a capture handle when
the handle is activated.  In immediate mode, packets are always
delivered as soon as they arrive, with no buffering.
If
.I immediate_mode
is non-zero, immediate mode will be set, otherwise it will not be set.
.SH RETURN VALUE
.BR pcap_set_immediate_mode ()
returns
.B 0
on success or
.B PCAP_ERROR_ACTIVATED
if called on a capture handle that has been activated.
.SH BACKWARD COMPATIBILITY
.PP
This function became available in libpcap release 1.5.0.  In previous
releases, if immediate delivery of packets is required:
.IP
on FreeBSD, NetBSD, OpenBSD, DragonFly BSD, macOS, and Solaris 11,
immediate mode must be turned on with a
.B BIOCIMMEDIATE
.BR ioctl (2),
as documented in
.BR bpf (@MAN_DEVICES@),
on the descriptor returned by
.BR pcap_fileno (3PCAP),
after
.BR pcap_activate (3PCAP)
is called;
.IP
on Solaris 10 and earlier versions of Solaris, immediate mode must be
turned on by using a read timeout of 0 when opening the device (this
will not provide immediate delivery of packets on other platforms, so
don't assume it's sufficient);
.IP
on Digital UNIX/Tru64 UNIX, immediate mode must be turned on by doing a
.B BIOCMBIC
.BR ioctl (),
as documented in
.BR packetfilter (7),
to clear the
.B ENBATCH
flag on the descriptor returned by
.BR pcap_fileno (3PCAP),
after
.BR pcap_activate (3PCAP)
is called;
.IP
on Windows, immediate mode must be turned on by calling
.BR pcap_setmintocopy ()
with a size of 0.
.PP
On Linux, with previous releases of libpcap, capture devices are always
in immediate mode; however, in 1.5.0 and later, they are, by default,
.B not
in immediate mode, so if
.BR pcap_set_immediate_mode ()
is available, it should be used.
.PP
On other platforms, capture devices are always in immediate mode.
.SH SEE ALSO
.BR pcap (3PCAP),
.BR pcap_create (3PCAP),
.BR pcap_activate (3PCAP)
