T_SNDUDATA(3NSL)    Networking Services Library Functions   T_SNDUDATA(3NSL)
NAME
       t_sndudata - send a data unit
SYNOPSIS
       #include <xti.h>       
int t_sndudata(
int fd, 
const struct t_unitdata *unitdata);
DESCRIPTION
       This routine is part of the 
XTI interfaces which evolved from the 
TLI       interfaces. 
XTI represents the future evolution of these interfaces.
       However, 
TLI interfaces are supported for compatibility. When using a       
TLI routine that has the same name as an 
XTI routine, the 
tiuser.h       header file must be used.  Refer to the  
TLI COMPATIBILITY section
       for a description of differences between the two interfaces.
       This function is used in connectionless-mode to send a data unit to
       another transport user. The argument 
fd identifies the local
       transport endpoint through which data will be sent, and 
unitdata       points to a 
t_unitdata structure containing the following members:
         struct netbuf addr;
         struct netbuf opt;
         struct netbuf udata;
       In 
unitdata, 
addr specifies the protocol address of the destination
       user, 
opt identifies 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 zero. In this case, the
       provider uses the option values currently set for the communications
       endpoint.
       If the 
len field of 
udata is zero, and sending of zero octets is not
       supported by the underlying transport service, the 
t_sndudata() will
       return  -1 with 
t_errno set to 
TBADDATA.
       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 by means of t_open(3NSL) or 
fcntl(2), 
t_sndudata()       will execute in asynchronous mode and will fail under such
       conditions. The process can arrange to be notified of the clearance
       of a flow control restriction by means of either 
t_look(3NSL) or the
       EM interface.
       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(3NSL) or       
t_getinfo(3NSL), a 
TBADDATA error will be generated. If 
t_sndudata()       is called before the destination user has activated its transport
       endpoint (see 
t_bind(3NSL)), the data unit may be discarded.
       If it is not possible for the transport provider to immediately
       detect the conditions that cause the errors 
TBADADDR and 
TBADOPT,
       these errors will alternatively be returned by 
t_rcvuderr. Therefore,
       an application must be prepared to receive these errors in both of
       these ways.
       If the call is interrupted, 
t_sndudata() will return 
EINTR and the
       datagram will not be sent.
RETURN VALUES
       Upon successful completion, a value of  
0 is returned.  Otherwise, a
       value of  -1 is returned and 
t_errno is set to indicate an error.
VALID STATES
       T_IDLE.
ERRORS
       On failure, 
t_errno is set to one of the following:       
TBADADDR                      The specified protocol address was in an incorrect
                      format or contained illegal information.       
TBADDATA                      Illegal amount of data. A single send was attempted
                      specifying a TSDU greater than that specified in the                      
info argument, or a send of a zero byte TSDU is not
                      supported by the provider.       
TBADF                      The specified file descriptor does not refer to a
                      transport endpoint.       
TBADOPT                      The specified options were in an incorrect format or
                      contained illegal information.       
TFLOW                      O_NONBLOCK was set, but the flow control mechanism
                      prevented the transport provider from accepting any
                      data at this time.       
TLOOK                      An asynchronous event has occurred on this transport
                      endpoint.       
TNOTSUPPORT                      This function is not supported by the underlying
                      transport provider.       
TOUTSTATE                      The communications endpoint referenced by  
fd is not
                      in one of the states in which a call to this function
                      is valid.       
TPROTO                      This error indicates that a communication problem has
                      been detected between XTI and the transport provider
                      for which there is no other suitable XTI error                      
(t_errno).       
TSYSERR                      A system error has occurred during execution of this
                      function.
TLI COMPATIBILITY
       The 
XTI and 
TLI interface definitions have common names but use
       different header files. This, and other semantic differences between
       the two interfaces are described in the subsections below.
   Interface Header
       The 
XTI interfaces use the header file, 
xti.h. TLI interfaces should       
not use this header.  They should use the header:
         #include <tiuser.h>
   Error Description Values
       The 
t_errno values that can be set by the 
XTI interface and cannot be
       set by the 
TLI interface are:         
TPROTO         TBADADDR         TBADOPT         TLOOK         TOUTSTATE   Notes
       Whenever this function fails with 
t_error set to 
TFLOW, O_NONBLOCK       must have been set.
   Option Buffers
       The format of the options in an 
opt buffer is dictated by the
       transport provider. Unlike the 
XTI interface, the 
TLI interface does
       not fix the buffer format.
ATTRIBUTES
       See 
attributes(7)  for descriptions of the following attributes:
       +---------------+-----------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
       +---------------+-----------------+
       |MT Level       | Safe            |
       +---------------+-----------------+
SEE ALSO
       fcntl(2), 
t_alloc(3NSL), 
t_bind(3NSL), 
t_error(3NSL),       
t_getinfo(3NSL), 
t_look(3NSL), 
t_open(3NSL), 
t_rcvudata(3NSL),       
t_rcvuderr(3NSL), 
attributes(7)                                 May 7, 1998                T_SNDUDATA(3NSL)