Provided by: libsctp-dev_1.0.21+dfsg-1_amd64 bug

NAME

       sctp_recvv - Receive a message from a SCTP socket with an extensible way.

SYNOPSIS

       #include <sys/types.h>
       #include <sys/socket.h>
       #include <netinet/sctp.h>

       int sctp_recvv(int sd, const struct iovec * iov, int iovlen,
                      struct sockaddr * from, socklen_t * fromlen, void * info,
                      socklen_t * infolen, unsigned int * infotype, int * flags);

DESCRIPTION

       sctp_recvv  provides  an  extensible  way  for  the  SCTP  stack to pass up different SCTP
       attributes associated with a received message to an application.  There are two  types  of
       attributes  that  can  be returned by this call: the attribute of the received message and
       the attribute of the  next  message  in  the  receive  buffer.   The  caller  enables  the
       SCTP_RECVRCVINFO  and  SCTP_RECVNXTINFO  socket  options,  respectively,  to receive these
       attributes.  Attributes of the received message are returned in struct  sctp_rcvinfo,  and
       attributes  of  the next message are returned in struct sctp_nxtinfo.  If both options are
       enabled, both attributes are returned using the following structure.

          struct sctp_recvv_rn {
            struct sctp_rcvinfo recvv_rcvinfo;
            struct sctp_nxtinfo recvv_nxtinfo;
          };

       sd is the socket descriptor.  iov is the scatter buffer, and  only  one  user  message  is
       returned in this buffer.  iovlen is the number of elements in iov.  from is a pointer to a
       buffer to be filled with the sender of the received  message's  address.   fromlen  is  an
       in/out  parameter describing the from length.  info is a pointer to the buffer to hold the
       attributes of the received message, the structure  type  of  info  is  determined  by  the
       info_type  parameter.   infolen  is  an  in/out  parameter describing the size of the info
       buffer.  On return, infotype is set to the type  of  the  info  buffer,  and  the  current
       defined values are as follows:

       SCTP_RECVV_NOINFO
              If  neither SCTP_RECVRCVINFO nor SCTP_RECVNXTINFO options are enabled, no attribute
              will be returned.  If only the SCTP_RECVNXTINFO option is enabled but there  is  no
              next  message  in  the  buffer,  no  attribute  will  be returned.  In these cases,
              *info_type will be set to SCTP_RECVV_NOINFO.

       SCTP_RECVV_RCVINFO
              The type of info is struct sctp_rcvinfo, and the attribute relates to the  received
              message.

       SCTP_RECVV_NXTINFO
              The  type  of  info  is  struct sctp_nxtinfo, and the attribute relates to the next
              message in the receive buffer.  This is the case  when  only  the  SCTP_RECVNXTINFO
              option is enabled and there is a next message in the buffer.

       SCTP_RECVV_RN
              The type of info is struct sctp_recvv_rn.  The recvv_rcvinfo field is the attribute
              of the received message, and the recvv_nxtinfo field is the attribute of  the  next
              message   in  the  buffer.   This  is  the  case  when  both  SCTP_RECVRCVINFO  and
              SCTP_RECVNXTINFO options are enabled and there is a next  message  in  the  receive
              buffer.

       flags   is   pointer   to   an  integer  to  be  filled  with  any  message  flags  (e.g.,
       MSG_NOTIFICATION).

RETURN VALUE

       On success, sctp_recvv returns the number of bytes received or -1 if an error occurred.

SEE ALSO

       sctp(7) sctp_bindx(3),  sctp_connectx(3),  sctp_sendmsg(3),  sctp_sendv(3),  sctp_send(3),
       sctp_peeloff(3), sctp_getpaddrs(3), sctp_getladdrs(3), sctp_opt_info(3)