DLPI_OPEN(3DLPI) | Data Link Provider Interface Library Functions | DLPI_OPEN(3DLPI) |
dlpi_open - open DLPI link
cc [ flag ... ] file ... -ldlpi [ library ... ] #include <libdlpi.h> int dlpi_open(const char *linkname, dlpi_handle_t *dhp,
uint_t flags);
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
DLPI_IPNETINFO
DLPI_NATIVE
DLPI_PASSIVE
DLPI_RAW
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.
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.
The dlpi_open() function will fail if:
DLPI_EBADLINK
DLPI_EIPNETINFONOTSUP
DLPI_ELINKNAMEINVAL
DLPI_ENOLINK
DLPI_ERAWNOTSUP
DLPI_ETIMEDOUT
DLPI_FAILURE
See attributes(7) for description of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Committed |
MT-Level | Safe |
dlpi_close(3DLPI), dlpi_set_timeout(3DLPI), libdlpi(3LIB), ipnet(4D), dlpi(4P), attributes(7)
November 17, 2008 | OmniOS |