# sctp_recvv

## 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.
    


* * *