diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2007-09-16 18:53:56 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:51:23 -0400 |
commit | 131a47e31ab1a9defd50ff16b04008ab94c21c0d (patch) | |
tree | 8ac3eb522333d1b6f9bd5741a8decbfb4220f432 /include | |
parent | 76c72d4f44ec5fb7f88eda8a0d3aa30922c891d1 (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.h | 9 | ||||
-rw-r--r-- | include/net/sctp/structs.h | 1 |
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 */ | ||
303 | typedef 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. |