DLPI_OPEN(3DLPI) Data Link Provider Interface Library Functions

NAME


dlpi_open - open DLPI link

SYNOPSIS


cc [ flag ... ] file ... -ldlpi [ library ... ]
#include <libdlpi.h>

int dlpi_open(const char *linkname, dlpi_handle_t *dhp,
uint_t flags);


DESCRIPTION


The dlpi_open() function creates an open instance of the DLPI Version
2 link named by linkname and associates it with a dynamically-
allocated dlpi_handle_t, which is returned to the caller in dhp upon
success. The DLPI handle is left in the DL_UNBOUND DLPI state after a
successful open of the DLPI link. The DLPI handles can only be used
by one thread at a time, but multiple handles can be used by multiple
threads. This function can open both DL_STYLE1 and DL_STYLE2 DLPI
links.


By default (if DLPI_DEVIPNET is not set in flags), the dlpi_open()
function scans the /dev/net and /dev directories for DLPI links, in
order. Within each scanned directory, dlpi_open() first looks for a
matching DL_STYLE1 link, then for a matching DL_STYLE2 link. If
provider is considered the linkname with its trailing digits removed,
a matching DL_STYLE1 link has a filename of linkname, and a matching
DL_STYLE2 link has a filename of provider. If a DL_STYLE2 link is
opened, dlpi_open() automatically performs the necessary DLPI
operations to place the DLPI link instance and the associated DLPI
handle in the DL_UNBOUND state. See dlpi(4P) for the definition of
linkname.


If DLPI_DEVIPNET is set in flags, dlpi_open() opens the file linkname
in /dev/ipnet as a DL_STYLE1 DLPI device and does not look in any
other directories.


The value of flags is constructed by a bitwise-inclusive-OR of the
flags listed below, defined in <libdlpi.h>.

DLPI_DEVIPNET
Specify that the named DLPI device is an IP
observability device (see ipnet(4D)), and dl_open()
will open the device from the /dev/ipnet/
directory.


DLPI_IPNETINFO
This flag is applicable only when opening IP
Observability devices (with DLPI_DEVIPNET or by
opening the /dev/lo0 device). This flag causes the
ipnet driver to prepend an ipnet header to each
received IP packet. See ipnet(4D) for the contents
of this header.


DLPI_NATIVE
Enable DLPI native mode (see DLIOCNATIVE in
dlpi(4P)) on a DLPI link instance. Native mode
persists until the DLPI handle is closed by
dlpi_close(3DLPI).


DLPI_PASSIVE
Enable DLPI passive mode (see DL_PASSIVE_REQ in
dlpi(4P)) on a DLPI link instance. Passive mode
persists until the DLPI handle is closed by
dlpi_close(3DLPI).


DLPI_RAW
Enable DLPI raw mode (see DLIOCRAW in dlpi(4P)) on
a DLPI link instance. Raw mode persists until the
DLPI handle is closed by dlpi_close(3DLPI).


Each DLPI handle has an associated timeout value that is used as a
timeout interval for certain libdlpi operations. The default timeout
value ensures that DLPI_ETIMEDOUT is returned from a libdlpi
operation only in the event that the DLPI link becomes unresponsive.
The timeout value can be changed with dlpi_set_timeout(3DLPI),
although this should seldom be necessary.

RETURN VALUES


Upon success, DLPI_SUCCESS is returned. If DL_SYSERR is returned,
errno contains the specific UNIX system error value. Otherwise, a
DLPI error value defined in <sys/dlpi.h> or listed in the following
section is returned.

ERRORS


The dlpi_open() function will fail if:

DLPI_EBADLINK
Bad DLPI link


DLPI_EIPNETINFONOTSUP
The DLPI_IPNETINFO flag was set but the
device opened does not support the
DLIOCIPNETINFO ioctl.


DLPI_ELINKNAMEINVAL
Invalid DLPI linkname


DLPI_ENOLINK
DLPI link does not exist


DLPI_ERAWNOTSUP
DLPI raw mode not supported


DLPI_ETIMEDOUT
DLPI operation timed out


DLPI_FAILURE
DLPI operation failed


ATTRIBUTES


See attributes(7) for description of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+

SEE ALSO


dlpi_close(3DLPI), dlpi_set_timeout(3DLPI), libdlpi(3LIB), ipnet(4D),
dlpi(4P), attributes(7)

November 17, 2008 DLPI_OPEN(3DLPI)

tribblix@gmail.com :: GitHub :: Privacy