sctp_peeloff - Branch off an association into a separate socket.
#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);
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.
On success, the new socket descriptor representing the branched-off asociation
is returned. On error, -1 is returned, and
errno is set appropriately.
- 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.
- 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(7) sctp_bindx(3),
sctp_connectx(3),
sctp_sendmsg(3),
sctp_sendv(3),
sctp_send(3),
sctp_recvmsg(3),
sctp_recvv(3),
sctp_getpaddrs(3),
sctp_getladdrs(3),
sctp_opt_info(3),