1 T_SNDVUDATA(3NSL)    Networking Services Library Functions   T_SNDVUDATA(3NSL)
   2 
   3 
   4 
   5 NAME
   6        t_sndvudata - send a data unit from one or more noncontiguous buffers
   7 
   8 SYNOPSIS
   9        #include <xti.h>
  10 
  11 
  12 
  13 
  14        int t_sndvudata(int fd, struct t_unitdata *unitdata, struct t_iovec  *iov,
  15             unsigned int iovcount);
  16 
  17 
  18 DESCRIPTION
  19        This function is used in connectionless mode to send a data unit to
  20        another transport user.  The argument  fd identifies the local
  21        transport endpoint through which data will be sent,  iovcount contains
  22        the number of non-contiguous  udata buffers and is limited to an
  23        implementation-defined value given by  T_IOV_MAX which is at least 16,
  24        and  unitdata points to a  t_unitdata structure containing the
  25        following members:
  26 
  27          struct netbuf addr;
  28          struct netbuf opt;
  29          struct netbuf udata;
  30 
  31 
  32 
  33        If the limit on  iovcount is exceeded, the function fails with
  34        TBADDATA.
  35 
  36 
  37        In  unitdata, addr specifies the protocol address of the destination
  38        user, and  opt identifies options that the user wants associated with
  39        this request. The  udata field is not used.  The user may choose not to
  40        specify what protocol options are associated with the transfer by
  41        setting the  len field of  opt to zero.  In this case, the provider may
  42        use default options.
  43 
  44 
  45        The data to be sent is identified by  iov[0] through iov [iovcount-1].
  46 
  47 
  48        Note that the limit on the total number of bytes available in all
  49        buffers passed:
  50 
  51          iov(0).iov_len + . . + iov(iovcount-1).iov_len
  52 
  53 
  54 
  55        may be constrained by implementation limits. If no other constraint
  56        applies, it will be limited by INT_MAX. In practice, the availability
  57        of memory to an application is likely to impose a lower limit on the
  58        amount of data that can be sent or received using scatter/gather
  59        functions.
  60 
  61 
  62        By default,  t_sndvudata() operates in synchronous mode and may wait if
  63        flow control restrictions prevent the data from being accepted by the
  64        local transport provider at the time the call is made.  However, if
  65        O_NONBLOCK is set by means of  t_open(3NSL) or  fcntl(2), t_sndvudata()
  66        executes in asynchronous mode and will fail under such conditions.  The
  67        process can arrange to be notified of the clearance of a flow control
  68        restriction by means of either  t_look(3NSL) or the EM interface.
  69 
  70 
  71        If the amount of data specified in  iov0 through iov [iovcount-1]
  72        exceeds the TSDU size as returned in the  tsdu field of the  info
  73        argument of t_open(3NSL) or  t_getinfo(3NSL), or is zero and sending of
  74        zero octets is not supported by the underlying transport service, a
  75        TBADDATA error is generated.  If  t_sndvudata() is called before the
  76        destination user has activated its transport endpoint (see
  77        t_bind(3NSL)), the data unit may be discarded.
  78 
  79 
  80        If it is not possible for the transport provider to immediately detect
  81        the conditions that cause the errors TBADADDR and TBADOPT, these errors
  82        will alternatively be returned by  t_rcvuderr(3NSL). An application
  83        must therefore be prepared to receive these errors in both of these
  84        ways.
  85 
  86 RETURN VALUES
  87        Upon successful completion, a value of  0 is returned. Otherwise, a
  88        value of  -1 is returned and  t_errno is set to indicate an error.
  89 
  90 VALID STATES
  91        T_IDLE.
  92 
  93 ERRORS
  94        On failure,  t_errno is set to one of the following:
  95 
  96        TBADADDR
  97                       The specified protocol address was in an incorrect
  98                       format or contained illegal information.
  99 
 100 
 101        TBADDATA
 102                       Illegal amount of data.
 103 
 104                           o      A single send was attempted specifying a TSDU
 105                                  greater than that specified in the info
 106                                  argument, or a send of a zero byte TSDU is
 107                                  not supported by the provider.
 108 
 109                           o      iovcount is greater than  T_IOV_MAX.
 110 
 111 
 112        TBADF
 113                       The specified file descriptor does not refer to a
 114                       transport endpoint.
 115 
 116 
 117        TBADOPT
 118                       The specified options were in an incorrect  format or
 119                       contained illegal information.
 120 
 121 
 122        TFLOW
 123                       O_NONBLOCK i was set, but the flow control mechanism
 124                       prevented the transport provider from accepting any data
 125                       at this time.
 126 
 127 
 128        TLOOK
 129                       An asynchronous event has occurred on this transport
 130                       endpoint.
 131 
 132 
 133        TNOTSUPPORT
 134                       This function is not supported by the underlying
 135                       transport provider.
 136 
 137 
 138        TOUTSTATE
 139                       The communications endpoint referenced by fd is not in
 140                       one of the states in which a call to this function is
 141                       valid.
 142 
 143 
 144        TPROTO
 145                       This error indicates that a communication problem has
 146                       been detected between XTI and the transport provider for
 147                       which there is no other suitable XTI error (t_errno).
 148 
 149 
 150        TSYSERR
 151                       A system error has occurred during execution of this
 152                       function.
 153 
 154 
 155 TLI COMPATIBILITY
 156        In the TLI interface definition, no counterpart of this routine was
 157        defined.
 158 
 159 ATTRIBUTES
 160        See attributes(5)  for descriptions of the following attributes:
 161 
 162 
 163 
 164 
 165        +---------------+-----------------+
 166        |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
 167        +---------------+-----------------+
 168        |MT Level       | Safe            |
 169        +---------------+-----------------+
 170 
 171 SEE ALSO
 172        fcntl(2), t_alloc(3NSL), t_open(3NSL), t_rcvudata(3NSL),
 173        t_rcvvudata(3NSL) t_rcvuderr(3NSL), t_sndudata(3NSL), attributes(5)
 174 
 175 
 176 
 177                                 August 23, 2001              T_SNDVUDATA(3NSL)