t_sndudata(3N) t_sndudata(3N)
NAME
t_sndudata - send a data unit
SYNOPSIS
cc [options] file -lnsl
#include <xti.h>
int t_sndudata(int fd, struct t_unitdata *unitdata);
Parameters
fd the file descriptor for the transport endpoint
through which data will be sent.
unitdata points to the t_unitdata structure associated with
the transmitted data unit.
DESCRIPTION
This function is a TLI/XTI data transfer routine used in
connectionless mode to send a data unit to another transport
user. Data is sent through the transport endpoint specified
by fd, which must be bound, and unitdata points to information
associated with the data unit.
This function is a service of connectionless mode transport
providers and is supported only if the provider returned
service type T_CLTS on t_open or t_getinfo.
Structure Definitions
The unitdata argument points to a t_unitdata structure
containing the following members:
struct netbuf addr; /* address */
struct netbuf opt; /* options */
struct netbuf udata; /* user data */
netbuf is described in intro(3). 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, and the sending of 0 bytes is
not supported by the underlying transport provider, t_sndudata
will return -1 with t_errno set to TBADDATA.
Copyright 1994 Novell, Inc. Page 1
t_sndudata(3N) t_sndudata(3N)
Return Values
t_sndudata returns 0 on successful completion and -1 on
failure t_errno is set to indicate the error.
Errors
On failure, t_errno may be set to one of the following:
TBADF The specified file descriptor does not refer to a
transport endpoint.
TFLOW O_NONBLOCK 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 A system error has occurred during execution of this
function. (An EPROTO error may not cause t_sndudata
to fail until subsequent access of the transport
endpoint.)
TBADDATA nbytes is 0 and sending 0 bytes is not supported by
the transport provider.
TLOOK An asynchronous event has occurred on the transport
endpoint specified by fd and requires immediate
attention.
TBADADDR The specified protocol address was in an incorrect
format or contained invalid information. (This
error may alternatively be returned by t_rcvuderr.)
TBADOPT The specified protocol options were in an incorrect
format or contained invalid information. (This
error may alternatively be returned by t_rcvuderr.)
TOUTSTATE The function was issued in the wrong sequence on the
transport endpoint referenced by fd.
TPROTO A communication problem has been detected with the
transport provider and there is no other value of
t_errno to describe the error condition.
Copyright 1994 Novell, Inc. Page 2
t_sndudata(3N) t_sndudata(3N)
State Transitions
On entry, T_IDLE; unchanged on exit.
Files
/usr/lib/libxti.so
X/Open Transport Interface Library (shared
object)
/usr/lib/libnsl.so
Network Services Library (shared object)
USAGE
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 O_NONBLOCK is set (via t_open or fcntl),
t_sndudata will execute in asynchronous mode and will fail
under such conditions.
The calling process can use t_look or the Event Management
Interface to determine when flow control restrictions, if any,
have been cleared.
Warnings
If t_sndudata is issued before the destination user has
activated its transport endpoint (see t_bind), the data unit
may be discarded.
If t_sndudata is issued from an invalid state, or if the
amount of data specified in udata exceeds the TSDU size as
returned in the tsdu field of the info argument of t_open or
t_getinfo, the provider will generate an EPROTO protocol
error. If the state is invalid, this error may not occur
until a subsequent reference is made to the transport
endpoint.
If a unit data error is received, a subsequent call should be
made to t_rcvuderr to check for conditions indicated by
TBADADDR and TBADOPT, which are not always returned by
t_sndudata.
REFERENCES
fcntl(2), intro(3), t_bind(3N), t_getinfo(3N), t_open(3N),
t_rcvudata(3N), t_rcvuderr(3N)
Copyright 1994 Novell, Inc. Page 3