DLPI_SEND(3DLPI) Data Link Provider Interface Library Functions


dlpi_send - send a data message using DLPI


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

int dlpi_send(dlpi_handle_t dh, const void *daddrp,
size_t daddrlen, const void *msgbuf, size_t msglen,
const dlpi_sendinfo_t *sendp);


The dlpi_send() function attempts to send the contents of msgbuf over the
DLPI link instance associated with the DLPI handle dh to the destination
address specified by daddrp. The size of msgbuf and daddrp are provided
by the msglen and daddrlen arguments, respectively. The attempt will fail
if dh is not in the DL_IDLE DLPI state, the address named by daddrp is
invalid, daddrlen is larger than DLPI_PHYSADDR_MAX, or msglen is outside
the range reported by dlpi_info(3DLPI).

If the sendp argument is NULL, data is sent using the bound SAP
associated with dh (see dlpi_bind(3DLPI)) and with default priority.
Otherwise, sendp must point to a dlpi_sendinfo_t structure defined in
<libdlpi.h> as follows:

typedef struct {
uint_t dsi_sap;
dl_priority_t dsi_prio;
} dlpi_sendinfo_t;

The dsi_sap value indicates the SAP to use for the message and the
dsi_prio argument indicates the priority. The priority range spans from
0 to 100, with 0 being the highest priority. If one wishes to only alter
the SAP or priority (but not both), the current SAP can be retrieved
using dlpi_info(3DLPI), and the default priority can be specified by
using the DL_QOS_DONT_CARE constant.

If the handle is in raw mode (see DLPI_RAW in dlpi_open(3DLPI)), msgbuf
must start with the link-layer header (see dlpi(7P)). In raw mode, the
contents of daddrp and sendp are ignored, as they are already specified
by the link-layer header in msgbuf.

If msgbuf is accepted for delivery, no error is returned. However,
because only unacknowledged connectionless service (DL_CLDLS) is
currently supported, a successful return does not guarantee that the data
will be successfully delivered to daddrp.


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.


Invalid DLPI handle

Invalid argument


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

|Interface Stability | Committed |
|MT-Level | Safe |


dlpi_bind(3DLPI), dlpi_info(3DLPI), dlpi_open(3DLPI), libdlpi(3LIB),
attributes(5), dlpi(7P)

July 15, 2008 DLPI_SEND(3DLPI)