Data Link Provider Interface Library Functions dlpi_recv(3DLPI)
NAME
dlpi_recv - receive a data message using DLPI
SYNOPSIS
cc [ flag ... ] file ... -ldlpi [ library ... ]
#include
int dlpi_recv(dlpi_handle_t dh, void *saddrp,
size_t * saddrlenp, void *msgbuf, size_t *msglenp,
int msec, dlpi_recvinfo_t *recvp);
DESCRIPTION
The dlpi_recv() function attempts to receive data messages
over the DLPI link instance associated with the DLPI handledh. If dh is not in the DL_IDLE DLPI state, the attempt
fails. The caller must ensure that msgbuf is at least msglenp bytes in size. Upon success, msgbuf contains the data message received, msglenp contains the number of bytes placed in msgbuf. The caller must ensure that saddrp is at leastDLPI_PHYSADDR_MAX bytes in size and saddrlenp must contain
the length of saddrp. Upon success, saddrp contains the address of the source sending the data message and saddrlenp contains the source address length. If the caller is not interested in the source address, both saddrp and saddrlenp can be left as NULL. If the source address is not available, saddrp is not filled in and saddrlenp is set to zero.The dlpi_recvinfo_t is a structure defined in
follows: typedef struct {as uchar_t dri_destaddr[DLPI_PHYSADDR_MAX];
uchar_t dri_destaddrlen;
dlpi_addrtype_t dri_destaddrtype;
size_t dri_totmsglen;
} dlpi_recvinfo_t;
Upon success, if recvp is not set to NULL, dri_destaddr con-
tains the destination address, dri_destaddrlen contains the
destination address length, and dri_totmsglen contains the
total length of the message received. If the destinationaddress is unicast, dri_destaddrtype is set to
DLPI_ADDRTYPE_UNICAST. Otherwise, it is set to
DLPI_ADDRTYPE_GROUP.
SunOS 5.11 Last change: 22 Aug 2007 1
Data Link Provider Interface Library Functions dlpi_recv(3DLPI)
The values of msglenp and dri_totmsglen might vary when a
message larger than the size of msgbuf is received. In thatcase, the caller can use dri_totmsglen to determine the ori-
ginal total length of the message. If the handle is in raw mode, as described indlpi_open(3DLPI), msgbuf starts with the link-layer header.
See dlpi(7P). The values of saddrp, saddrlenp, and all themembers of dlpi_recvinfo_t except dri_totmsglen are invalid
because the address information is already included in thelink-layer header returned by msgbuf.
If no message is received within msec milliseconds,dlpi_recv() returns DLPI_ETIMEDOUT. If msec is 0,
dlpi_recv() does not block. If msec is -1, dlpi_recv() does
block until a data message is received.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 inor 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_ETIMEDOUT DLPI operation timed out
DLPI_EUNAVAILSAP Unavailable DLPI SAP
DLPI_FAILURE DLPI operation failed
ATTRIBUTES
See attributes(5) for description of the following attri-
butes:SunOS 5.11 Last change: 22 Aug 2007 2
Data Link Provider Interface Library Functions dlpi_recv(3DLPI)
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | Safe |
|_____________________________|_____________________________|
SEE ALSO
dlpi_bind(3DLPI), dlpi_open(3DLPI), libdlpi(3LIB), attri-
butes(5), dlpi(7P)SunOS 5.11 Last change: 22 Aug 2007 3