t_sndudata(3)t_sndudata(3)NAMEt_sndudata - Send a data unit
SYNOPSIS
#include <xti.h>
int t_sndudata(
int fd,
struct t_unitdata *unitdata );
LIBRARY
XTI Library (libxti.a)
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
t_sndudata(): XNS5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
PARAMETERS
The following table summarizes the relevance of input and output param‐
eters before and after t_sndudata() is called:
──────────────────────────────────────────────────
Parameters Before Call After Call
──────────────────────────────────────────────────
fd y n
unitdata->addr.maxlen n n
unitdata->addr.len y n
unitdata->addr.buf y(y) n
unitdata->opt.maxlen n n
unitdata->opt.len y n
unitdata->opt.buf o(o) n
unitdata->udata.maxlen n n
unitdata->udata.len y n
unitdata->udata.buf y(y) n
──────────────────────────────────────────────────
Notes to Table: This is a meaningful parameter. The content of the
object pointed to by y is meaningful. This is a meaningful but
optional parameter. The content of the object pointed to by o is mean‐
ingful. This is not a meaningful parameter. Specifies a file descrip‐
tor returned by the t_open() function that identifies the transport
endpoint through which data is sent. Points to a type t_unitdata
structure used to specify a data unit being sent through the transport
endpoint specified by the fd parameter. The t_unitdata structure has
the following members: References a buffer for protocol address infor‐
mation of the remote transport user. The type netbuf structure refer‐
enced by this member is defined in the xti.h include file and has the
following members: Specifies a maximum byte length of the data buffer.
Specifies the actual byte length of the data written to the buffer.
Points to the buffer location. Identifies options that the user wants
associated with this request. The user may choose not to specify what
protocol options are associated with the transfer by setting the len
field of opt to zero. In this case, the provider may use default
options. Specifies the user data unit that is being sent to the remote
transport user.
The unitdata->addr.maxlen, unitdata->opt.maxlen, and unit‐
data->udata.maxlen parameters are not meaningful with the
t_sndudata() function.
If the udata.len parameter is specified as 0 (zero), and the
underlying transport service does not support the sending of 0
(zero) octets, t_errno is set to [TBADDATA] and -1 is returned.
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(), a [TBADDATA] error is generated. If t_sndudata()
is called before the destination user has activated its trans‐
port endpoint, the data unit may be discarded. (See t_bind().)
DESCRIPTION
The t_sndudata() function is an XTI connectionless service function
that is used to send a data unit to a remote transport user. By
default, t_sndudata() executes in the synchronous operating mode. The
t_sndudata() function waits for the transport provider to accept the
data before returning control to the calling transport user.
When the transport endpoint specified by the fd parameter has been pre‐
viously opened with the O_NONBLOCK option set in the t_open() or
fcntl() functions, the t_sndudata() function executes in asynchronous
mode. In asynchronous mode, when a data unit is not accepted control is
immediately returned to the caller. The t_look() function or the EM
interface can be used to determine when flow control restrictions have
been lifted.
ERRORS
If the t_sndudata() function fails, t_errno may be set to one of the
following values: Illegal amount of data. Zero octets is not supported.
File descriptor fd is not a valid transport endpoint. Asynchronous
mode is indicated because O_NONBLOCK was set, but the transport
provider cannot accept the data because of flow-control restrictions.
An asynchronous event has occurred on this transport endpoint and
requires immediate attention. This function is not supported by the
underlying transport provider. The t_sndudata() function was issued
in the wrong sequence on the transport endpoint referenced by the fd
parameter. A system error occurred during execution of this function.
A protocol error may not cause the t_sndudata() function to fail until
a subsequent call is made to access the transport endpoint specified by
the fd parameter. The specified protocol address was in an incorrect
format or contained illegal information. The specified options were in
an incorrect format or contained illegal information. This error indi‐
cates that a communication problem has been detected between XTI and
the transport provider for which there is no other suitable
XTI(t_errno).
VALID STATES
The t_sndudata() function can be called only in the T_IDLE transport
provider state.
RETURN VALUE
Upon successful completion, a value of 0 (zero) is returned. Otherwise,
a value of -1 is returned and t_errno is set to indicate the error.
SEE ALSO
Functions: fcntl(2), t_alloc(3), t_open(3), t_rcvuderr(3), t_rcvu‐
data(3)
Standards: standards(5)
Network Programmer's Guide
t_sndudata(3)