diff options
Diffstat (limited to 'include/linux/sctp.h')
| -rw-r--r-- | include/linux/sctp.h | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/include/linux/sctp.h b/include/linux/sctp.h index c20d3ce673c0..c11a28706fa4 100644 --- a/include/linux/sctp.h +++ b/include/linux/sctp.h | |||
| @@ -61,7 +61,7 @@ typedef struct sctphdr { | |||
| 61 | __be16 dest; | 61 | __be16 dest; |
| 62 | __be32 vtag; | 62 | __be32 vtag; |
| 63 | __le32 checksum; | 63 | __le32 checksum; |
| 64 | } __attribute__((packed)) sctp_sctphdr_t; | 64 | } __packed sctp_sctphdr_t; |
| 65 | 65 | ||
| 66 | #ifdef __KERNEL__ | 66 | #ifdef __KERNEL__ |
| 67 | #include <linux/skbuff.h> | 67 | #include <linux/skbuff.h> |
| @@ -77,7 +77,7 @@ typedef struct sctp_chunkhdr { | |||
| 77 | __u8 type; | 77 | __u8 type; |
| 78 | __u8 flags; | 78 | __u8 flags; |
| 79 | __be16 length; | 79 | __be16 length; |
| 80 | } __attribute__((packed)) sctp_chunkhdr_t; | 80 | } __packed sctp_chunkhdr_t; |
| 81 | 81 | ||
| 82 | 82 | ||
| 83 | /* Section 3.2. Chunk Type Values. | 83 | /* Section 3.2. Chunk Type Values. |
| @@ -167,7 +167,7 @@ enum { SCTP_CHUNK_FLAG_T = 0x01 }; | |||
| 167 | typedef struct sctp_paramhdr { | 167 | typedef struct sctp_paramhdr { |
| 168 | __be16 type; | 168 | __be16 type; |
| 169 | __be16 length; | 169 | __be16 length; |
| 170 | } __attribute__((packed)) sctp_paramhdr_t; | 170 | } __packed sctp_paramhdr_t; |
| 171 | 171 | ||
| 172 | typedef enum { | 172 | typedef enum { |
| 173 | 173 | ||
| @@ -228,12 +228,12 @@ typedef struct sctp_datahdr { | |||
| 228 | __be16 ssn; | 228 | __be16 ssn; |
| 229 | __be32 ppid; | 229 | __be32 ppid; |
| 230 | __u8 payload[0]; | 230 | __u8 payload[0]; |
| 231 | } __attribute__((packed)) sctp_datahdr_t; | 231 | } __packed sctp_datahdr_t; |
| 232 | 232 | ||
| 233 | typedef struct sctp_data_chunk { | 233 | typedef struct sctp_data_chunk { |
| 234 | sctp_chunkhdr_t chunk_hdr; | 234 | sctp_chunkhdr_t chunk_hdr; |
| 235 | sctp_datahdr_t data_hdr; | 235 | sctp_datahdr_t data_hdr; |
| 236 | } __attribute__((packed)) sctp_data_chunk_t; | 236 | } __packed sctp_data_chunk_t; |
| 237 | 237 | ||
| 238 | /* DATA Chuck Specific Flags */ | 238 | /* DATA Chuck Specific Flags */ |
| 239 | enum { | 239 | enum { |
| @@ -259,78 +259,78 @@ typedef struct sctp_inithdr { | |||
| 259 | __be16 num_inbound_streams; | 259 | __be16 num_inbound_streams; |
| 260 | __be32 initial_tsn; | 260 | __be32 initial_tsn; |
| 261 | __u8 params[0]; | 261 | __u8 params[0]; |
| 262 | } __attribute__((packed)) sctp_inithdr_t; | 262 | } __packed sctp_inithdr_t; |
| 263 | 263 | ||
| 264 | typedef struct sctp_init_chunk { | 264 | typedef struct sctp_init_chunk { |
| 265 | sctp_chunkhdr_t chunk_hdr; | 265 | sctp_chunkhdr_t chunk_hdr; |
| 266 | sctp_inithdr_t init_hdr; | 266 | sctp_inithdr_t init_hdr; |
| 267 | } __attribute__((packed)) sctp_init_chunk_t; | 267 | } __packed sctp_init_chunk_t; |
| 268 | 268 | ||
| 269 | 269 | ||
| 270 | /* Section 3.3.2.1. IPv4 Address Parameter (5) */ | 270 | /* Section 3.3.2.1. IPv4 Address Parameter (5) */ |
| 271 | typedef struct sctp_ipv4addr_param { | 271 | typedef struct sctp_ipv4addr_param { |
| 272 | sctp_paramhdr_t param_hdr; | 272 | sctp_paramhdr_t param_hdr; |
| 273 | struct in_addr addr; | 273 | struct in_addr addr; |
| 274 | } __attribute__((packed)) sctp_ipv4addr_param_t; | 274 | } __packed sctp_ipv4addr_param_t; |
| 275 | 275 | ||
| 276 | /* Section 3.3.2.1. IPv6 Address Parameter (6) */ | 276 | /* Section 3.3.2.1. IPv6 Address Parameter (6) */ |
| 277 | typedef struct sctp_ipv6addr_param { | 277 | typedef struct sctp_ipv6addr_param { |
| 278 | sctp_paramhdr_t param_hdr; | 278 | sctp_paramhdr_t param_hdr; |
| 279 | struct in6_addr addr; | 279 | struct in6_addr addr; |
| 280 | } __attribute__((packed)) sctp_ipv6addr_param_t; | 280 | } __packed sctp_ipv6addr_param_t; |
| 281 | 281 | ||
| 282 | /* Section 3.3.2.1 Cookie Preservative (9) */ | 282 | /* Section 3.3.2.1 Cookie Preservative (9) */ |
| 283 | typedef struct sctp_cookie_preserve_param { | 283 | typedef struct sctp_cookie_preserve_param { |
| 284 | sctp_paramhdr_t param_hdr; | 284 | sctp_paramhdr_t param_hdr; |
| 285 | __be32 lifespan_increment; | 285 | __be32 lifespan_increment; |
| 286 | } __attribute__((packed)) sctp_cookie_preserve_param_t; | 286 | } __packed sctp_cookie_preserve_param_t; |
| 287 | 287 | ||
| 288 | /* Section 3.3.2.1 Host Name Address (11) */ | 288 | /* Section 3.3.2.1 Host Name Address (11) */ |
| 289 | typedef struct sctp_hostname_param { | 289 | typedef struct sctp_hostname_param { |
| 290 | sctp_paramhdr_t param_hdr; | 290 | sctp_paramhdr_t param_hdr; |
| 291 | uint8_t hostname[0]; | 291 | uint8_t hostname[0]; |
| 292 | } __attribute__((packed)) sctp_hostname_param_t; | 292 | } __packed sctp_hostname_param_t; |
| 293 | 293 | ||
| 294 | /* Section 3.3.2.1 Supported Address Types (12) */ | 294 | /* Section 3.3.2.1 Supported Address Types (12) */ |
| 295 | typedef struct sctp_supported_addrs_param { | 295 | typedef struct sctp_supported_addrs_param { |
| 296 | sctp_paramhdr_t param_hdr; | 296 | sctp_paramhdr_t param_hdr; |
| 297 | __be16 types[0]; | 297 | __be16 types[0]; |
| 298 | } __attribute__((packed)) sctp_supported_addrs_param_t; | 298 | } __packed sctp_supported_addrs_param_t; |
| 299 | 299 | ||
| 300 | /* Appendix A. ECN Capable (32768) */ | 300 | /* Appendix A. ECN Capable (32768) */ |
| 301 | typedef struct sctp_ecn_capable_param { | 301 | typedef struct sctp_ecn_capable_param { |
| 302 | sctp_paramhdr_t param_hdr; | 302 | sctp_paramhdr_t param_hdr; |
| 303 | } __attribute__((packed)) sctp_ecn_capable_param_t; | 303 | } __packed sctp_ecn_capable_param_t; |
| 304 | 304 | ||
| 305 | /* ADDIP Section 3.2.6 Adaptation Layer Indication */ | 305 | /* ADDIP Section 3.2.6 Adaptation Layer Indication */ |
| 306 | typedef struct sctp_adaptation_ind_param { | 306 | typedef struct sctp_adaptation_ind_param { |
| 307 | struct sctp_paramhdr param_hdr; | 307 | struct sctp_paramhdr param_hdr; |
| 308 | __be32 adaptation_ind; | 308 | __be32 adaptation_ind; |
| 309 | } __attribute__((packed)) sctp_adaptation_ind_param_t; | 309 | } __packed sctp_adaptation_ind_param_t; |
| 310 | 310 | ||
| 311 | /* ADDIP Section 4.2.7 Supported Extensions Parameter */ | 311 | /* ADDIP Section 4.2.7 Supported Extensions Parameter */ |
| 312 | typedef struct sctp_supported_ext_param { | 312 | typedef struct sctp_supported_ext_param { |
| 313 | struct sctp_paramhdr param_hdr; | 313 | struct sctp_paramhdr param_hdr; |
| 314 | __u8 chunks[0]; | 314 | __u8 chunks[0]; |
| 315 | } __attribute__((packed)) sctp_supported_ext_param_t; | 315 | } __packed sctp_supported_ext_param_t; |
| 316 | 316 | ||
| 317 | /* AUTH Section 3.1 Random */ | 317 | /* AUTH Section 3.1 Random */ |
| 318 | typedef struct sctp_random_param { | 318 | typedef struct sctp_random_param { |
| 319 | sctp_paramhdr_t param_hdr; | 319 | sctp_paramhdr_t param_hdr; |
| 320 | __u8 random_val[0]; | 320 | __u8 random_val[0]; |
| 321 | } __attribute__((packed)) sctp_random_param_t; | 321 | } __packed sctp_random_param_t; |
| 322 | 322 | ||
| 323 | /* AUTH Section 3.2 Chunk List */ | 323 | /* AUTH Section 3.2 Chunk List */ |
| 324 | typedef struct sctp_chunks_param { | 324 | typedef struct sctp_chunks_param { |
| 325 | sctp_paramhdr_t param_hdr; | 325 | sctp_paramhdr_t param_hdr; |
| 326 | __u8 chunks[0]; | 326 | __u8 chunks[0]; |
| 327 | } __attribute__((packed)) sctp_chunks_param_t; | 327 | } __packed sctp_chunks_param_t; |
| 328 | 328 | ||
| 329 | /* AUTH Section 3.3 HMAC Algorithm */ | 329 | /* AUTH Section 3.3 HMAC Algorithm */ |
| 330 | typedef struct sctp_hmac_algo_param { | 330 | typedef struct sctp_hmac_algo_param { |
| 331 | sctp_paramhdr_t param_hdr; | 331 | sctp_paramhdr_t param_hdr; |
| 332 | __be16 hmac_ids[0]; | 332 | __be16 hmac_ids[0]; |
| 333 | } __attribute__((packed)) sctp_hmac_algo_param_t; | 333 | } __packed sctp_hmac_algo_param_t; |
| 334 | 334 | ||
| 335 | /* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2): | 335 | /* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2): |
| 336 | * The INIT ACK chunk is used to acknowledge the initiation of an SCTP | 336 | * The INIT ACK chunk is used to acknowledge the initiation of an SCTP |
| @@ -342,13 +342,13 @@ typedef sctp_init_chunk_t sctp_initack_chunk_t; | |||
| 342 | typedef struct sctp_cookie_param { | 342 | typedef struct sctp_cookie_param { |
| 343 | sctp_paramhdr_t p; | 343 | sctp_paramhdr_t p; |
| 344 | __u8 body[0]; | 344 | __u8 body[0]; |
| 345 | } __attribute__((packed)) sctp_cookie_param_t; | 345 | } __packed sctp_cookie_param_t; |
| 346 | 346 | ||
| 347 | /* Section 3.3.3.1 Unrecognized Parameters (8) */ | 347 | /* Section 3.3.3.1 Unrecognized Parameters (8) */ |
| 348 | typedef struct sctp_unrecognized_param { | 348 | typedef struct sctp_unrecognized_param { |
| 349 | sctp_paramhdr_t param_hdr; | 349 | sctp_paramhdr_t param_hdr; |
| 350 | sctp_paramhdr_t unrecognized; | 350 | sctp_paramhdr_t unrecognized; |
| 351 | } __attribute__((packed)) sctp_unrecognized_param_t; | 351 | } __packed sctp_unrecognized_param_t; |
| 352 | 352 | ||
| 353 | 353 | ||
| 354 | 354 | ||
| @@ -363,7 +363,7 @@ typedef struct sctp_unrecognized_param { | |||
| 363 | typedef struct sctp_gap_ack_block { | 363 | typedef struct sctp_gap_ack_block { |
| 364 | __be16 start; | 364 | __be16 start; |
| 365 | __be16 end; | 365 | __be16 end; |
| 366 | } __attribute__((packed)) sctp_gap_ack_block_t; | 366 | } __packed sctp_gap_ack_block_t; |
| 367 | 367 | ||
| 368 | typedef __be32 sctp_dup_tsn_t; | 368 | typedef __be32 sctp_dup_tsn_t; |
| 369 | 369 | ||
| @@ -378,12 +378,12 @@ typedef struct sctp_sackhdr { | |||
| 378 | __be16 num_gap_ack_blocks; | 378 | __be16 num_gap_ack_blocks; |
| 379 | __be16 num_dup_tsns; | 379 | __be16 num_dup_tsns; |
| 380 | sctp_sack_variable_t variable[0]; | 380 | sctp_sack_variable_t variable[0]; |
| 381 | } __attribute__((packed)) sctp_sackhdr_t; | 381 | } __packed sctp_sackhdr_t; |
| 382 | 382 | ||
| 383 | typedef struct sctp_sack_chunk { | 383 | typedef struct sctp_sack_chunk { |
| 384 | sctp_chunkhdr_t chunk_hdr; | 384 | sctp_chunkhdr_t chunk_hdr; |
| 385 | sctp_sackhdr_t sack_hdr; | 385 | sctp_sackhdr_t sack_hdr; |
| 386 | } __attribute__((packed)) sctp_sack_chunk_t; | 386 | } __packed sctp_sack_chunk_t; |
| 387 | 387 | ||
| 388 | 388 | ||
| 389 | /* RFC 2960. Section 3.3.5 Heartbeat Request (HEARTBEAT) (4): | 389 | /* RFC 2960. Section 3.3.5 Heartbeat Request (HEARTBEAT) (4): |
| @@ -395,12 +395,12 @@ typedef struct sctp_sack_chunk { | |||
| 395 | 395 | ||
| 396 | typedef struct sctp_heartbeathdr { | 396 | typedef struct sctp_heartbeathdr { |
| 397 | sctp_paramhdr_t info; | 397 | sctp_paramhdr_t info; |
| 398 | } __attribute__((packed)) sctp_heartbeathdr_t; | 398 | } __packed sctp_heartbeathdr_t; |
| 399 | 399 | ||
| 400 | typedef struct sctp_heartbeat_chunk { | 400 | typedef struct sctp_heartbeat_chunk { |
| 401 | sctp_chunkhdr_t chunk_hdr; | 401 | sctp_chunkhdr_t chunk_hdr; |
| 402 | sctp_heartbeathdr_t hb_hdr; | 402 | sctp_heartbeathdr_t hb_hdr; |
| 403 | } __attribute__((packed)) sctp_heartbeat_chunk_t; | 403 | } __packed sctp_heartbeat_chunk_t; |
| 404 | 404 | ||
| 405 | 405 | ||
| 406 | /* For the abort and shutdown ACK we must carry the init tag in the | 406 | /* For the abort and shutdown ACK we must carry the init tag in the |
| @@ -409,7 +409,7 @@ typedef struct sctp_heartbeat_chunk { | |||
| 409 | */ | 409 | */ |
| 410 | typedef struct sctp_abort_chunk { | 410 | typedef struct sctp_abort_chunk { |
| 411 | sctp_chunkhdr_t uh; | 411 | sctp_chunkhdr_t uh; |
| 412 | } __attribute__((packed)) sctp_abort_chunk_t; | 412 | } __packed sctp_abort_chunk_t; |
| 413 | 413 | ||
| 414 | 414 | ||
| 415 | /* For the graceful shutdown we must carry the tag (in common header) | 415 | /* For the graceful shutdown we must carry the tag (in common header) |
| @@ -417,12 +417,12 @@ typedef struct sctp_abort_chunk { | |||
| 417 | */ | 417 | */ |
| 418 | typedef struct sctp_shutdownhdr { | 418 | typedef struct sctp_shutdownhdr { |
| 419 | __be32 cum_tsn_ack; | 419 | __be32 cum_tsn_ack; |
| 420 | } __attribute__((packed)) sctp_shutdownhdr_t; | 420 | } __packed sctp_shutdownhdr_t; |
| 421 | 421 | ||
| 422 | struct sctp_shutdown_chunk_t { | 422 | struct sctp_shutdown_chunk_t { |
| 423 | sctp_chunkhdr_t chunk_hdr; | 423 | sctp_chunkhdr_t chunk_hdr; |
| 424 | sctp_shutdownhdr_t shutdown_hdr; | 424 | sctp_shutdownhdr_t shutdown_hdr; |
| 425 | } __attribute__ ((packed)); | 425 | } __packed; |
| 426 | 426 | ||
| 427 | /* RFC 2960. Section 3.3.10 Operation Error (ERROR) (9) */ | 427 | /* RFC 2960. Section 3.3.10 Operation Error (ERROR) (9) */ |
| 428 | 428 | ||
| @@ -430,12 +430,12 @@ typedef struct sctp_errhdr { | |||
| 430 | __be16 cause; | 430 | __be16 cause; |
| 431 | __be16 length; | 431 | __be16 length; |
| 432 | __u8 variable[0]; | 432 | __u8 variable[0]; |
| 433 | } __attribute__((packed)) sctp_errhdr_t; | 433 | } __packed sctp_errhdr_t; |
| 434 | 434 | ||
| 435 | typedef struct sctp_operr_chunk { | 435 | typedef struct sctp_operr_chunk { |
| 436 | sctp_chunkhdr_t chunk_hdr; | 436 | sctp_chunkhdr_t chunk_hdr; |
| 437 | sctp_errhdr_t err_hdr; | 437 | sctp_errhdr_t err_hdr; |
| 438 | } __attribute__((packed)) sctp_operr_chunk_t; | 438 | } __packed sctp_operr_chunk_t; |
| 439 | 439 | ||
| 440 | /* RFC 2960 3.3.10 - Operation Error | 440 | /* RFC 2960 3.3.10 - Operation Error |
| 441 | * | 441 | * |
| @@ -525,7 +525,7 @@ typedef struct sctp_ecnehdr { | |||
| 525 | typedef struct sctp_ecne_chunk { | 525 | typedef struct sctp_ecne_chunk { |
| 526 | sctp_chunkhdr_t chunk_hdr; | 526 | sctp_chunkhdr_t chunk_hdr; |
| 527 | sctp_ecnehdr_t ence_hdr; | 527 | sctp_ecnehdr_t ence_hdr; |
| 528 | } __attribute__((packed)) sctp_ecne_chunk_t; | 528 | } __packed sctp_ecne_chunk_t; |
| 529 | 529 | ||
| 530 | /* RFC 2960. Appendix A. Explicit Congestion Notification. | 530 | /* RFC 2960. Appendix A. Explicit Congestion Notification. |
| 531 | * Congestion Window Reduced (CWR) (13) | 531 | * Congestion Window Reduced (CWR) (13) |
| @@ -537,7 +537,7 @@ typedef struct sctp_cwrhdr { | |||
| 537 | typedef struct sctp_cwr_chunk { | 537 | typedef struct sctp_cwr_chunk { |
| 538 | sctp_chunkhdr_t chunk_hdr; | 538 | sctp_chunkhdr_t chunk_hdr; |
| 539 | sctp_cwrhdr_t cwr_hdr; | 539 | sctp_cwrhdr_t cwr_hdr; |
| 540 | } __attribute__((packed)) sctp_cwr_chunk_t; | 540 | } __packed sctp_cwr_chunk_t; |
| 541 | 541 | ||
| 542 | /* PR-SCTP | 542 | /* PR-SCTP |
| 543 | * 3.2 Forward Cumulative TSN Chunk Definition (FORWARD TSN) | 543 | * 3.2 Forward Cumulative TSN Chunk Definition (FORWARD TSN) |
| @@ -588,17 +588,17 @@ typedef struct sctp_cwr_chunk { | |||
| 588 | struct sctp_fwdtsn_skip { | 588 | struct sctp_fwdtsn_skip { |
| 589 | __be16 stream; | 589 | __be16 stream; |
| 590 | __be16 ssn; | 590 | __be16 ssn; |
| 591 | } __attribute__((packed)); | 591 | } __packed; |
| 592 | 592 | ||
| 593 | struct sctp_fwdtsn_hdr { | 593 | struct sctp_fwdtsn_hdr { |
| 594 | __be32 new_cum_tsn; | 594 | __be32 new_cum_tsn; |
| 595 | struct sctp_fwdtsn_skip skip[0]; | 595 | struct sctp_fwdtsn_skip skip[0]; |
| 596 | } __attribute((packed)); | 596 | } __packed; |
| 597 | 597 | ||
| 598 | struct sctp_fwdtsn_chunk { | 598 | struct sctp_fwdtsn_chunk { |
| 599 | struct sctp_chunkhdr chunk_hdr; | 599 | struct sctp_chunkhdr chunk_hdr; |
| 600 | struct sctp_fwdtsn_hdr fwdtsn_hdr; | 600 | struct sctp_fwdtsn_hdr fwdtsn_hdr; |
| 601 | } __attribute((packed)); | 601 | } __packed; |
| 602 | 602 | ||
| 603 | 603 | ||
| 604 | /* ADDIP | 604 | /* ADDIP |
| @@ -636,17 +636,17 @@ struct sctp_fwdtsn_chunk { | |||
| 636 | typedef struct sctp_addip_param { | 636 | typedef struct sctp_addip_param { |
| 637 | sctp_paramhdr_t param_hdr; | 637 | sctp_paramhdr_t param_hdr; |
| 638 | __be32 crr_id; | 638 | __be32 crr_id; |
| 639 | } __attribute__((packed)) sctp_addip_param_t; | 639 | } __packed sctp_addip_param_t; |
| 640 | 640 | ||
| 641 | typedef struct sctp_addiphdr { | 641 | typedef struct sctp_addiphdr { |
| 642 | __be32 serial; | 642 | __be32 serial; |
| 643 | __u8 params[0]; | 643 | __u8 params[0]; |
| 644 | } __attribute__((packed)) sctp_addiphdr_t; | 644 | } __packed sctp_addiphdr_t; |
| 645 | 645 | ||
| 646 | typedef struct sctp_addip_chunk { | 646 | typedef struct sctp_addip_chunk { |
| 647 | sctp_chunkhdr_t chunk_hdr; | 647 | sctp_chunkhdr_t chunk_hdr; |
| 648 | sctp_addiphdr_t addip_hdr; | 648 | sctp_addiphdr_t addip_hdr; |
| 649 | } __attribute__((packed)) sctp_addip_chunk_t; | 649 | } __packed sctp_addip_chunk_t; |
| 650 | 650 | ||
| 651 | /* AUTH | 651 | /* AUTH |
| 652 | * Section 4.1 Authentication Chunk (AUTH) | 652 | * Section 4.1 Authentication Chunk (AUTH) |
| @@ -701,11 +701,11 @@ typedef struct sctp_authhdr { | |||
| 701 | __be16 shkey_id; | 701 | __be16 shkey_id; |
| 702 | __be16 hmac_id; | 702 | __be16 hmac_id; |
| 703 | __u8 hmac[0]; | 703 | __u8 hmac[0]; |
| 704 | } __attribute__((packed)) sctp_authhdr_t; | 704 | } __packed sctp_authhdr_t; |
| 705 | 705 | ||
| 706 | typedef struct sctp_auth_chunk { | 706 | typedef struct sctp_auth_chunk { |
| 707 | sctp_chunkhdr_t chunk_hdr; | 707 | sctp_chunkhdr_t chunk_hdr; |
| 708 | sctp_authhdr_t auth_hdr; | 708 | sctp_authhdr_t auth_hdr; |
| 709 | } __attribute__((packed)) sctp_auth_chunk_t; | 709 | } __packed sctp_auth_chunk_t; |
| 710 | 710 | ||
| 711 | #endif /* __LINUX_SCTP_H__ */ | 711 | #endif /* __LINUX_SCTP_H__ */ |
