MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Networking Services Library Functions           trcvvudata(3NSL)



NAME
     trcvvudata - receive a data unit into one or  more  noncon-
     tiguous buffers

SYNOPSIS
     #include 



     int trcvvudata(int fd, struct tunitdata *unitdata, struct tiovec *iov,
          unsigned int iovcount, int *flags);


DESCRIPTION
     This function is used in connectionless mode  to  receive  a
     data  unit  from  another  transport user.  The argument  fd
     identifies the local transport endpoint through  which  data
     will  be  received,   unitdata  holds information associated
     with the received data unit,  iovcount contains  the  number
     of   non-contiguous   udata  buffers  which  is  limited  to
     TIOVMAX, which is an implementation-defined  value  of  at
     least  16,  and  flags is set on return to indicate that the
     complete data unit  was  not  received.   If  the  limit  on
     iovcount is exceeded, the function fails with TBADATA.  The
     argument  unitdata points to a   tunitdata  structure  con-
     taining the following members:

       struct netbuf addr;
       struct netbuf opt;
       struct netbuf udata;



     The  maxlen field of  addr and  opt must be set before  cal-
     ling  this  function  to  indicate  the  maximum size of the
     buffer for each. The  udata  field  of   tunitdata  is  not
     used.  The   iovlen  and  iovbase fields of "iov0" through
     iov [iovcount-1] must be set before  calling   trcvvudata()
     to  define the buffer where the userdata will be placed.  If
     the maxlen field of  addr or  opt is set  to  zero  then  no
     information  is  returned in the  buf field for this parame-
     ter.


     On return from  this  call,   addr  specifies  the  protocol
     address  of  the  sending user,  opt identifies options that
     were associated with this data  unit,  and   iov[0].iovbase
     through  iov  [iovcount-1].iovbase  contains  the user data
     that was received. The return value of  trcvvudata() is the
     number of bytes of user data given to the user.





SunOS 5.11           Last change: 7 May 1998                    1






Networking Services Library Functions           trcvvudata(3NSL)



     Note that the limit on the total number of  bytes  available
     in all buffers passed:

       iov(0).iovlen ] . . ] iov(iovcount-1).iovlen)



     may be constrained by implementation  limits.  If  no  other
     constraint  applies, it will be limited by INTMAX. In prac-
     tice, the availability of memory to an application is likely
     to  impose  a  lower limit on the amount of data that can be
     sent or received using scatter/gather functions.


     By default,  trcvvudata() operates in synchronous mode  and
     waits  for a data unit to arrive if none is currently avail-
     able.   However,  if   ONONBLOCK  is  set   by   means   of
     topen(3NSL)  or  fcntl(2),  trcvvudata() executes in asyn-
     chronous mode and fails if no data units are available.


     If the buffers defined in the  iov[]  array  are  not  large
     enough  to  hold  the current data unit, the buffers will be
     filled and  TMORE will be set in flags on return  to  indi-
     cate   that  another   trcvvudata()  should  be  called  to
     retrieve the rest of the data  unit.   Subsequent  calls  to
     trcvvudata() will return zero for the length of the address
     and options, until the full data unit has been received.

RETURN VALUES
     On successful completion,  trcvvudata() returns the  number
     of  bytes received. Otherwise, it returns  -1 on failure and
     terrno is set to indicate the error.

VALID STATES
     TIDLE.

ERORS
     On failure, terrno is set to one of the following:

     TBADATA       iovcount is greater than  TIOVMAX.


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


     TBUFOVFLW      The number of bytes allocated for the  incom-
                    ing  protocol  address or options (maxlen) is
                    greater than  0 but not sufficient  to  store
                    the  information.   The unit data information
                    to be returned in unitdata will be discarded.



SunOS 5.11           Last change: 7 May 1998                    2






Networking Services Library Functions           trcvvudata(3NSL)



     TLOK          An asynchronous event has  occurred  on  this
                    transport  endpoint  and  requires  immediate
                    attention.


     TNODATA        ONONBLOCK was set, but  no  data  units  are
                    currently  available  from the transport pro-
                    vider.


     TNOTSUPORT    This function is not supported by the  under-
                    lying 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 (terrno).


     TSYSER        A system error has occurred during  execution
                    of this function.


TLI COMPATIBILITY
     In the TLI interface definition, no counterpart of this rou-
     tine was defined.

ATRIBUTES
     See attributes(5)  for descriptions of the following  attri-
     butes:



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     MT Level                     Safe                        
    


SEE ALSO
     fcntl(2),  talloc(3NSL),  topen(3NSL),   trcvudata(3NSL),
     trcvuderr(3NSL),    tsndudata(3NSL),    tsndvudata(3NSL),
     attributes(5)





SunOS 5.11           Last change: 7 May 1998                    3



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™