T_SNDUDATA(3N)

NAME
t_sndudata - send a data unit

SYNOPSIS

#include <tiuser.h>

int t_sndudata(fd, unitdata)
int fd;
struct t_unitdata *unitdata;

DESCRIPTION

t_sndudata() is used in connectionless mode to send a data unit to another transport user. fd identifies the local transport endpoint through which data will be sent, and unitdata points to a t_unitdata structure defined in <nettli/tiuser.h> as:
    struct t_unitdata {
    	struct netbuf addr;			/* address		*/
    	struct netbuf opt;			/* options		*/
    	struct netbuf udata;		/* user data		*/
    };

The maxlen, len, and buf members of the netbuf structure are described in t_accept(3N). In unitdata, addr specifies the protocol address of the destination user, opt identifies protocol-specific options that the user wants associated with this request, and udata specifies the user data to be sent. The user may choose not to specify what protocol options are associated with the transfer by setting the len field of opt to 0. In this case, the provider may use default options.

If the len field of udata is 0, no data unit will be passed to the transport provider; t_sndudata() will not send zero-length data units.

By default, t_sndudata() operates in synchronous mode and may wait if flow control restrictions prevent the data from being accepted by the local transport provider at the time the call is made. However, if T_NDELAY is set (using t_open(3N) or fcntl()), t_sndudata() will execute in asynchronous mode and will fail under such conditions.

If t_sndudata() is issued from an invalid state, or if the amount of data specified in udata exceeds the TSDU size as returned by t_open() or t_getinfo(3N), the provider will generate an EPROTO protocol error. See TSYSERR below.

RETURN VALUES

t_sndudata() returns:

0   on success.

-1  on failure and sets t_errno to indicate the error.

ERRORS

TBADF
    The specified file descriptor does not refer to a transport endpoint.

TFLOW
    T_NDELAY was set, but the flow control mechanism prevented the transport provider from accepting data at this time.

TNOTSUPPORT
    This function is not supported by the underlying transport provider.

TSYSERR
    The function failed due to a system error and set errno to indicate the error.

SEE ALSO
intro(3), t_rcvudata(3N), t_rcvuderr(3N)