| .. | .. |
|---|
| 59 | 59 | |
|---|
| 60 | 60 | typedef __s32 sctp_assoc_t; |
|---|
| 61 | 61 | |
|---|
| 62 | +#define SCTP_FUTURE_ASSOC 0 |
|---|
| 63 | +#define SCTP_CURRENT_ASSOC 1 |
|---|
| 64 | +#define SCTP_ALL_ASSOC 2 |
|---|
| 65 | + |
|---|
| 62 | 66 | /* The following symbols come from the Sockets API Extensions for |
|---|
| 63 | 67 | * SCTP <draft-ietf-tsvwg-sctpsocket-07.txt>. |
|---|
| 64 | 68 | */ |
|---|
| .. | .. |
|---|
| 101 | 105 | #define SCTP_DEFAULT_SNDINFO 34 |
|---|
| 102 | 106 | #define SCTP_AUTH_DEACTIVATE_KEY 35 |
|---|
| 103 | 107 | #define SCTP_REUSE_PORT 36 |
|---|
| 108 | +#define SCTP_PEER_ADDR_THLDS_V2 37 |
|---|
| 104 | 109 | |
|---|
| 105 | 110 | /* Internal Socket Options. Some of the sctp library functions are |
|---|
| 106 | 111 | * implemented using these socket options. |
|---|
| .. | .. |
|---|
| 129 | 134 | #define SCTP_STREAM_SCHEDULER_VALUE 124 |
|---|
| 130 | 135 | #define SCTP_INTERLEAVING_SUPPORTED 125 |
|---|
| 131 | 136 | #define SCTP_SENDMSG_CONNECT 126 |
|---|
| 137 | +#define SCTP_EVENT 127 |
|---|
| 138 | +#define SCTP_ASCONF_SUPPORTED 128 |
|---|
| 139 | +#define SCTP_AUTH_SUPPORTED 129 |
|---|
| 140 | +#define SCTP_ECN_SUPPORTED 130 |
|---|
| 141 | +#define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131 |
|---|
| 142 | +#define SCTP_EXPOSE_PF_STATE SCTP_EXPOSE_POTENTIALLY_FAILED_STATE |
|---|
| 132 | 143 | |
|---|
| 133 | 144 | /* PR-SCTP policies */ |
|---|
| 134 | 145 | #define SCTP_PR_SCTP_NONE 0x0000 |
|---|
| .. | .. |
|---|
| 402 | 413 | SCTP_ADDR_ADDED, |
|---|
| 403 | 414 | SCTP_ADDR_MADE_PRIM, |
|---|
| 404 | 415 | SCTP_ADDR_CONFIRMED, |
|---|
| 416 | + SCTP_ADDR_POTENTIALLY_FAILED, |
|---|
| 417 | +#define SCTP_ADDR_PF SCTP_ADDR_POTENTIALLY_FAILED |
|---|
| 405 | 418 | }; |
|---|
| 406 | 419 | |
|---|
| 407 | 420 | |
|---|
| .. | .. |
|---|
| 437 | 450 | __u32 ssf_length; |
|---|
| 438 | 451 | __u32 ssf_error; |
|---|
| 439 | 452 | struct sctp_sndrcvinfo ssf_info; |
|---|
| 453 | + sctp_assoc_t ssf_assoc_id; |
|---|
| 454 | + __u8 ssf_data[0]; |
|---|
| 455 | +}; |
|---|
| 456 | + |
|---|
| 457 | +struct sctp_send_failed_event { |
|---|
| 458 | + __u16 ssf_type; |
|---|
| 459 | + __u16 ssf_flags; |
|---|
| 460 | + __u32 ssf_length; |
|---|
| 461 | + __u32 ssf_error; |
|---|
| 462 | + struct sctp_sndinfo ssfe_info; |
|---|
| 440 | 463 | sctp_assoc_t ssf_assoc_id; |
|---|
| 441 | 464 | __u8 ssf_data[0]; |
|---|
| 442 | 465 | }; |
|---|
| .. | .. |
|---|
| 597 | 620 | __u8 sctp_stream_reset_event; |
|---|
| 598 | 621 | __u8 sctp_assoc_reset_event; |
|---|
| 599 | 622 | __u8 sctp_stream_change_event; |
|---|
| 623 | + __u8 sctp_send_failure_event_event; |
|---|
| 600 | 624 | }; |
|---|
| 601 | 625 | |
|---|
| 602 | 626 | /* |
|---|
| .. | .. |
|---|
| 624 | 648 | struct sctp_stream_reset_event sn_strreset_event; |
|---|
| 625 | 649 | struct sctp_assoc_reset_event sn_assocreset_event; |
|---|
| 626 | 650 | struct sctp_stream_change_event sn_strchange_event; |
|---|
| 651 | + struct sctp_send_failed_event sn_send_failed_event; |
|---|
| 627 | 652 | }; |
|---|
| 628 | 653 | |
|---|
| 629 | 654 | /* Section 5.3.1 |
|---|
| .. | .. |
|---|
| 632 | 657 | */ |
|---|
| 633 | 658 | |
|---|
| 634 | 659 | enum sctp_sn_type { |
|---|
| 635 | | - SCTP_SN_TYPE_BASE = (1<<15), |
|---|
| 660 | + SCTP_SN_TYPE_BASE = (1<<15), |
|---|
| 661 | + SCTP_DATA_IO_EVENT = SCTP_SN_TYPE_BASE, |
|---|
| 662 | +#define SCTP_DATA_IO_EVENT SCTP_DATA_IO_EVENT |
|---|
| 636 | 663 | SCTP_ASSOC_CHANGE, |
|---|
| 637 | 664 | #define SCTP_ASSOC_CHANGE SCTP_ASSOC_CHANGE |
|---|
| 638 | 665 | SCTP_PEER_ADDR_CHANGE, |
|---|
| .. | .. |
|---|
| 657 | 684 | #define SCTP_ASSOC_RESET_EVENT SCTP_ASSOC_RESET_EVENT |
|---|
| 658 | 685 | SCTP_STREAM_CHANGE_EVENT, |
|---|
| 659 | 686 | #define SCTP_STREAM_CHANGE_EVENT SCTP_STREAM_CHANGE_EVENT |
|---|
| 687 | + SCTP_SEND_FAILED_EVENT, |
|---|
| 688 | +#define SCTP_SEND_FAILED_EVENT SCTP_SEND_FAILED_EVENT |
|---|
| 689 | + SCTP_SN_TYPE_MAX = SCTP_SEND_FAILED_EVENT, |
|---|
| 690 | +#define SCTP_SN_TYPE_MAX SCTP_SN_TYPE_MAX |
|---|
| 660 | 691 | }; |
|---|
| 661 | 692 | |
|---|
| 662 | 693 | /* Notification error codes used to fill up the error fields in some |
|---|
| .. | .. |
|---|
| 907 | 938 | enum sctp_spinfo_state { |
|---|
| 908 | 939 | SCTP_INACTIVE, |
|---|
| 909 | 940 | SCTP_PF, |
|---|
| 941 | +#define SCTP_POTENTIALLY_FAILED SCTP_PF |
|---|
| 910 | 942 | SCTP_ACTIVE, |
|---|
| 911 | 943 | SCTP_UNCONFIRMED, |
|---|
| 912 | 944 | SCTP_UNKNOWN = 0xffff /* Value used for transport state unknown */ |
|---|
| .. | .. |
|---|
| 1056 | 1088 | __u16 spt_pathpfthld; |
|---|
| 1057 | 1089 | }; |
|---|
| 1058 | 1090 | |
|---|
| 1091 | +/* Use a new structure with spt_pathcpthld for back compatibility */ |
|---|
| 1092 | +struct sctp_paddrthlds_v2 { |
|---|
| 1093 | + sctp_assoc_t spt_assoc_id; |
|---|
| 1094 | + struct sockaddr_storage spt_address; |
|---|
| 1095 | + __u16 spt_pathmaxrxt; |
|---|
| 1096 | + __u16 spt_pathpfthld; |
|---|
| 1097 | + __u16 spt_pathcpthld; |
|---|
| 1098 | +}; |
|---|
| 1099 | + |
|---|
| 1059 | 1100 | /* |
|---|
| 1060 | 1101 | * Socket Option for Getting the Association/Stream-Specific PR-SCTP Status |
|---|
| 1061 | 1102 | */ |
|---|
| .. | .. |
|---|
| 1150 | 1191 | uint16_t sas_outstrms; |
|---|
| 1151 | 1192 | }; |
|---|
| 1152 | 1193 | |
|---|
| 1194 | +struct sctp_event { |
|---|
| 1195 | + sctp_assoc_t se_assoc_id; |
|---|
| 1196 | + uint16_t se_type; |
|---|
| 1197 | + uint8_t se_on; |
|---|
| 1198 | +}; |
|---|
| 1199 | + |
|---|
| 1153 | 1200 | /* SCTP Stream schedulers */ |
|---|
| 1154 | 1201 | enum sctp_sched_type { |
|---|
| 1155 | 1202 | SCTP_SS_FCFS, |
|---|