---
name: "sctp_peeloff"
section: "3"
platform: "linux"
package: "lksctp-tools"
version: "1.0.21-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/sctp_peeloff/3"
---

# sctp\_peeloff(3)

Branch off an association into a separate socket.

## NAME

sctp\_peeloff - Branch off an association into a separate socket.

## SYNOPSIS

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

int sctp_peeloff(int sd, sctp_assoc_t assoc_id);
int sctp_peeloff_flags(int sd, sctp_assoc_t assoc_id, unsigned flags);
```

## DESCRIPTION

**sctp\_peeloff** branches off an existing association *assoc\_id* on a one-to-many style socket *sd* into a separate socket. The new socket is a one-to-one style socket.

This is particularly desirable when, for instance, the application wishes to have a number of sporadic message senders/receivers remain under the original one-to-many style socket, but branch off those assocations carrying high volume data traffic into their own separate socket descriptors.

**sctp\_peeloff\_flags** is a variant of sctp\_peeloff, in which flags describing the behavior of the newly peeled off socket can be specified.  Currently the supported flags are:

- **SOCK\_NONBLOCK**

  Specifies that the new socket should not block on io operations.

- **SOCK\_CLOEXEC**

  Specifies that the new socket should be closed when the owning process calls exec.

## RETURN VALUE

On success, the new socket descriptor representing the branched-off asociation is returned. On error, -1 is returned, and *errno* is set appropriately.

## ERRORS

- **EBADF**

  *sd* is not a valid descriptor.

- **EINVAL**

  The assoc id passed is invalid or if the socket is a one-to-one style socket.

- **ENOTSOCK**

  Argument is a descriptor for a file, not a socket.

## NOTES

- sctp\_peeloff\_flags is a linux specific variant of sctp\_peeloff. While it will compile on other systems, its use will result in an error return. Portable code should use sctp\_peeloff.

  ## SEE ALSO

[**sctp**(7)](/sctp/7.md) [**sctp\_bindx**(3)](/sctp_bindx/3.md), [**sctp\_connectx**(3)](/sctp_connectx/3.md), [**sctp\_sendmsg**(3)](/sctp_sendmsg/3.md), [**sctp\_sendv**(3)](/sctp_sendv/3.md), [**sctp\_send**(3)](/sctp_send/3.md), [**sctp\_recvmsg**(3)](/sctp_recvmsg/3.md), [**sctp\_recvv**(3)](/sctp_recvv/3.md), [**sctp\_getpaddrs**(3)](/sctp_getpaddrs/3.md), [**sctp\_getladdrs**(3)](/sctp_getladdrs/3.md), [**sctp\_opt\_info**(3)](/sctp_opt_info/3.md),
