Skip to content
Snippets Groups Projects
SCTP_SocketAPI_Status.md 16.7 KiB
Newer Older
# Status of the socket API support

For Linux the following tables are based on [sctp.h](https://github.com/sctp/lksctp-tools/blob/master/src/include/netinet/sctp.h).

## SCTP cmsgs
|CMSG Name        | API Spec                                                    | Protocol Spec                                    | packetdrill | Linux       | FreeBSD   |
|:----------------|:-----------------------------------------------------------:|:------------------------------------------------:|:-----------:|:-----------:|:---------:|
|`SCTP_INIT`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.1)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported   | supported |
|`SCTP_SNDRCV`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.2)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported   | supported |
|`SCTP_EXTRCV`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.3)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
|`SCTP_SNDINFO`   | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.4)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
|`SCTP_RCVINFO`   | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.5)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
|`SCTP_NXTINFO`   | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.6)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
|`SCTP_PRINFO`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.7)  | [RFC3758](https://tools.ietf.org/html/rfc3758) | supported   | unsupported | supported |
|`SCTP_AUTHINFO`  | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.8)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | supported   | unsupported | supported |
|`SCTP_DSTADDRV4` | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.9)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
|`SCTP_DSTADDRV6` | [RFC6458](https://tools.ietf.org/html/rfc6458#section-5.3.10) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |

## SCTP Notifications
| Type                              | API Spec                                                      | Protocol Spec                                  | packetdrill | Linux             | FreeBSD     |
|:----------------------------------|:-------------------------------------------------------------:|:----------------------------------------------:|:-----------:|:-----------------:|:-----------:|
|`SCTP_ASSOC_CHANGE`                | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.1)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported         | supported   |
|`SCTP_PEER_ADDR_CHANGE`            | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.2)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported         | supported   |
|`SCTP_REMOTE_ERROR`                | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.3)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported         | supported   |
|`SCTP_SEND_FAILED`                 | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.4)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported         | supported   |
|`SCTP_SHUTDOWN_EVENT`              | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.5)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported         | supported   |
|`SCTP_ADAPTATION_INDICATION`       | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.6)  | [RFC5061](https://tools.ietf.org/html/rfc5061) | supported   | supported         | supported   |
|`SCTP_PARTIAL_DELIVERY_EVENT`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.7)  | [RFC3758](https://tools.ietf.org/html/rfc3758) | supported   | supported (Note 1)| supported   |
|`SCTP_AUTHENTICATION_EVENT`        | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.8)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | supported   | supported         | supported   |
|`SCTP_SENDER_DRY_EVENT`            | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.9)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported         | supported   |
|`SCTP_NOTIFICATIONS_STOPPED_EVENT` | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.10) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported       | unsupported |
|`SCTP_SEND_FAILED_EVENT`           | [RFC6458](https://tools.ietf.org/html/rfc6458#section-6.1.10) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported       | supported   |
|`SCTP_STREAM_RESET_EVENT`          | [RFC6525](https://tools.ietf.org/html/rfc6525#section-6.1.1)  | [RFC6525](https://tools.ietf.org/html/rfc6525) | supported   | unsupported       | supported   |
|`SCTP_ASSOC_RESET_EVENT`           | [RFC6525](https://tools.ietf.org/html/rfc6525#section-6.1.2)  | [RFC6525](https://tools.ietf.org/html/rfc6525) | supported   | unsupported       | supported   |
|`SCTP_STREAM_CHANGE_EVENT`         | [RFC6525](https://tools.ietf.org/html/rfc6525#section-6.1.3)  | [RFC6525](https://tools.ietf.org/html/rfc6525) | supported   | unsupported       | supported   |

## SCTP Socket Options
|Name                          | API Spec                                                      | Protocol Spec                                  | packetdrill | Linux               | FreeBSD   |
|:-----------------------------|:-------------------------------------------------------------:|:----------------------------------------------:|:-----------:|:-------------------:|:---------:|
|`SCTP_RTOINFO`                | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.1)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_ASSOCINFO`              | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.2)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_INITMSG`                | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.3)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_NODELAY`                | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.5)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_AUTOCLOSE`              | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.8)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | unsupported | supported           | supported |
|`SCTP_PRIMARY_ADDR`           | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.9)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | supported           | supported |
|`SCTP_ADAPTATION_LAYER`       | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.10) | [RFC5061](https://tools.ietf.org/html/rfc5061) | supported   | supported           | supported |
|`SCTP_DISABLE_FRAGMENTS`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.11) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | supported           | supported |
|`SCTP_PEER_ADDR_PARAMS`       | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.12) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | old structure       | supported |
|`SCTP_DEFAULT_SEND_PARAM`     | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.13) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | supported           | supported |
|`SCTP_EVENTS`                 | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.14) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_I_WANT_MAPPED_V4_ADDR`  | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.15) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | supported           | supported |
|`SCTP_MAXSEG`                 | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.16) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | Check structure     | supported |
|`SCTP_HMAC_IDENT`             | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.17) | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | supported           | supported |
|`SCTP_AUTH_ACTIVE_KEY`        | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.18) | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | supported           | supported |
|`SCTP_DELAYED_SACK`           | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.19) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_FRAGMENT_INTERLEAVE`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.20) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_PARTIAL_DELIVERY_POINT` | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.21) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | supported           | supported |
|`SCTP_USE_EXT_RCVINFO`        | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.22) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | unsupported         | supported |
|`SCTP_AUTO_ASCONF`            | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.23) | [RFC5061](https://tools.ietf.org/html/rfc5061) | unsupported | unsupported         | supported |
|`SCTP_MAX_BURST`              | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.24) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | Check structure     | supported |
|`SCTP_CONTEXT`                | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.25) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | supported           | supported |
|`SCTP_EXPLICIT_EOR`           | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.26) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | unsupported         | supported |
|`SCTP_REUSE_PORT`             | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.27) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | unsupported         | supported |
|`SCTP_EVENT`                  | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.28) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported         | supported |
|`SCTP_RECVRCVINFO`            | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.29) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | unsupported         | supported |
|`SCTP_RECVNXTINFO`            | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.30) | [RFC4960](https://tools.ietf.org/html/rfc4960) | TBD         | unsupported         | supported |
|`SCTP_DEFAULT_SNDINFO`        | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.31) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported         | supported |
|`SCTP_DEFAULT_PRINFO`         | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.1.32) | [RFC3758](https://tools.ietf.org/html/rfc3758) | unsupported | unsupported         | supported |
|`SCTP_STATUS`                 | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.2.1)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_GET_PEER_ADDR_INFO`     | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.2.2)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported           | supported |
|`SCTP_PEER_AUTH_CHUNKS`       | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.2.3)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | supported           | supported |
|`SCTP_LOCAL_AUTH_CHUNKS`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.2.4)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | supported           | supported |
|`SCTP_GET_ASSOC_NUMBER`       | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.2.5)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | unsupported | supported           | supported |
|`SCTP_GET_ASSOC_ID_LIST`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.2.6)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | unsupported | unsupported         | supported |
|`SCTP_SET_PEER_PRIMARY_ADDR`  | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.3.1)  | [RFC5061](https://tools.ietf.org/html/rfc5061) | unsupported | supported           | supported |
|`SCTP_AUTH_CHUNK`             | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.3.2)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | supported           | supported |
|`SCTP_AUTH_KEY`               | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.3.3)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | supported           | supported |
|`SCTP_AUTH_DEACTIVATE_KEY`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.3.4)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | unsupported         | supported |
|`SCTP_AUTH_DELETE_KEY`        | [RFC6458](https://tools.ietf.org/html/rfc6458#section-8.3.5)  | [RFC4895](https://tools.ietf.org/html/rfc4895) | unsupported | supported           | supported |
|`SCTP_ENABLE_STREAM_RESET`    | [RFC6525](https://tools.ietf.org/html/rfc6525#page-28)        | [RFC6525](https://tools.ietf.org/html/rfc6525) | supported   | unsupported         | supported |
|`SCTP_RESET_STREAMS`          | [RFC6525](https://tools.ietf.org/html/rfc6525#page-29)        | [RFC6525](https://tools.ietf.org/html/rfc6525) | supported   | unsupported         | supported |
|`SCTP_RESET_ASSOC`            | [RFC6525](https://tools.ietf.org/html/rfc6525#section-6.3.2)  | [RFC6525](https://tools.ietf.org/html/rfc6525) | supported   | unsupported         | supported |
|`SCTP_ADD_STREAMS`            | [RFC6525](https://tools.ietf.org/html/rfc6525#page-30)        | [RFC6525](https://tools.ietf.org/html/rfc6525) | supported   | unsupported         | supported |

## SCTP Functions
|Name                | API Spec                                                    | Protocol Spec                                  | packetdrill | Linux       | FreeBSD   |
|:-------------------|:-----------------------------------------------------------:|:----------------------------------------------:|:-----------:|:-----------:|:---------:|
|`sctp_bindx()`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.1)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported   | supported |
|`sctp_peeloff()`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.2)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported   | supported |
|`sctp_getpaddrs()`  | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.3)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | unsupported | supported   | supported |
|`sctp_freepaddrs()` | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.4)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | unsupported | supported   | supported |
|`sctp_getladdrs()`  | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.5)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | unsupported | supported   | supported |
|`sctp_freeladdrs()` | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.6)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | unsupported | supported   | supported |
|`sctp_sendmsg()`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.7)  | [RFC5061](https://tools.ietf.org/html/rfc5061) | supported   | supported   | supported |
|`sctp_recvmsg()`    | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.8)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported   | supported |
|`sctp_connectx()`   | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.9)  | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported   | supported |
|`sctp_send()`       | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.10) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | supported   | supported |
|`sctp_sendx()`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.11) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
|`sctp_sendv()`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.12) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
|`sctp_recvv()`      | [RFC6458](https://tools.ietf.org/html/rfc6458#section-9.13) | [RFC4960](https://tools.ietf.org/html/rfc4960) | supported   | unsupported | supported |
1.  Linux does not support the `pdapi_stream` and `pdapi_seq` fields.