| .. | .. | 
|---|
|  | 1 | +/* SPDX-License-Identifier: GPL-2.0-or-later */ | 
|---|
| 1 | 2 | /* SCTP kernel reference Implementation | 
|---|
| 2 | 3 | * (C) Copyright IBM Corp. 2001, 2004 | 
|---|
| 3 | 4 | * Copyright (c) 1999-2000 Cisco, Inc. | 
|---|
| .. | .. | 
|---|
| 9 | 10 | * This file is part of the SCTP kernel reference Implementation | 
|---|
| 10 | 11 | * | 
|---|
| 11 | 12 | * Various protocol defined structures. | 
|---|
| 12 |  | - * | 
|---|
| 13 |  | - * This SCTP implementation is free software; | 
|---|
| 14 |  | - * you can redistribute it and/or modify it under the terms of | 
|---|
| 15 |  | - * the GNU General Public License as published by | 
|---|
| 16 |  | - * the Free Software Foundation; either version 2, or (at your option) | 
|---|
| 17 |  | - * any later version. | 
|---|
| 18 |  | - * | 
|---|
| 19 |  | - * This SCTP implementation is distributed in the hope that it | 
|---|
| 20 |  | - * will be useful, but WITHOUT ANY WARRANTY; without even the implied | 
|---|
| 21 |  | - *                 ************************ | 
|---|
| 22 |  | - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
|---|
| 23 |  | - * See the GNU General Public License for more details. | 
|---|
| 24 |  | - * | 
|---|
| 25 |  | - * You should have received a copy of the GNU General Public License | 
|---|
| 26 |  | - * along with GNU CC; see the file COPYING.  If not, see | 
|---|
| 27 |  | - * <http://www.gnu.org/licenses/>. | 
|---|
| 28 | 13 | * | 
|---|
| 29 | 14 | * Please send any bug reports or fixes you make to the | 
|---|
| 30 | 15 | * email address(es): | 
|---|
| .. | .. | 
|---|
| 236 | 221 | __be16 stream; | 
|---|
| 237 | 222 | __be16 ssn; | 
|---|
| 238 | 223 | __u32 ppid; | 
|---|
| 239 |  | -	__u8  payload[0]; | 
|---|
|  | 224 | +	__u8  payload[]; | 
|---|
| 240 | 225 | }; | 
|---|
| 241 | 226 |  | 
|---|
| 242 | 227 | struct sctp_data_chunk { | 
|---|
| .. | .. | 
|---|
| 284 | 269 | __be16 num_outbound_streams; | 
|---|
| 285 | 270 | __be16 num_inbound_streams; | 
|---|
| 286 | 271 | __be32 initial_tsn; | 
|---|
| 287 |  | -	__u8  params[0]; | 
|---|
|  | 272 | +	__u8  params[]; | 
|---|
| 288 | 273 | }; | 
|---|
| 289 | 274 |  | 
|---|
| 290 | 275 | struct sctp_init_chunk { | 
|---|
| .. | .. | 
|---|
| 314 | 299 | /* Section 3.3.2.1 Host Name Address (11) */ | 
|---|
| 315 | 300 | struct sctp_hostname_param { | 
|---|
| 316 | 301 | struct sctp_paramhdr param_hdr; | 
|---|
| 317 |  | -	uint8_t hostname[0]; | 
|---|
|  | 302 | +	uint8_t hostname[]; | 
|---|
| 318 | 303 | }; | 
|---|
| 319 | 304 |  | 
|---|
| 320 | 305 | /* Section 3.3.2.1 Supported Address Types (12) */ | 
|---|
| 321 | 306 | struct sctp_supported_addrs_param { | 
|---|
| 322 | 307 | struct sctp_paramhdr param_hdr; | 
|---|
| 323 |  | -	__be16 types[0]; | 
|---|
|  | 308 | +	__be16 types[]; | 
|---|
| 324 | 309 | }; | 
|---|
| 325 | 310 |  | 
|---|
| 326 | 311 | /* ADDIP Section 3.2.6 Adaptation Layer Indication */ | 
|---|
| .. | .. | 
|---|
| 332 | 317 | /* ADDIP Section 4.2.7 Supported Extensions Parameter */ | 
|---|
| 333 | 318 | struct sctp_supported_ext_param { | 
|---|
| 334 | 319 | struct sctp_paramhdr param_hdr; | 
|---|
| 335 |  | -	__u8 chunks[0]; | 
|---|
|  | 320 | +	__u8 chunks[]; | 
|---|
| 336 | 321 | }; | 
|---|
| 337 | 322 |  | 
|---|
| 338 | 323 | /* AUTH Section 3.1 Random */ | 
|---|
| 339 | 324 | struct sctp_random_param { | 
|---|
| 340 | 325 | struct sctp_paramhdr param_hdr; | 
|---|
| 341 |  | -	__u8 random_val[0]; | 
|---|
|  | 326 | +	__u8 random_val[]; | 
|---|
| 342 | 327 | }; | 
|---|
| 343 | 328 |  | 
|---|
| 344 | 329 | /* AUTH Section 3.2 Chunk List */ | 
|---|
| 345 | 330 | struct sctp_chunks_param { | 
|---|
| 346 | 331 | struct sctp_paramhdr param_hdr; | 
|---|
| 347 |  | -	__u8 chunks[0]; | 
|---|
|  | 332 | +	__u8 chunks[]; | 
|---|
| 348 | 333 | }; | 
|---|
| 349 | 334 |  | 
|---|
| 350 | 335 | /* AUTH Section 3.3 HMAC Algorithm */ | 
|---|
| 351 | 336 | struct sctp_hmac_algo_param { | 
|---|
| 352 | 337 | struct sctp_paramhdr param_hdr; | 
|---|
| 353 |  | -	__be16 hmac_ids[0]; | 
|---|
|  | 338 | +	__be16 hmac_ids[]; | 
|---|
| 354 | 339 | }; | 
|---|
| 355 | 340 |  | 
|---|
| 356 | 341 | /* RFC 2960.  Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2): | 
|---|
| .. | .. | 
|---|
| 365 | 350 | /* Section 3.3.3.1 State Cookie (7) */ | 
|---|
| 366 | 351 | struct sctp_cookie_param { | 
|---|
| 367 | 352 | struct sctp_paramhdr p; | 
|---|
| 368 |  | -	__u8 body[0]; | 
|---|
|  | 353 | +	__u8 body[]; | 
|---|
| 369 | 354 | }; | 
|---|
| 370 | 355 |  | 
|---|
| 371 | 356 | /* Section 3.3.3.1 Unrecognized Parameters (8) */ | 
|---|
| .. | .. | 
|---|
| 399 | 384 | __be32 a_rwnd; | 
|---|
| 400 | 385 | __be16 num_gap_ack_blocks; | 
|---|
| 401 | 386 | __be16 num_dup_tsns; | 
|---|
| 402 |  | -	union sctp_sack_variable variable[0]; | 
|---|
|  | 387 | +	union sctp_sack_variable variable[]; | 
|---|
| 403 | 388 | }; | 
|---|
| 404 | 389 |  | 
|---|
| 405 | 390 | struct sctp_sack_chunk { | 
|---|
| .. | .. | 
|---|
| 451 | 436 | struct sctp_errhdr { | 
|---|
| 452 | 437 | __be16 cause; | 
|---|
| 453 | 438 | __be16 length; | 
|---|
| 454 |  | -	__u8  variable[0]; | 
|---|
|  | 439 | +	__u8  variable[]; | 
|---|
| 455 | 440 | }; | 
|---|
| 456 | 441 |  | 
|---|
| 457 | 442 | struct sctp_operr_chunk { | 
|---|
| .. | .. | 
|---|
| 609 | 594 |  | 
|---|
| 610 | 595 | struct sctp_fwdtsn_hdr { | 
|---|
| 611 | 596 | __be32 new_cum_tsn; | 
|---|
| 612 |  | -	struct sctp_fwdtsn_skip skip[0]; | 
|---|
|  | 597 | +	struct sctp_fwdtsn_skip skip[]; | 
|---|
| 613 | 598 | }; | 
|---|
| 614 | 599 |  | 
|---|
| 615 | 600 | struct sctp_fwdtsn_chunk { | 
|---|
| .. | .. | 
|---|
| 626 | 611 |  | 
|---|
| 627 | 612 | struct sctp_ifwdtsn_hdr { | 
|---|
| 628 | 613 | __be32 new_cum_tsn; | 
|---|
| 629 |  | -	struct sctp_ifwdtsn_skip skip[0]; | 
|---|
|  | 614 | +	struct sctp_ifwdtsn_skip skip[]; | 
|---|
| 630 | 615 | }; | 
|---|
| 631 | 616 |  | 
|---|
| 632 | 617 | struct sctp_ifwdtsn_chunk { | 
|---|
| .. | .. | 
|---|
| 673 | 658 |  | 
|---|
| 674 | 659 | struct sctp_addiphdr { | 
|---|
| 675 | 660 | __be32	serial; | 
|---|
| 676 |  | -	__u8	params[0]; | 
|---|
|  | 661 | +	__u8	params[]; | 
|---|
| 677 | 662 | }; | 
|---|
| 678 | 663 |  | 
|---|
| 679 | 664 | struct sctp_addip_chunk { | 
|---|
| .. | .. | 
|---|
| 733 | 718 | struct sctp_authhdr { | 
|---|
| 734 | 719 | __be16 shkey_id; | 
|---|
| 735 | 720 | __be16 hmac_id; | 
|---|
| 736 |  | -	__u8   hmac[0]; | 
|---|
|  | 721 | +	__u8   hmac[]; | 
|---|
| 737 | 722 | }; | 
|---|
| 738 | 723 |  | 
|---|
| 739 | 724 | struct sctp_auth_chunk { | 
|---|
| .. | .. | 
|---|
| 748 | 733 |  | 
|---|
| 749 | 734 | struct sctp_reconf_chunk { | 
|---|
| 750 | 735 | struct sctp_chunkhdr chunk_hdr; | 
|---|
| 751 |  | -	__u8 params[0]; | 
|---|
|  | 736 | +	__u8 params[]; | 
|---|
| 752 | 737 | }; | 
|---|
| 753 | 738 |  | 
|---|
| 754 | 739 | struct sctp_strreset_outreq { | 
|---|
| .. | .. | 
|---|
| 756 | 741 | __be32 request_seq; | 
|---|
| 757 | 742 | __be32 response_seq; | 
|---|
| 758 | 743 | __be32 send_reset_at_tsn; | 
|---|
| 759 |  | -	__be16 list_of_streams[0]; | 
|---|
|  | 744 | +	__be16 list_of_streams[]; | 
|---|
| 760 | 745 | }; | 
|---|
| 761 | 746 |  | 
|---|
| 762 | 747 | struct sctp_strreset_inreq { | 
|---|
| 763 | 748 | struct sctp_paramhdr param_hdr; | 
|---|
| 764 | 749 | __be32 request_seq; | 
|---|
| 765 |  | -	__be16 list_of_streams[0]; | 
|---|
|  | 750 | +	__be16 list_of_streams[]; | 
|---|
| 766 | 751 | }; | 
|---|
| 767 | 752 |  | 
|---|
| 768 | 753 | struct sctp_strreset_tsnreq { | 
|---|