---
name: "sctp_generic_recvmsg"
section: "2"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/sctp_generic_recvmsg"
---

# sctp\_generic\_recvmsg(2)

receive data from a peer

## NAME

**sctp\_generic\_recvmsg** – receive data from a peer

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<sys/types.h\>**

**#include \<sys/socket.h\>**

**#include \<netinet/sctp.h\>**

*int*\

**sctp\_generic\_recvmsg**(*int s*, *struct iovec \*iov*, *int iovlen*, *struct sockaddr \*from*, *socklen\_t \*fromlen*, *struct sctp\_sndrcvinfo \*sinfo*, *int \*msgflags*);

## DESCRIPTION

**sctp\_generic\_recvmsg**() is the true system call used by the [sctp\_recvmsg(3)](/sctp_recvmsg/3.md) function call. This call is more efficient since it is a true system call but it is specific to FreeBSD and can be expected *not* to be present on any other operating system. For detailed usage please see the [sctp\_recvmsg(3)](/sctp_recvmsg/3.md) function call.

## RETURN VALUES

The call returns the number of bytes read on success and -1 upon failure.

## ERRORS

- \[EBADF\]

  The argument *s* is not a valid descriptor.

- \[ENOTSOCK\]

  The argument *s* is not a socket.

## SEE ALSO

[sctp\_recvmsg(3)](/sctp_recvmsg/3.md), [sctp(4)](/sctp/4.md)
