t_rcvudata(S) (TLI/XTI) 6 January 1993 t_rcvudata(S) Name t_rcvudata - receive a data unit Syntax TLI syntax cc . . . -lnsls #include <sys/tiuser.h> int t_rcvudata (fd, unitdata, flags) int fd; struct t_unitdata *unitdata; int *flags; XTI syntax cc . . . -lxti #include <xti.h> int t_rcvudata (fd, unitdata, flags) int fd; struct t_unitdata *unitdata; int *flags; Description This function is used in connectionless mode to receive a data unit from another transport user. fd identifies the local transport endpoint through which data is received, unitdata holds information associated with the received data unit, and flags is set on return to indicate that the complete data unit was not received. unitdata points to a tunitdata structure containing the following members: struct netbuf addr; /* caller's address */ struct netbuf opt; /* options */ struct netbuf udata; /* user data returned by caller */ The maxlen field of addr, opt, and udata must be set before issuing this function to indicate the maximum size of the buffer for each. On return from this call, addr specifies the protocol address of the sending user, opt identifies protocol-specific options that were associ- ated with this data unit, and udata specifies the user data that was received. By default, trcvudata operates in synchronous mode and waits for a data unit to arrive if none is currently available. However, if ONONBLOCK is set (via topen or fcntl), trcvudata executes in asynchronous mode and fails if no data units are available. If the buffer defined in the udata field of unitdata is not large enough to hold the current data unit, the buffer is filled and TMORE is set in flags on return to indicate that another trcvudata should be issued to retrieve the rest of the data unit. Subsequent trcvudata call(s) return zero for the length of the address and options until the full data unit has been received. On failure, terrno may be set to one of the following: [TBADF] The specified file descriptor does not refer to a transport endpoint. [TBUFOVFLW] The number of bytes allocated for the incoming proto- col address or options is not sufficient to store the information. The unit data information to be returned in unitdata is discarded. [TLOOK] An asynchronous event has occurred on this transport endpoint and requires immediate attention. [TNODATA] ONONBLOCK was set, but no data units are currently available from the transport provider. [TNOTSUPPORT] The TCLTS service type is not supported by the underlying transport provider. [TOUTSTATE] (XTI only.) The state should have been TIDLE when this routine was called. [TSYSERR] A system error occurred during execution of this function. One possibility, indicated by errno set to EPROTO, is a protocol error. Diagnostics The trcvudata function returns 0 on successful completion and -1 on failure, and terrno is set to indicate the error. See also netbuf(FP), trcvuderr(S), tsndudata(S) Standards conformance trcvudata is conformant with: AT&T SVID Issue 2; X/Open Portability Guide, Issue 3, 1989; and Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2).