aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2007-09-16 18:53:56 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:51:23 -0400
commit131a47e31ab1a9defd50ff16b04008ab94c21c0d (patch)
tree8ac3eb522333d1b6f9bd5741a8decbfb4220f432 /include
parent76c72d4f44ec5fb7f88eda8a0d3aa30922c891d1 (diff)
[SCTP]: Implement the Supported Extensions Parameter
SCTP Supported Extenions parameter is specified in Section 4.2.7 of the ADD-IP draft (soon to be RFC). The parameter is encoded as: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Parameter Type = 0x8008 | Parameter Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CHUNK TYPE 1 | CHUNK TYPE 2 | CHUNK TYPE 3 | CHUNK TYPE 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | .... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CHUNK TYPE N | PAD | PAD | PAD | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ It contains a list of chunks that a particular SCTP extension uses. Current extensions supported are Partial Reliability (FWD-TSN) and ADD-IP (ASCONF and ASCONF-ACK). When implementing new extensions (AUTH, PKT-DROP, etc..), new chunks need to be added to this parameter. Parameter processing would be modified to negotiate support for these new features. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/sctp.h9
-rw-r--r--include/net/sctp/structs.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/sctp.h b/include/linux/sctp.h
index d70df61a029f..f4d717b72ddd 100644
--- a/include/linux/sctp.h
+++ b/include/linux/sctp.h
@@ -180,6 +180,9 @@ typedef enum {
180 SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = __constant_htons(12), 180 SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = __constant_htons(12),
181 SCTP_PARAM_ECN_CAPABLE = __constant_htons(0x8000), 181 SCTP_PARAM_ECN_CAPABLE = __constant_htons(0x8000),
182 182
183 /* Add-IP: Supported Extensions, Section 4.2 */
184 SCTP_PARAM_SUPPORTED_EXT = __constant_htons(0x8008),
185
183 /* PR-SCTP Sec 3.1 */ 186 /* PR-SCTP Sec 3.1 */
184 SCTP_PARAM_FWD_TSN_SUPPORT = __constant_htons(0xc000), 187 SCTP_PARAM_FWD_TSN_SUPPORT = __constant_htons(0xc000),
185 188
@@ -296,6 +299,12 @@ typedef struct sctp_adaptation_ind_param {
296 __be32 adaptation_ind; 299 __be32 adaptation_ind;
297} __attribute__((packed)) sctp_adaptation_ind_param_t; 300} __attribute__((packed)) sctp_adaptation_ind_param_t;
298 301
302/* ADDIP Section 4.2.7 Supported Extensions Parameter */
303typedef struct sctp_supported_ext_param {
304 struct sctp_paramhdr param_hdr;
305 __u8 chunks[0];
306} __attribute__((packed)) sctp_supported_ext_param_t;
307
299/* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2): 308/* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2):
300 * The INIT ACK chunk is used to acknowledge the initiation of an SCTP 309 * The INIT ACK chunk is used to acknowledge the initiation of an SCTP
301 * association. 310 * association.
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 67c91d01b635..b4812a2d3bb0 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -440,6 +440,7 @@ union sctp_params {
440 struct sctp_ipv6addr_param *v6; 440 struct sctp_ipv6addr_param *v6;
441 union sctp_addr_param *addr; 441 union sctp_addr_param *addr;
442 struct sctp_adaptation_ind_param *aind; 442 struct sctp_adaptation_ind_param *aind;
443 struct sctp_supported_ext_param *ext;
443}; 444};
444 445
445/* RFC 2960. Section 3.3.5 Heartbeat. 446/* RFC 2960. Section 3.3.5 Heartbeat.