DLPI_RECV(3DLPI)              Data Link Provider Interface Library Functions
NAME
       dlpi_recv - receive a data message using DLPI
SYNOPSIS
       cc [ 
flag ... ] 
file ... 
-ldlpi [ 
library ... ]
       #include <libdlpi.h>       
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 handle 
dh. 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 least 
DLPI_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 
<libdlpi.h> as follows:
         typedef struct {
                 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 contains the
       destination address, 
dri_destaddrlen contains the destination address
       length, and 
dri_totmsglen contains the total length of the message
       received. If the destination address is unicast, 
dri_destaddrtype is
       set to 
DLPI_ADDRTYPE_UNICAST. Otherwise, it is set to       
DLPI_ADDRTYPE_GROUP.
       The values of 
msglenp and 
dri_totmsglen might vary when a message
       larger than the size of 
msgbuf is received. In that case, the caller
       can use 
dri_totmsglen to determine the original total length of the
       message.
       If the handle is in raw mode, as described in 
dlpi_open(3DLPI),       
msgbuf starts with the link-layer header. See 
dlpi(4P). The values of       
saddrp, 
saddrlenp, and all the members of 
dlpi_recvinfo_t except       
dri_totmsglen are invalid because the address information is already
       included in the link-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 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_ETIMEDOUT                           DLPI operation timed out       
DLPI_EUNAVAILSAP                           Unavailable 
DLPI SAP       DLPI_FAILURE                           DLPI operation failed
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), 
dlpi_open(3DLPI), 
libdlpi(3LIB), 
dlpi(4P),       
attributes(7)                               August 22, 2007              DLPI_RECV(3DLPI)