DLPI_PROMISCON(3DLPI) Data Link Provider Interface Library Functions

NAME


dlpi_promiscon, dlpi_promiscoff - enable or disable DLPI promiscuous
mode

LIBRARY


Data Link Provider Interface (DLPI) Library (libdlpi, -ldlpi)

SYNOPSIS


#include <libdlpi.h>

int
dlpi_promiscon(dlpi_handle_t, dh, uint_t, level);

int
dlpi_promiscoff(dlpi_handle_t, dh, uint_t, level);

DESCRIPTION


dlpi_promiscon() enables promiscuous mode on a dlpi(4P) link instance
associated with a DLPI handle dh, at the specified level. Multiple
levels can be combined; the new level is enabled in addition to any
previously enabled levels. After enabling promiscuous mode, the caller
will be able to receive all messages destined for the DLPI link
instance at the specified level. This operation can be performed in
any DLPI state of a handle.

dlpi_promiscoff() disables promiscuous mode on a dlpi(4P) link instance
associated with DLPI handle dh, at the specified level. This operation
can be performed in any DLPI state of a handle in which promiscuous
mode is enabled at the specified level.

The level modes are:

DL_PROMISC_PHYS
Promiscuous mode at the physical level

DL_PROMISC_SAP
Promiscuous mode at the SAP level

DL_PROMISC_MULTI
Promiscuous mode for all multicast addresses

DL_PROMISC_RX_ONLY
When one or more of the above promiscuous modes is also
enabled, this option modifies it so that only inbound traffic
is received. Note that inbound here is relative to the
specific DLPI link instance. Any outgoing traffic sent via the
same link will be excluded but not other outgoing traffic,
e.g., from a VNIC atop it. When using this level, it is
recommended to set it before the others.

DL_PROMISC_INCOMING
When one or more of the above promiscuous modes is also
enabled, this option modifies it so that only inbound traffic
is received. When using this level, it is recommended to set
it before the others.

DL_PROMISC_OUTGOING
When one or more of the above promiscuous modes is also
enabled, this option modifies it so that only outbound traffic
is received. When using this level, it is recommended to set
it before the others.

Note that only one of DL_PROMISC_RX_ONLY, DL_PROMISC_INCOMING or
DL_PROMISC_OUTGOING may be enabled at a time. Trying to enable one of
DL_PROMISC_RX_ONLY, DL_PROMISC_INCOMING or DL_PROMISC_OUTGOING while
another is active will result in an error. To switch between them, you
must first call dlpi_promiscoff() to turn off the current one before
passing the desired one to dlpi_promiscon().

RETURN VALUES


On successful completion, dlpi_promiscon() and dlpi_promiscoff() return
DLPI_SUCCESS. If DL_SYSERR is returned, errno contains the specific
UNIX system error value. Otherwise, a DLPI error value defined in
<sys/dlpi.h>, or an error value listed in the following section is
returned.

ERRORS


DLPI_EBADMSG Bad DLPI message

DLPI_EINHANDLE Invalid DLPI handle

DLPI_EINVAL Invalid argument

DLPI_ETIMEDOUT Operation timed out

INTERFACE STABILITY


Committed

MT-LEVEL
Safe

SEE ALSO


libdlpi(3LIB), dlpi(4P), attributes(7)

illumos November 3, 2025 illumos