DLPI_INFO(3DLPI) Data Link Provider Interface Library Functions

NAME


dlpi_info - get DLPI information

SYNOPSIS


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

int dlpi_info(dlpi_handle_t dh, dlpi_info_t *infop,
uint_t opt);


DESCRIPTION


The dlpi_info() function provides DLPI information about the open
DLPI link instance associated with DLPI handle dh. DLPI information
can be retrieved in any state of dh, but some of the information
might not be available if dh is in the DL_UNBOUND DLPI state. The
DLPI information received is copied into infop, which must point to a
dlpi_info_t allocated by the caller. The opt argument is reserved
for future use and must be set to 0.


The dlpi_info_t is a structure defined in <libdlpi.h> as follows:

typedef struct {
uint_t di_opts;
uint_t di_max_sdu;
uint_t di_min_sdu;
uint_t di_state;
uchar_t di_mactype;
char di_linkname[DLPI_LINKNAME_MAX];
uchar_t di_physaddr[DLPI_PHYSADDR_MAX];
uchar_t di_physaddrlen;
uchar_t di_bcastaddr[DLPI_PHYSADDR_MAX];
uchar_t di_bcastaddrlen;
uint_t di_sap;
int di_timeout;
dl_qos_cl_sel1_t di_qos_sel;
dl_qos_cl_range1_t di_qos_range;
} dlpi_info_t;


di_opts
Reserved for future dlpi_info_t expansion.


di_max_sdu
Maximum message size, in bytes, that the DLPI link
is able to accept for transmission. The value is
guaranteed to be greater than or equal to
di_min_sdu.


di_min_sdu
Minimum message size, in bytes, that the DLPI link
is able to accept for transmission. The value is
guaranteed to be greater than or equal to one.


di_state
Current DLPI state of dh; either DL_UNBOUND or
DL_IDLE.


di_mactype
MAC type supported by the DLPI link associated
with dh. See <sys/dlpi.h> for the list of possible
MAC types.


di_linkname
Link name associated with DLPI handle dh.


di_physaddr
Link-layer physical address of bound dh. If dh is
in the DL_UNBOUND DLPI state, the contents of
di_physaddr are unspecified.


di_physaddrlen
Physical address length, in bytes. If dh is in the
DL_UNBOUND DLPI state, di_physaddrlen is set to
zero.


di_bcastaddr
Link-layer broadcast address. If the di_mactype of
the DLPI link does not support broadcast, the
contents of di_bcastaddr are unspecified.


di_bcastaddrlen
Link-layer broadcast address length, in bytes. If
the di_mactype of the DLPI link does not support
broadcast, di_bcastaddrlen is set to zero.


di_sap
SAP currently bound to handle. If dh is in the
DL_UNBOUND DLPI state, di_sap is set to zero.


di_timeout
Current timeout value, in seconds, set on the dlpi
handle.


di_qos_sel
Current QOS parameters supported by the DLPI link
instance associated with dh. Unsupported QOS
parameters are set to DL_UNKNOWN.


di_qos_range
Available range of QOS parameters supported by a
DLPI link instance associated with the DLPI handle
dh. Unsupported QOS range values are set to
DL_UNKNOWN.


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 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_EMODENOTSUP
Unsupported DLPI connection mode


DLPI_ETIMEDOUT
DLPI operation timed out


DLPI_EVERNOTSUP
Unsupported DLPI Version


DLPI_FAILURE
DLPI operation failed


EXAMPLES


Example 1: Get link-layer broadcast address




The following example shows how dlpi_info() can be used.


#include <libdlpi.h>

uchar_t *
get_bcastaddr(const char *linkname, uchar_t *baddrlenp)
{
dlpi_handle_t dh;
dlpi_info_t dlinfo;
uchar_t *baddr;

if (dlpi_open(linkname, &dh, 0) != DLPI_SUCCESS)
return (NULL);

if (dlpi_info(dh, &dlinfo, 0) != DLPI_SUCCESS) {
dlpi_close(dh);
return (NULL);
}
dlpi_close(dh);

*baddrlenp = dlinfo.di_bcastaddrlen;
if ((baddr = malloc(*baddrlenp)) == NULL)
return (NULL);

return (memcpy(baddr, dlinfo.di_bcastaddr, *baddrlenp));
}


ATTRIBUTES


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


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

SEE ALSO


dlpi_bind(3DLPI), libdlpi(3LIB), attributes(7)

August 22, 2007 DLPI_INFO(3DLPI)

tribblix@gmail.com :: GitHub :: Privacy