---
name: "sctp_generic_sendmsg"
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_sendmsg"
---

# sctp\_generic\_sendmsg(2)

send data to a peer

## NAME

**sctp\_generic\_sendmsg**, **sctp\_generic\_sendmsg\_iov** – send data to a peer

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

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

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

*int*\

**sctp\_generic\_sendmsg**(*int s*, *void \*msg*, *int msglen*, *struct sockaddr \*to*, *socklen\_t len*, *struct sctp\_sndrcvinfo \*sinfo*, *int flags*);

*int*\

**sctp\_generic\_sendmsg\_iov**(*int s*, *struct iovec \*iov*, *int iovlen*, *struct sockaddr \*to*, *struct sctp\_sndrcvinfo \*sinfo*, *int flags*);

## DESCRIPTION

**sctp\_generic\_sendmsg**() and **sctp\_generic\_sendmsg\_iov**() are the true system calls used by the [sctp\_sendmsg(3)](/sctp_sendmsg/3.md) and [sctp\_send(3)](/sctp_send/3.md) function calls. These are more efficient since they are true system calls but they are specific to FreeBSD and can be expected *not* to be present on any other operating system. For detailed usage please see either the [sctp\_send(3)](/sctp_send/3.md) or [sctp\_sendmsg(3)](/sctp_sendmsg/3.md) function calls.

## RETURN VALUES

The call returns the number of bytes written 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\_send(3)](/sctp_send/3.md), [sctp\_sendmsg(3)](/sctp_sendmsg/3.md), [sctp\_sendmsgx(3)](/sctp_sendmsgx/3.md), [sctp\_sendx(3)](/sctp_sendx/3.md), [sctp(4)](/sctp/4.md)
