DLPI_SEND(3DLPI) Data Link Provider Interface Library Functions DLPI_SEND(3DLPI)

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(4P)). 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.

DLPI_EINHANDLE
Invalid DLPI handle

DLPI_EINVAL

Invalid argument

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

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Committed
MT-Level Safe

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

July 15, 2008 OmniOS