SCTP\_PEELOFF(3) Linux Programmer's Manual SCTP\_PEELOFF(3)

# [NAME](#NAME)

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

# [SYNOPSIS](#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](#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**](#SOCK_NONBLOCK)

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

[**SOCK\_CLOEXEC**](#SOCK_CLOEXEC)

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

# [RETURN VALUE](#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](#ERRORS)

[**EBADF**](#EBADF)

*sd* is not a valid descriptor.

[**EINVAL**](#EINVAL)

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

[**ENOTSOCK**](#ENOTSOCK)

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

# [NOTES](#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.](#sctp_peeloff_flags)

# [SEE ALSO](#SEE_ALSO)

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

2005-10-25 Linux 2.6

---

Document: sctp_peeloff(3) from libsctp 1.0.21-r4 (Chainguard OS)
Source: https://github.com/sctp/lksctp-tools
