xref: /freebsd/contrib/libpcap/pcap_set_immediate_mode.3pcap.in (revision 8ddb146abcdf061be9f2c0db7e391697dafad85c)

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.

PCAP_SET_IMMEDIATE_MODE 3PCAP "22 August 2018"
NAME
pcap_set_immediate_mode - set immediate mode for a not-yet-activated capture handle
SYNOPSIS
#include <pcap/pcap.h>

int pcap_set_immediate_mode(pcap_t *p, int immediate_mode);

DESCRIPTION
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 immediate_mode is non-zero, immediate mode will be set, otherwise it will not be set.
RETURN VALUE
pcap_set_immediate_mode() returns 0 on success or PCAP_ERROR_ACTIVATED if called on a capture handle that has been activated.
BACKWARD COMPATIBILITY

This function became available in libpcap release 1.5.0. In previous releases, if immediate delivery of packets is required:

on FreeBSD, NetBSD, OpenBSD, DragonFly BSD, macOS, and Solaris 11, immediate mode must be turned on with a BIOCIMMEDIATE ioctl (2), as documented in bpf(@MAN_DEVICES@) , on the descriptor returned by pcap_fileno(3PCAP), after pcap_activate(3PCAP) is called;
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);
on Digital UNIX/Tru64 UNIX, immediate mode must be turned on by doing a BIOCMBIC ioctl , as documented in packetfilter(7) , to clear the ENBATCH flag on the descriptor returned by pcap_fileno(3PCAP), after pcap_activate(3PCAP) is called;
on Windows, immediate mode must be turned on by calling pcap_setmintocopy() with a size of 0.

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, not in immediate mode, so if pcap_set_immediate_mode() is available, it should be used.

On other platforms, capture devices are always in immediate mode.

SEE ALSO
pcap(3PCAP), pcap_create(3PCAP), pcap_activate(3PCAP)