dlpi_recv(3dlpi) [opensolaris man page]
dlpi_recv(3DLPI) 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 <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 con- tains 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 suc- cess, 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(7P). The values of sad- drp, 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(5) 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), attributes(5), dlpi(7P) SunOS 5.11 22 Aug 2007 dlpi_recv(3DLPI)
Check Out this Related Man Page
dlpi_enabnotify(3DLPI) Data Link Provider Interface Library Functions dlpi_enabnotify(3DLPI) NAME
dlpi_enabnotify - enable DLPI notification SYNOPSIS
cc [ flag... ] file... -ldlpi [ library... ] #include <libdlpi.h> int dlpi_enabnotify(dlpi_handle_t dh, uint_t notes, dlpi_notifyfunc_t *funcp, void *arg, dlpi_notifyid_t *id); typedef void dlpi_notifyfunc_t(dlpi_handle_t, dlpi_notifyinfo_t *, void *); DESCRIPTION
The dlpi_enabnotify() function enables a notification callback for the set of events specified in notes, which must be one or more (by a logical OR operation) of the DLPI notifications documented in dlpi(7P). The callback function funcp is registered with the DLPI handle dh and is invoked when dh receives notification for any of the specified event types. Upon success, id contains the identifier associated with the registration. Multiple event types can be registered for a callback function on the DLPI handle dh. Similarly, the same event type can be registered mul- tiple times on the same handle. Once a callback has been registered, libdlpi will check for notification events on the DLPI handle dh, when exchanging DLPI messages with the underlying DLPI link instance. The dlpi_recv(3DLPI) function will always check for notification events, but other libdlpi operations may also lead to an event callback being invoked. Although there may be no expected data messages to be received, dlpi_recv() can be called, as shown below, with a null buffer to force a check for pending events on the underlying DLPI link instance. dlpi_recv(dh, NULL, NULL, NULL, NULL, 0, NULL); When a notification event of interest occurs, the callback function is invoked with the arguments arg, originally passed to dlpi_disabno- tify(3DLPI), and infop, whose members are described below. uint_t dni_note Notification event type. uint_t dni_speed Current speed, in kilobits per second, of the DLPI link. Valid only for DL_NOTE_SPEED. uint_t dni_size Current maximum message size, in bytes, that the DLPI link is able to accept for transmission. Valid only for DL_NOTE_SDU_SIZE. uchar_t dni_physaddrlen Link-layer physical address length, in bytes. Valid only for DL_NOTE_PHYS_ADDR. uchar_t dni_physaddr[] Link-layer physical address of DLPI link. Valid only for DL_NOTE_PHYS_ADDR. The libdlpi library will allocate and free the dlpi_notifyinfo_t structure and the caller must not allocate the structure or perform any operations that require its size to be known. The callback is not allowed to block. This precludes calling dlpi_enabnotify() from a callback, but non-blocking libdlpi functions, including dlpi_disabnotify(), can be called. 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_EINHANDLE A DLPI handle is invalid. DLPI_EINVAL An argument is invalid. DLPI_ENOTEIDINVAL The DLPI notification ID is invalid. DLPI_ENOTENOTSUP The DLPI notification is not supported by the link. DLPI_ETIMEDOUT The DLPI operation timed out. DLPI_FAILURE The DLPI operation failed. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Committed | +-----------------------------+-----------------------------+ |MT-Level |Safe | +-----------------------------+-----------------------------+ SEE ALSO
dlpi_disabnotify(3DLPI), dlpi_recv(3DLPI), libdlpi(3LIB), attributes(5), dlpi(7P) SunOS 5.11 10 Mar 2009 dlpi_enabnotify(3DLPI)