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

# [NAME](#NAME)

sctp\_sendmsg - Send a message from a SCTP socket.

# [SYNOPSIS](#SYNOPSIS)

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

int sctp_sendmsg(int sd, const void * msg, size_t len,
                 struct sockaddr *to, socklen_t tolen,
                 uint32_t ppid, uint32_t flags,
                 uint16_t stream_no, uint32_t timetolive,
                 uint32_t context);
```

# [DESCRIPTION](#DESCRIPTION)

**sctp\_sendmsg** is a wrapper library function that can be used to send a message from a socket while using the advanced features of SCTP. *sd* is the socket descriptor from which the message pointed to by *msg* of length *len* is sent. *to* is the destination address of the message and *tolen* is the length of the destination address. *stream\_no* identifies the stream number that the application wishes to send this message to. *flags* parameter is composed of a bitwise OR of the following values.

[**SCTP\_UNORDERED**](#SCTP_UNORDERED)

This flags requests the un-ordered delivery of the message.

[**SCTP\_ADDR\_OVER**](#SCTP_ADDR_OVER)

This flag, in the one-to-many style, requests the SCTP stack to override the primary destination address with address specified in *to.*

[**SCTP\_ABORT**](#SCTP_ABORT)

Setting this flag causes the specified association to abort by sending an ABORT message to the peer(one-to-many style only). The ABORT chunk will contain an error cause 'User Initiated Abort' with cause code 12. The cause specific information of this error cause is provided in *msg.*

[**SCTP\_EOF**](#SCTP_EOF)

Setting this flag invokes the SCTP graceful shutdown procedure on the specific association(one-to-many style only).

[**SCTP\_SENDALL**](#SCTP_SENDALL)

This flag, if set, will cause a one-to-many style socket to send the message to all associations that are currently established on this socket. For the one-to-one style socket, this flag has no effect.

[**SCTP\_SACK\_IMMEDIATELY**](#SCTP_SACK_IMMEDIATELY)

This flag allows the application to set the I bit of the last DATA chunk when sending each user message to make sure the corresponding SACK can be sent by peer without delay.

[**SCTP\_PR\_SCTP\_{TTL|RTX|PRIO}**](#SCTP_PR_SCTP__TTL_RTX_PRIO_)

One of these 3 pr\_policies can be used through this flag with its pr\_value set in timetolive parameter for this message. Note that [**sctp\_sendv(3)**](/man/os/libsctp/sctp_sendv.3) with infotype SCTP\_SENDV\_PRINFO also works for PR-SCTP.

*timetolive* specifies the time duration in milliseconds. The sending side will expire the message if the message has not been sent to the peer within this time period. A value of 0 indicates that no timeout should occur on this message. It also works as the pr\_value if flags parameter is set to pr\_policy. *ppid* is an opaque unsigned value that is passed to the remote end along with the message. *context* is a 32 bit opaque value that is passed back to the upper layer along with the undelivered message if an error occurs on the send of the message.

# [RETURN VALUE](#RETURN_VALUE)

On success, **sctp\_sendmsg** returns the number of bytes sent or -1 if an error occurred.

# [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\_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\_peeloff**(3)](/man/os/libsctp/sctp_peeloff.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),

2004-10-25 Linux 2.6

---

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