18c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/*- 28c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. 3ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved. 4ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved. 58c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 68c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Redistribution and use in source and binary forms, with or without 78c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * modification, are permitted provided that the following conditions are met: 88c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 98c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * a) Redistributions of source code must retain the above copyright notice, 100ac02f34d6041cd0018437596a5a9a94685e6919tuexen * this list of conditions and the following disclaimer. 118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * b) Redistributions in binary form must reproduce the above copyright 138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * notice, this list of conditions and the following disclaimer in 140ac02f34d6041cd0018437596a5a9a94685e6919tuexen * the documentation and/or other materials provided with the distribution. 158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * c) Neither the name of Cisco Systems, Inc. nor the names of its 178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * contributors may be used to endorse or promote products derived 188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * from this software without specific prior written permission. 198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * 208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * THE POSSIBILITY OF SUCH DAMAGE. 318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifdef __FreeBSD__ 348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/cdefs.h> 3520d5d287bff2075897105f85287230d55bdfa420t__FBSDID("$FreeBSD: head/sys/netinet/sctp_uio.h 269945 2014-08-13 15:50:16Z tuexen $"); 363a587095d1a410e421e6f45825959d4b109dd67ft#endif 378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 38ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen#ifndef _NETINET_SCTP_UIO_H_ 39ecc6b8c25a7e8d9d2b78889e88224354a1cc3160tuexen#define _NETINET_SCTP_UIO_H_ 408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if (defined(__APPLE__) && defined(KERNEL)) 428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef _KERNEL 438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define _KERNEL 448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 470ac02f34d6041cd0018437596a5a9a94685e6919tuexen#if !(defined(__Windows__)) && !defined(__Userspace_os_Windows) 488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if ! defined(_KERNEL) 498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <stdint.h> 508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/types.h> 528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/socket.h> 538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <netinet/in.h> 548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__Windows__) 568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#pragma warning(push) 578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#pragma warning(disable: 4200) 588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(_KERNEL) 598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/types.h> 608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/socket.h> 618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <netinet/in.h> 628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexentypedef uint32_t sctp_assoc_t; 668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_FUTURE_ASSOC 0 688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_CURRENT_ASSOC 1 698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ALL_ASSOC 2 708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_event { 728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t se_assoc_id; 738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t se_type; 748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t se_on; 758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* Compatibility to previous define's */ 788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define sctp_stream_reset_events sctp_stream_reset_event 798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* On/Off setup for subscription to events */ 818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_event_subscribe { 828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_data_io_event; 838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_association_event; 848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_address_event; 858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_send_failure_event; 868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_peer_error_event; 878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_shutdown_event; 888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_partial_delivery_event; 898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_adaptation_layer_event; 908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_authentication_event; 918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_sender_dry_event; 928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctp_stream_reset_event; 938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* ancillary data types */ 968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_INIT 0x0001 978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SNDRCV 0x0002 988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_EXTRCV 0x0003 998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SNDINFO 0x0004 1008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_RCVINFO 0x0005 1018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_NXTINFO 0x0006 1028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_PRINFO 0x0007 1038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_AUTHINFO 0x0008 1048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_DSTADDRV4 0x0009 1058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_DSTADDRV6 0x000a 1068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 1088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * ancillary data structures 1098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 1108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_initmsg { 1118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__FreeBSD__) && __FreeBSD_version < 800000 1128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* This is a bug. Not fixed for ABI compatibility */ 1138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinit_num_ostreams; 1148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinit_max_instreams; 1158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 1168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinit_num_ostreams; 1178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinit_max_instreams; 118000a5bac556b28e74e4e98c540f66b1743e9312dtuexen#endif 1198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinit_max_attempts; 1208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinit_max_init_timeo; 1218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 1228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* We add 96 bytes to the size of sctp_sndrcvinfo. 1248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * This makes the current structure 128 bytes long 1258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * which is nicely 64 bit aligned but also has room 1268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * for us to add more and keep ABI compatibility. 1278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * For example, already we have the sctp_extrcvinfo 1288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * when enabled which is 48 bytes. 1298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 1308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 1328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * The assoc up needs a verfid 1338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * all sendrcvinfo's need a verfid for SENDING only. 1348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 1358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ALIGN_RESV_PAD 92 1388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ALIGN_RESV_PAD_SHORT 76 1398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sndrcvinfo { 1418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_stream; 1428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_ssn; 1438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_flags; 1448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__FreeBSD__) && __FreeBSD_version < 800000 1458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_pr_policy; 1468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 1478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_ppid; 1488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_context; 1498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_timetolive; 1508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_tsn; 1518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_cumtsn; 1528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sinfo_assoc_id; 1538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_keynumber; 1548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_keynumber_valid; 1558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t __reserve_pad[SCTP_ALIGN_RESV_PAD]; 1568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 1578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_extrcvinfo { 1598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_stream; 1608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_ssn; 1618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_flags; 1628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__FreeBSD__) && __FreeBSD_version < 800000 1638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_pr_policy; 1648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 1658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_ppid; 1668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_context; 1678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_timetolive; 1688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_tsn; 1698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sinfo_cumtsn; 1708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sinfo_assoc_id; 1718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sreinfo_next_flags; 1728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sreinfo_next_stream; 1738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sreinfo_next_aid; 1748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sreinfo_next_length; 1758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sreinfo_next_ppid; 1768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_keynumber; 1778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sinfo_keynumber_valid; 1788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t __reserve_pad[SCTP_ALIGN_RESV_PAD_SHORT]; 1798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 1808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sndinfo { 1828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t snd_sid; 1838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t snd_flags; 1848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t snd_ppid; 1858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t snd_context; 1868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t snd_assoc_id; 1878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 1888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_prinfo { 1908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t pr_policy; 1918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t pr_value; 1928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 1938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 1948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_default_prinfo { 1958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t pr_policy; 1968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t pr_value; 1978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t pr_assoc_id; 1988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 1998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_authinfo { 201cfc10bc7dfab4b02523337f852f8821fcb34b650tuexen uint16_t auth_keynumber; 2028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 2038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_rcvinfo { 2058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t rcv_sid; 2068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t rcv_ssn; 2078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t rcv_flags; 2088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rcv_ppid; 2098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rcv_tsn; 2108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rcv_cumtsn; 2118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rcv_context; 2128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t rcv_assoc_id; 2138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 2148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_nxtinfo { 2168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t nxt_sid; 2178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t nxt_flags; 2188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t nxt_ppid; 2198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t nxt_length; 2208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t nxt_assoc_id; 2218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 2228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_NO_NEXT_MSG 0x0000 2248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_NEXT_MSG_AVAIL 0x0001 2258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_NEXT_MSG_ISCOMPLETE 0x0002 2268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_NEXT_MSG_IS_UNORDERED 0x0004 2278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_NEXT_MSG_IS_NOTIFICATION 0x0008 2288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_recvv_rn { 2308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_rcvinfo recvv_rcvinfo; 2318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_nxtinfo recvv_nxtinfo; 2328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 2338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_RECVV_NOINFO 0 2358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_RECVV_RCVINFO 1 2368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_RECVV_NXTINFO 2 2378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_RECVV_RN 3 2388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SENDV_NOINFO 0 2408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SENDV_SNDINFO 1 2418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SENDV_PRINFO 2 2428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SENDV_AUTHINFO 3 2438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SENDV_SPA 4 2448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sendv_spa { 2468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sendv_flags; 2478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sndinfo sendv_sndinfo; 2488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_prinfo sendv_prinfo; 2498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_authinfo sendv_authinfo; 2508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 2518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SEND_SNDINFO_VALID 0x00000001 2538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SEND_PRINFO_VALID 0x00000002 2548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SEND_AUTHINFO_VALID 0x00000004 2558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_snd_all_completes { 2578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sall_stream; 2588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sall_flags; 2598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sall_ppid; 2608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sall_context; 2618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sall_num_sent; 2628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sall_num_failed; 2638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 2648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* Flags that go into the sinfo->sinfo_flags field */ 2668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_NOTIFICATION 0x0010 /* next message is a notification */ 2678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_COMPLETE 0x0020 /* next message is complete */ 2688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_EOF 0x0100 /* Start shutdown procedures */ 2698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ABORT 0x0200 /* Send an ABORT to peer */ 2708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_UNORDERED 0x0400 /* Message is un-ordered */ 2718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ADDR_OVER 0x0800 /* Override the primary-address */ 2728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SENDALL 0x1000 /* Send this on all associations */ 2738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_EOR 0x2000 /* end of message signal */ 2748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_SACK_IMMEDIATELY 0x4000 /* Set I-Bit */ 2758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define INVALID_SINFO_FLAG(x) (((x) & 0xfffffff0 \ 2778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen & ~(SCTP_EOF | SCTP_ABORT | SCTP_UNORDERED |\ 2788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen SCTP_ADDR_OVER | SCTP_SENDALL | SCTP_EOR |\ 2798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen SCTP_SACK_IMMEDIATELY)) != 0) 2808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* for the endpoint */ 2818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 28220d5d287bff2075897105f85287230d55bdfa420t/* The lower four bits is an enumeration of PR-SCTP policies */ 2838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_PR_SCTP_NONE 0x0000 /* Reliable transfer */ 2848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_PR_SCTP_TTL 0x0001 /* Time based PR-SCTP */ 2858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_PR_SCTP_BUF 0x0002 /* Buffer based PR-SCTP */ 2868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_PR_SCTP_RTX 0x0003 /* Number of retransmissions based PR-SCTP */ 28720d5d287bff2075897105f85287230d55bdfa420t#define SCTP_PR_SCTP_MAX SCTP_PR_SCTP_RTX 28820d5d287bff2075897105f85287230d55bdfa420t#define SCTP_PR_SCTP_ALL 0x000f /* Used for aggregated stats */ 2898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 2908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define PR_SCTP_POLICY(x) ((x) & 0x0f) 29120d5d287bff2075897105f85287230d55bdfa420t#define PR_SCTP_ENABLED(x) ((PR_SCTP_POLICY(x) != SCTP_PR_SCTP_NONE) && \ 29220d5d287bff2075897105f85287230d55bdfa420t (PR_SCTP_POLICY(x) != SCTP_PR_SCTP_ALL)) 2938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define PR_SCTP_TTL_ENABLED(x) (PR_SCTP_POLICY(x) == SCTP_PR_SCTP_TTL) 2948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define PR_SCTP_BUF_ENABLED(x) (PR_SCTP_POLICY(x) == SCTP_PR_SCTP_BUF) 2958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define PR_SCTP_RTX_ENABLED(x) (PR_SCTP_POLICY(x) == SCTP_PR_SCTP_RTX) 29620d5d287bff2075897105f85287230d55bdfa420t#define PR_SCTP_INVALID_POLICY(x) (PR_SCTP_POLICY(x) > SCTP_PR_SCTP_MAX) 29720d5d287bff2075897105f85287230d55bdfa420t#define PR_SCTP_VALID_POLICY(x) (PR_SCTP_POLICY(x) <= SCTP_PR_SCTP_MAX) 29820d5d287bff2075897105f85287230d55bdfa420t 2998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* Stat's */ 3008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_pcbinfo { 3018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t ep_count; 3028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t asoc_count; 3038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t laddr_count; 3048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t raddr_count; 3058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t chk_count; 3068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t readq_count; 3078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t free_chunks; 3088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stream_oque; 3098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 3108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sockstat { 3128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t ss_assoc_id; 3138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t ss_total_sndbuf; 3148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t ss_total_recv_buf; 3158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 3168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 3188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * notification event structures 3198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 3208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 3228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * association change event 3238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 3248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_assoc_change { 3258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sac_type; 3268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sac_flags; 3278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sac_length; 3288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sac_state; 3298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sac_error; 3308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sac_outbound_streams; 3318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sac_inbound_streams; 3328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sac_assoc_id; 33327c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen uint8_t sac_info[]; 3348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 3358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* sac_state values */ 33727c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_COMM_UP 0x0001 33827c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_COMM_LOST 0x0002 33927c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_RESTART 0x0003 34027c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_SHUTDOWN_COMP 0x0004 34127c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_CANT_STR_ASSOC 0x0005 34227c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen 34327c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen/* sac_info values */ 34427c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_ASSOC_SUPPORTS_PR 0x01 34527c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 34627c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 34727c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 34827c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 34927c6a23c9dbbbe331f7a6b1ace5ffcb4055e2584tuexen#define SCTP_ASSOC_SUPPORTS_MAX 0x05 3508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 3518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Address event 3528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 3538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_paddr_change { 3548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t spc_type; 3558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t spc_flags; 3568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spc_length; 3578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_storage spc_aaddr; 3588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spc_state; 3598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spc_error; 3608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t spc_assoc_id; 3618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 3628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* paddr state values */ 3648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ADDR_AVAILABLE 0x0001 3658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ADDR_UNREACHABLE 0x0002 3668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ADDR_REMOVED 0x0003 3678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ADDR_ADDED 0x0004 3688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ADDR_MADE_PRIM 0x0005 3698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ADDR_CONFIRMED 0x0006 3708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_ACTIVE 0x0001 /* SCTP_ADDR_REACHABLE */ 3728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_INACTIVE 0x0002 /* neither SCTP_ADDR_REACHABLE 3738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen nor SCTP_ADDR_UNCONFIRMED */ 3748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_UNCONFIRMED 0x0200 /* SCTP_ADDR_UNCONFIRMED */ 3758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* remote error events */ 3778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_remote_error { 3788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sre_type; 3798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sre_flags; 3808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sre_length; 3818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sre_error; 3828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sre_assoc_id; 383ac3c4e125c7ed5e2d51bf68dfd9cd848d86655cct uint8_t sre_data[]; 3848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 3858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3865741e159bdf238ef4b61085d6fbfea2947386238tuexen/* data send failure event (deprecated) */ 3878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_send_failed { 3888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t ssf_type; 3898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t ssf_flags; 3908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t ssf_length; 3918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t ssf_error; 3928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sndrcvinfo ssf_info; 3938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t ssf_assoc_id; 3948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t ssf_data[]; 3958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 3968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 3975741e159bdf238ef4b61085d6fbfea2947386238tuexen/* data send failure event (not deprecated) */ 3985741e159bdf238ef4b61085d6fbfea2947386238tuexenstruct sctp_send_failed_event { 3995741e159bdf238ef4b61085d6fbfea2947386238tuexen uint16_t ssfe_type; 4005741e159bdf238ef4b61085d6fbfea2947386238tuexen uint16_t ssfe_flags; 4015741e159bdf238ef4b61085d6fbfea2947386238tuexen uint32_t ssfe_length; 4025741e159bdf238ef4b61085d6fbfea2947386238tuexen uint32_t ssfe_error; 4035741e159bdf238ef4b61085d6fbfea2947386238tuexen struct sctp_sndinfo ssfe_info; 4045741e159bdf238ef4b61085d6fbfea2947386238tuexen sctp_assoc_t ssfe_assoc_id; 4055741e159bdf238ef4b61085d6fbfea2947386238tuexen uint8_t ssfe_data[]; 4065741e159bdf238ef4b61085d6fbfea2947386238tuexen}; 4075741e159bdf238ef4b61085d6fbfea2947386238tuexen 4088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* flag that indicates state of data */ 4098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_DATA_UNSENT 0x0001 /* inqueue never on wire */ 4108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_DATA_SENT 0x0002 /* on wire at failure */ 4118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* shutdown event */ 4138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_shutdown_event { 4148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sse_type; 4158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sse_flags; 4168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sse_length; 4178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sse_assoc_id; 4188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* Adaptation layer indication stuff */ 4218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_adaptation_event { 4228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sai_type; 4238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sai_flags; 4248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sai_length; 4258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sai_adaptation_ind; 4268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sai_assoc_id; 4278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_setadaptation { 4308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t ssb_adaptation_ind; 4318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* compatible old spelling */ 4348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_adaption_event { 4358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sai_type; 4368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sai_flags; 4378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sai_length; 4388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sai_adaption_ind; 4398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sai_assoc_id; 4408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_setadaption { 4438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t ssb_adaption_ind; 4448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 4488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Partial Delivery API event 4498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 4508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_pdapi_event { 4518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t pdapi_type; 4528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t pdapi_flags; 4538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t pdapi_length; 4548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t pdapi_indication; 4558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t pdapi_stream; 4568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t pdapi_seq; 4578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t pdapi_assoc_id; 4588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* indication values */ 4618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_PARTIAL_DELIVERY_ABORTED 0x0001 4628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 4658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * authentication key event 4668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 4678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_authkey_event { 4688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t auth_type; 4698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t auth_flags; 4708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t auth_length; 4718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t auth_keynumber; 4728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t auth_altkeynumber; 4738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t auth_indication; 4748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t auth_assoc_id; 4758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* indication values */ 47808f3696ad42fc22082922592e23297cfaf790dcctuexen#define SCTP_AUTH_NEW_KEY 0x0001 47908f3696ad42fc22082922592e23297cfaf790dcctuexen#define SCTP_AUTH_NEWKEY SCTP_AUTH_NEW_KEY 4808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_AUTH_NO_AUTH 0x0002 4818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_AUTH_FREE_KEY 0x0003 4828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sender_dry_event { 4858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sender_dry_type; 4868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sender_dry_flags; 4878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sender_dry_length; 4888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sender_dry_assoc_id; 4898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 4908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 4928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 493c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen * Stream reset event - subscribe to SCTP_STREAM_RESET_EVENT 4948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 4958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_stream_reset_event { 4968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t strreset_type; 4978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t strreset_flags; 4988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t strreset_length; 4998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t strreset_assoc_id; 500c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t strreset_stream_list[]; 5018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 5028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 503c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen/* flags in stream_reset_event (strreset_flags) */ 5043deb01b1bdee799175510a3e63155882311686f7tuexen#define SCTP_STREAM_RESET_INCOMING_SSN 0x0001 5053deb01b1bdee799175510a3e63155882311686f7tuexen#define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002 5063deb01b1bdee799175510a3e63155882311686f7tuexen#define SCTP_STREAM_RESET_DENIED 0x0004 5073deb01b1bdee799175510a3e63155882311686f7tuexen#define SCTP_STREAM_RESET_FAILED 0x0008 508c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen 509c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen/* 510c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen * Assoc reset event - subscribe to SCTP_ASSOC_RESET_EVENT 511c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen */ 512c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexenstruct sctp_assoc_reset_event { 513c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t assocreset_type; 514c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t assocreset_flags; 515c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint32_t assocreset_length; 516c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen sctp_assoc_t assocreset_assoc_id; 517c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint32_t assocreset_local_tsn; 518c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint32_t assocreset_remote_tsn; 519c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen}; 520c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen 521c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen#define SCTP_ASSOC_RESET_DENIED 0x0004 522c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen#define SCTP_ASSOC_RESET_FAILED 0x0008 523c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen 524c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen/* 525c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen * Stream change event - subscribe to SCTP_STREAM_CHANGE_EVENT 526c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen */ 527c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexenstruct sctp_stream_change_event { 528c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t strchange_type; 529c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t strchange_flags; 530c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint32_t strchange_length; 531c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen sctp_assoc_t strchange_assoc_id; 532c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t strchange_instrms; 533c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t strchange_outstrms; 534c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen}; 535c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen 536c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen#define SCTP_STREAM_CHANGE_DENIED 0x0004 537c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen#define SCTP_STREAM_CHANGE_FAILED 0x0008 538c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen 5398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 5408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* SCTP notification event */ 5418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_tlv { 5428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sn_type; 5438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sn_flags; 5448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sn_length; 5458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 5468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 5478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenunion sctp_notification { 5488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_tlv sn_header; 5498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_assoc_change sn_assoc_change; 5508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_paddr_change sn_paddr_change; 5518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_remote_error sn_remote_error; 5528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_send_failed sn_send_failed; 5538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_shutdown_event sn_shutdown_event; 5548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_adaptation_event sn_adaptation_event; 5558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* compatibility same as above */ 5568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_adaption_event sn_adaption_event; 5578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_pdapi_event sn_pdapi_event; 5588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_authkey_event sn_auth_event; 5598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sender_dry_event sn_sender_dry_event; 56094a4e604af6d8e2beee249c63eb10320a5ca85c0tuexen struct sctp_send_failed_event sn_send_failed_event; 5618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_stream_reset_event sn_strreset_event; 562c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen struct sctp_assoc_reset_event sn_assocreset_event; 563c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen struct sctp_stream_change_event sn_strchange_event; 5648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 5658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 5668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* notification types */ 5675741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_ASSOC_CHANGE 0x0001 5685741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_PEER_ADDR_CHANGE 0x0002 5695741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_REMOTE_ERROR 0x0003 5705741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_SEND_FAILED 0x0004 5715741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_SHUTDOWN_EVENT 0x0005 5725741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_ADAPTATION_INDICATION 0x0006 5738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* same as above */ 5745741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_ADAPTION_INDICATION 0x0006 5755741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_PARTIAL_DELIVERY_EVENT 0x0007 5765741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_AUTHENTICATION_EVENT 0x0008 5775741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_STREAM_RESET_EVENT 0x0009 5785741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_SENDER_DRY_EVENT 0x000a 5795741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_NOTIFICATIONS_STOPPED_EVENT 0x000b /* we don't send this*/ 5805741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_ASSOC_RESET_EVENT 0x000c 5815741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_STREAM_CHANGE_EVENT 0x000d 5825741e159bdf238ef4b61085d6fbfea2947386238tuexen#define SCTP_SEND_FAILED_EVENT 0x000e 5838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 5848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * socket option structs 5858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 5868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 5878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_paddrparams { 5888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_storage spp_address; 5898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t spp_assoc_id; 5908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spp_hbinterval; 5918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spp_pathmtu; 5928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spp_flags; 5938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spp_ipv6_flowlabel; 5948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t spp_pathmaxrxt; 5958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t spp_dscp; 5968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 5978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define spp_ipv4_tos spp_dscp 5988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 5998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_HB_ENABLE 0x00000001 6008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_HB_DISABLE 0x00000002 6018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_HB_DEMAND 0x00000004 6028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_PMTUD_ENABLE 0x00000008 6038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_PMTUD_DISABLE 0x00000010 6048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_HB_TIME_IS_ZERO 0x00000080 6058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_IPV6_FLOWLABEL 0x00000100 6068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_DSCP 0x00000200 6078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SPP_IPV4_TOS SPP_DSCP 6088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_paddrthlds { 6108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_storage spt_address; 611d60bcb73900717c3e981a10a87751c59a1740b5atuexen sctp_assoc_t spt_assoc_id; 6128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t spt_pathmaxrxt; 6138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t spt_pathpfthld; 6148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_paddrinfo { 6178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_storage spinfo_address; 6188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t spinfo_assoc_id; 6198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int32_t spinfo_state; 6208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spinfo_cwnd; 6218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spinfo_srtt; 6228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spinfo_rto; 6238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t spinfo_mtu; 6248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_rtoinfo { 6278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t srto_assoc_id; 6288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t srto_initial; 6298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t srto_max; 6308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t srto_min; 6318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_assocparams { 6348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sasoc_assoc_id; 6358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sasoc_peer_rwnd; 6368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sasoc_local_rwnd; 6378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sasoc_cookie_life; 6388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sasoc_asocmaxrxt; 6398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sasoc_number_peer_destinations; 6408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_setprim { 6438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_storage ssp_addr; 6448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t ssp_assoc_id; 6458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t ssp_padding[4]; 6468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_setpeerprim { 6498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_storage sspp_addr; 6508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sspp_assoc_id; 6518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sspp_padding[4]; 6528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_getaddresses { 6558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sget_assoc_id; 6568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* addr is filled in for N * sockaddr_storage */ 6578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr addr[1]; 6588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_status { 6618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sstat_assoc_id; 6628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int32_t sstat_state; 6638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sstat_rwnd; 6648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sstat_unackdata; 6658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sstat_penddata; 6668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sstat_instrms; 6678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sstat_outstrms; 6688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sstat_fragmentation_point; 6698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_paddrinfo sstat_primary; 6708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 6738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * AUTHENTICATION support 6748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 6758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* SCTP_AUTH_CHUNK */ 6768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_authchunk { 6778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sauth_chunk; 6788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* SCTP_AUTH_KEY */ 6818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_authkey { 6828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sca_assoc_id; 6838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sca_keynumber; 6848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sca_keylength; 6858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sca_key[]; 6868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* SCTP_HMAC_IDENT */ 6898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_hmacalgo { 6908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t shmac_number_of_idents; 6918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t shmac_idents[]; 6928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 6938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* AUTH hmac_id */ 6958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_AUTH_HMAC_ID_RSVD 0x0000 6968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_AUTH_HMAC_ID_SHA1 0x0001 /* default, mandatory */ 6978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_AUTH_HMAC_ID_SHA256 0x0003 6988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 6998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* SCTP_AUTH_ACTIVE_KEY / SCTP_AUTH_DELETE_KEY */ 7008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_authkeyid { 7018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t scact_assoc_id; 7028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t scact_keynumber; 7038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* SCTP_PEER_AUTH_CHUNKS / SCTP_LOCAL_AUTH_CHUNKS */ 7068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_authchunks { 7078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t gauth_assoc_id; 7081a2e446bdbc52cc6178a3f80092943a84706ece9tuexen uint32_t gauth_number_of_chunks; 7098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t gauth_chunks[]; 7108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_assoc_value { 7138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t assoc_id; 7148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t assoc_value; 7158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_cc_option { 7188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int option; 7198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_assoc_value aid_value; 7208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_stream_value { 7238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t assoc_id; 7248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t stream_id; 7258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t stream_value; 7268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_assoc_ids { 7298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t gaids_number_of_ids; 7308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t gaids_assoc_id[]; 7318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sack_info { 7348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t sack_assoc_id; 7358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sack_delay; 7368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sack_freq; 7378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_timeouts { 7408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t stimo_assoc_id; 7418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stimo_init; 7428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stimo_data; 7438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stimo_sack; 7448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stimo_shutdown; 7458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stimo_heartbeat; 7468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stimo_cookie; 7478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stimo_shutdownack; 7488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 750153408b8be3c05b43cd0703fa015f6b3d7f2404btuexenstruct sctp_udpencaps { 751153408b8be3c05b43cd0703fa015f6b3d7f2404btuexen struct sockaddr_storage sue_address; 752d60bcb73900717c3e981a10a87751c59a1740b5atuexen sctp_assoc_t sue_assoc_id; 753153408b8be3c05b43cd0703fa015f6b3d7f2404btuexen uint16_t sue_port; 754153408b8be3c05b43cd0703fa015f6b3d7f2404btuexen}; 755153408b8be3c05b43cd0703fa015f6b3d7f2404btuexen 75620d5d287bff2075897105f85287230d55bdfa420tstruct sctp_prstatus { 75720d5d287bff2075897105f85287230d55bdfa420t sctp_assoc_t sprstat_assoc_id; 75820d5d287bff2075897105f85287230d55bdfa420t uint16_t sprstat_sid; 75920d5d287bff2075897105f85287230d55bdfa420t uint16_t sprstat_policy; 76020d5d287bff2075897105f85287230d55bdfa420t uint64_t sprstat_abandoned_unsent; 76120d5d287bff2075897105f85287230d55bdfa420t uint64_t sprstat_abandoned_sent; 76220d5d287bff2075897105f85287230d55bdfa420t}; 76320d5d287bff2075897105f85287230d55bdfa420t 7648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_cwnd_args { 7658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_nets *net; /* network to */ /* FIXME: LP64 issue */ 7668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t cwnd_new_value;/* cwnd in k */ 7678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t pseudo_cumack; 7688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t inflight; /* flightsize in k */ 7698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t cwnd_augment; /* increment to it */ 7708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t meets_pseudo_cumack; 7718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t need_new_pseudo_cumack; 7728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t cnt_in_send; 7738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t cnt_in_str; 7748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_blk_args { 7778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t onsb; /* in 1k bytes */ 7788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sndlen; /* len of send being attempted */ 7798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t peer_rwnd; /* rwnd of peer */ 7808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t send_sent_qcnt;/* chnk cnt */ 7818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t stream_qcnt; /* chnk cnt */ 7828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t chunks_on_oque;/* chunks out */ 7838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t flight_size; /* flight size in k */ 7848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 7858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 7868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 7878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Max we can reset in one setting, note this is dictated not by the define 7888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * but the size of a mbuf cluster so don't change this define and think you 7898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * can specify more. You must do multiple resets if you want to reset more 7908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * than SCTP_MAX_EXPLICIT_STR_RESET. 7918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 7928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_MAX_EXPLICT_STR_RESET 1000 7938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 794c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexenstruct sctp_reset_streams { 795c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen sctp_assoc_t srs_assoc_id; 796c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t srs_flags; 797c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t srs_number_streams; /* 0 == ALL */ 798c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t srs_stream_list[];/* list if strrst_num_streams is not 0 */ 7998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 801c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexenstruct sctp_add_streams { 802c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen sctp_assoc_t sas_assoc_id; 803c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t sas_instrms; 804c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen uint16_t sas_outstrms; 805c2352ecab1d9ed208f1d33f5dc0088689b2f210etuexen}; 8068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_get_nonce_values { 8088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t gn_assoc_id; 8098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t gn_peers_tag; 8108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t gn_local_tag; 8118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* Debugging logs */ 8148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_str_log { 8158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *stcb; /* FIXME: LP64 issue */ 8168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t n_tsn; 8178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t e_tsn; 8188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t n_sseq; 8198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t e_sseq; 8208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t strm; 8218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sb_log { 8248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *stcb; /* FIXME: LP64 issue */ 8258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t so_sbcc; 8268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t stcb_sbcc; 8278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t incr; 8288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_fr_log { 8318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t largest_tsn; 8328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t largest_new_tsn; 8338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t tsn; 8348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_fr_map { 8378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t base; 8388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t cum; 8398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t high; 8408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_rwnd_log { 8438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rwnd; 8448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t send_size; 8458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t overhead; 8468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t new_rwnd; 8478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_mbcnt_log { 8508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_queue_size; 8518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t size_change; 8528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_queue_mb_size; 8538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t mbcnt_change; 8548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sack_log { 8578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t cumack; 8588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t oldcumack; 8598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t tsn; 8608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t numGaps; 8618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t numDups; 8628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_lock_log { 8658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *sock; /* FIXME: LP64 issue */ 8668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *inp; /* FIXME: LP64 issue */ 8678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t tcb_lock; 8688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t inp_lock; 8698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t info_lock; 8708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sock_lock; 8718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sockrcvbuf_lock; 8728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t socksndbuf_lock; 8738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t create_lock; 8748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t resv; 8758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_rto_log { 8788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void * net; /* FIXME: LP64 issue */ 8798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rtt; 8808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_nagle_log { 8838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *stcb; /* FIXME: LP64 issue */ 8848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_flight; 8858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_in_queue; 8868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t count_in_queue; 8878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t count_in_flight; 8888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 8898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 8908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_sbwake_log { 8918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *stcb; /* FIXME: LP64 issue */ 8928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t send_q; 8938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t sent_q; 8948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t flight; 8958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t wake_cnt; 8968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t stream_qcnt; /* chnk cnt */ 8978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t chunks_on_oque;/* chunks out */ 8988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sbflags; 8998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t sctpflags; 9008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 9018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_misc_info { 9038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t log1; 9048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t log2; 9058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t log3; 9068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t log4; 9078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 9088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_log_closing { 9108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *inp; /* FIXME: LP64 issue */ 9118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen void *stcb; /* FIXME: LP64 issue */ 9128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctp_flags; 9138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t state; 9148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int16_t loc; 9158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 9168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_mbuf_log { 9188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct mbuf *mp; /* FIXME: LP64 issue */ 9198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen caddr_t ext; 9208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen caddr_t data; 9218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t size; 9228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t refcnt; 9238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t mbuf_flags; 9248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 9258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_cwnd_log { 9278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint64_t time_event; 9288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t from; 9298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t event_type; 9308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t resv[2]; 9318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen union { 9328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_log_closing close; 9338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_blk_args blk; 9348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_cwnd_args cwnd; 9358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_str_log strlog; 9368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_fr_log fr; 9378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_fr_map map; 9388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_rwnd_log rwnd; 9398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_mbcnt_log mbcnt; 9408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sack_log sack; 9418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_lock_log lock; 9428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_rto_log rto; 9438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sb_log sb; 9448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_nagle_log nagle; 9458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sbwake_log wake; 9468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_mbuf_log mb; 9478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_misc_info misc; 9488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen } x; 9498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 9508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_cwnd_log_req { 9528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int32_t num_in_log; /* Number in log */ 9538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int32_t num_ret; /* Number returned */ 9548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int32_t start_at; /* start at this one */ 9558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int32_t end_at; /* end at this one */ 9568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_cwnd_log log[]; 9578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 9588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_timeval { 9608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t tv_sec; 9618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t tv_usec; 9628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 9638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctpstat { 9658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_timeval sctps_discontinuitytime; /* sctpStats 18 (TimeStamp) */ 9668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* MIB according to RFC 3873 */ 9678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_currestab; /* sctpStats 1 (Gauge32) */ 9688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_activeestab; /* sctpStats 2 (Counter32) */ 9698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_restartestab; 9708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_collisionestab; 9718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_passiveestab; /* sctpStats 3 (Counter32) */ 9728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_aborted; /* sctpStats 4 (Counter32) */ 9738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_shutdown; /* sctpStats 5 (Counter32) */ 9748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_outoftheblue; /* sctpStats 6 (Counter32) */ 9758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_checksumerrors; /* sctpStats 7 (Counter32) */ 9768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_outcontrolchunks; /* sctpStats 8 (Counter64) */ 9778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_outorderchunks; /* sctpStats 9 (Counter64) */ 9788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_outunorderchunks; /* sctpStats 10 (Counter64) */ 9798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_incontrolchunks; /* sctpStats 11 (Counter64) */ 9808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_inorderchunks; /* sctpStats 12 (Counter64) */ 9818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_inunorderchunks; /* sctpStats 13 (Counter64) */ 9828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_fragusrmsgs; /* sctpStats 14 (Counter64) */ 9838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_reasmusrmsgs; /* sctpStats 15 (Counter64) */ 9848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_outpackets; /* sctpStats 16 (Counter64) */ 9858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_inpackets; /* sctpStats 17 (Counter64) */ 9868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 9878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* input statistics: */ 9888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvpackets; /* total input packets */ 9898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvdatagrams; /* total input datagrams */ 9908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvpktwithdata; /* total packets that had data */ 9918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvsacks; /* total input SACK chunks */ 9928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvdata; /* total input DATA chunks */ 9938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvdupdata; /* total input duplicate DATA chunks */ 9948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvheartbeat; /* total input HB chunks */ 9958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvheartbeatack; /* total input HB-ACK chunks */ 9968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvecne; /* total input ECNE chunks */ 9978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvauth; /* total input AUTH chunks */ 9988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvauthmissing; /* total input chunks missing AUTH */ 9998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvivalhmacid; /* total number of invalid HMAC ids received */ 10008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvivalkeyid; /* total number of invalid secret ids received */ 10018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvauthfailed; /* total number of auth failed */ 10028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvexpress; /* total fast path receives all one chunk */ 10038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvexpressm; /* total fast path multi-part data */ 10048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvnocrc; 10058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvswcrc; 10068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_recvhwcrc; 1007000a5bac556b28e74e4e98c540f66b1743e9312dtuexen 10088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* output statistics: */ 10098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendpackets; /* total output packets */ 10108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendsacks; /* total output SACKs */ 10118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_senddata; /* total output DATA chunks */ 10128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendretransdata; /* total output retransmitted DATA chunks */ 10138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendfastretrans; /* total output fast retransmitted DATA chunks */ 10148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendmultfastretrans; /* total FR's that happened more than once 10158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * to same chunk (u-del multi-fr algo). 10168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 10178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendheartbeat; /* total output HB chunks */ 10188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendecne; /* total output ECNE chunks */ 10198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendauth; /* total output AUTH chunks FIXME */ 10208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_senderrors; /* ip_output error counter */ 10218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendnocrc; 10228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendswcrc; 10238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sendhwcrc; 10248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* PCKDROPREP statistics: */ 10258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpfmbox; /* Packet drop from middle box */ 10268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpfehos; /* P-drop from end host */ 10278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpmbda; /* P-drops with data */ 10288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpmbct; /* P-drops, non-data, non-endhost */ 10298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpbwrpt; /* P-drop, non-endhost, bandwidth rep only */ 10308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpcrupt; /* P-drop, not enough for chunk header */ 10318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpnedat; /* P-drop, not enough data to confirm */ 10328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrppdbrk; /* P-drop, where process_chunk_drop said break */ 10338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrptsnnf; /* P-drop, could not find TSN */ 10348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpdnfnd; /* P-drop, attempt reverse TSN lookup */ 10358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpdiwnp; /* P-drop, e-host confirms zero-rwnd */ 10368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpdizrw; /* P-drop, midbox confirms no space */ 10378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpbadd; /* P-drop, data did not match TSN */ 10388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_pdrpmark; /* P-drop, TSN's marked for Fast Retran */ 10398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* timeouts */ 10408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoiterator; /* Number of iterator timers that fired */ 10418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timodata; /* Number of T3 data time outs */ 10428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timowindowprobe; /* Number of window probe (T3) timers that fired */ 10438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoinit; /* Number of INIT timers that fired */ 10448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timosack; /* Number of sack timers that fired */ 10458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoshutdown; /* Number of shutdown timers that fired */ 10468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoheartbeat; /* Number of heartbeat timers that fired */ 10478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timocookie; /* Number of times a cookie timeout fired */ 10488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timosecret; /* Number of times an endpoint changed its cookie secret*/ 10498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timopathmtu; /* Number of PMTU timers that fired */ 10508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoshutdownack; /* Number of shutdown ack timers that fired */ 10518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoshutdownguard; /* Number of shutdown guard timers that fired */ 10528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timostrmrst; /* Number of stream reset timers that fired */ 10538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoearlyfr; /* Number of early FR timers that fired */ 10548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoasconf; /* Number of times an asconf timer fired */ 10558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timodelprim; /* Number of times a prim_deleted timer fired */ 10568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoautoclose; /* Number of times auto close timer fired */ 10578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoassockill; /* Number of asoc free timers expired */ 10588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_timoinpkill; /* Number of inp free timers expired */ 10598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* former early FR counters */ 10608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_spare[11]; 10618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen /* others */ 10628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_hdrops; /* packet shorter than header */ 10638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_badsum; /* checksum error */ 10648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_noport; /* no endpoint for port */ 10658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_badvtag; /* bad v-tag */ 10668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_badsid; /* bad SID */ 10678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_nomem; /* no memory */ 10688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_fastretransinrtt; /* number of multiple FR in a RTT window */ 10698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_markedretrans; 10708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_naglesent; /* nagle allowed sending */ 10718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_naglequeued; /* nagle doesn't allow sending */ 10728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_maxburstqueued; /* max burst doesn't allow sending */ 10738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_ifnomemqueued; /* look ahead tells us no memory in 10748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * interface ring buffer OR we had a 10758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * send error and are queuing one send. 10768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 10778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_windowprobed; /* total number of window probes sent */ 10788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_lowlevelerr; /* total times an output error causes us 10798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * to clamp down on next user send. 10808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 10818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_lowlevelerrusr; /* total times sctp_senderrors were caused from 10828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * a user send from a user invoked send not 10838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * a sack response 10848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 10858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_datadropchklmt; /* Number of in data drops due to chunk limit reached */ 10868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_datadroprwnd; /* Number of in data drops due to rwnd limit reached */ 10878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_ecnereducedcwnd; /* Number of times a ECN reduced the cwnd */ 10888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_vtagexpress; /* Used express lookup via vtag */ 10898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_vtagbogus; /* Collision in express lookup. */ 10908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_primary_randry; /* Number of times the sender ran dry of user data on primary */ 10918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_cmt_randry; /* Same for above */ 10928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_slowpath_sack; /* Sacks the slow way */ 10938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_wu_sacks_sent; /* Window Update only sacks sent */ 10948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sends_with_flags; /* number of sends with sinfo_flags !=0 */ 10958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sends_with_unord; /* number of unordered sends */ 10968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sends_with_eof; /* number of sends with EOF flag set */ 10978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_sends_with_abort; /* number of sends with ABORT flag set */ 10988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_protocol_drain_calls; /* number of times protocol drain called */ 10998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_protocol_drains_done; /* number of times we did a protocol drain */ 11008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_read_peeks; /* Number of times recv was called with peek */ 11018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_cached_chk; /* Number of cached chunks used */ 11028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_cached_strmoq; /* Number of cached stream oq's used */ 11038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_left_abandon; /* Number of unread messages abandoned by close */ 11048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_send_burst_avoid; /* Unused */ 11058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_send_cwnd_avoid; /* Send cwnd full avoidance, already max burst inflight to net */ 11068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_fwdtsn_map_over; /* number of map array over-runs via fwd-tsn's */ 11078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_queue_upd_ecne; /* Number of times we queued or updated an ECN chunk on send queue */ 11088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t sctps_reserved[31]; /* Future ABI compat - remove int's from here when adding new */ 11098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 11108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 11118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_INCR(_x) SCTP_STAT_INCR_BY(_x,1) 11128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_DECR(_x) SCTP_STAT_DECR_BY(_x,1) 11138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__FreeBSD__) && defined(SMP) && defined(SCTP_USE_PERCPU_STAT) 11148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_INCR_BY(_x,_d) (SCTP_BASE_STATS[PCPU_GET(cpuid)]._x += _d) 11158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_DECR_BY(_x,_d) (SCTP_BASE_STATS[PCPU_GET(cpuid)]._x -= _d) 11168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 11178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_INCR_BY(_x,_d) atomic_add_int(&SCTP_BASE_STAT(_x), _d) 11188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_DECR_BY(_x,_d) atomic_subtract_int(&SCTP_BASE_STAT(_x), _d) 11198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* The following macros are for handling MIB values, */ 11218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_INCR_COUNTER32(_x) SCTP_STAT_INCR(_x) 11228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_INCR_COUNTER64(_x) SCTP_STAT_INCR(_x) 11238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_INCR_GAUGE32(_x) SCTP_STAT_INCR(_x) 11248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_DECR_COUNTER32(_x) SCTP_STAT_DECR(_x) 11258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_DECR_COUNTER64(_x) SCTP_STAT_DECR(_x) 11268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_STAT_DECR_GAUGE32(_x) SCTP_STAT_DECR(_x) 11278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 112814dc12edd4df3d656f0f555cd12e60a9951f49bdtuexen#if defined(__Userspace__) 11298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenunion sctp_sockstore { 1130c5e505da69d2f4a94b68ccdf8fcbd336110ff77ctuexen#if defined(INET) 11318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_in sin; 11328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 1133c5e505da69d2f4a94b68ccdf8fcbd336110ff77ctuexen#if defined(INET6) 11348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr_in6 sin6; 11358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 1136b049c47efe2be4692752fdeb90cbc26f5bd3a1c7tuexen struct sockaddr_conn sconn; 11378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr sa; 11388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 113914dc12edd4df3d656f0f555cd12e60a9951f49bdtuexen#else 114014dc12edd4df3d656f0f555cd12e60a9951f49bdtuexenunion sctp_sockstore { 114114dc12edd4df3d656f0f555cd12e60a9951f49bdtuexen struct sockaddr_in sin; 114214dc12edd4df3d656f0f555cd12e60a9951f49bdtuexen struct sockaddr_in6 sin6; 114314dc12edd4df3d656f0f555cd12e60a9951f49bdtuexen struct sockaddr sa; 114414dc12edd4df3d656f0f555cd12e60a9951f49bdtuexen}; 114514dc12edd4df3d656f0f555cd12e60a9951f49bdtuexen#endif 11468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 11478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 11488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/***********************************/ 11498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* And something for us old timers */ 11508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/***********************************/ 11518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 11528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef __APPLE__ 11538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef __Userspace__ 11548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef ntohll 11558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__Userspace_os_Linux) 11568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef _BSD_SOURCE 11578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define _BSD_SOURCE 11588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <endian.h> 11608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 11618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/endian.h> 11628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define ntohll(x) be64toh(x) 11648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 11668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef htonll 11678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__Userspace_os_Linux) 11688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#ifndef _BSD_SOURCE 11698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define _BSD_SOURCE 11708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <endian.h> 11728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 11738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#include <sys/endian.h> 11748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define htonll(x) htobe64(x) 11768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 11798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/***********************************/ 11808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 11818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 11828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct xsctp_inpcb { 11838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t last; 11848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t flags; 11857d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t#if defined(__FreeBSD__) && __FreeBSD_version < 1000048 11868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t features; 11877d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t#else 11887d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t uint64_t features; 11897d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t#endif 11908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_sends; 11918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_recvs; 11928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_nospaces; 11938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t fragmentation_point; 11948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t local_port; 11958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t qlen; 11968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t maxqlen; 11978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__Windows__) 11988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t padding; 11998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 12007d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t#if defined(__FreeBSD__) && __FreeBSD_version < 1000048 12018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t extra_padding[32]; /* future */ 12027d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t#else 12037d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t uint32_t extra_padding[31]; /* future */ 12047d160acf1dc9f5d9508dc4c86a74eb53ed5c8670t#endif 12058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 12068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 12078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct xsctp_tcb { 12088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen union sctp_sockstore primary_addr; /* sctpAssocEntry 5/6 */ 12098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t last; 12108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t heartbeat_interval; /* sctpAssocEntry 7 */ 12118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t state; /* sctpAssocEntry 8 */ 12128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t in_streams; /* sctpAssocEntry 9 */ 12138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t out_streams; /* sctpAssocEntry 10 */ 12148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t max_nr_retrans; /* sctpAssocEntry 11 */ 12158c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t primary_process; /* sctpAssocEntry 12 */ 12168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t T1_expireries; /* sctpAssocEntry 13 */ 12178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t T2_expireries; /* sctpAssocEntry 14 */ 12188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t retransmitted_tsns; /* sctpAssocEntry 15 */ 12198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_sends; 12208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t total_recvs; 12218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t local_tag; 12228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t remote_tag; 12238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t initial_tsn; 12248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t highest_tsn; 12258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t cumulative_tsn; 12268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t cumulative_tsn_ack; 12278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t mtu; 12288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t refcnt; 12298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t local_port; /* sctpAssocEntry 3 */ 12308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint16_t remote_port; /* sctpAssocEntry 4 */ 12318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_timeval start_time; /* sctpAssocEntry 16 */ 12328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_timeval discontinuity_time; /* sctpAssocEntry 17 */ 12338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__FreeBSD__) 12348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if __FreeBSD_version >= 800000 12358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t peers_rwnd; 12368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t assoc_id; /* sctpAssocEntry 1 */ 12378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t extra_padding[32]; /* future */ 12388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 12398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 12408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 12418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t peers_rwnd; 12428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen sctp_assoc_t assoc_id; /* sctpAssocEntry 1 */ 12438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t extra_padding[32]; /* future */ 12448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 12458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 12468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 12478c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct xsctp_laddr { 12488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen union sctp_sockstore address; /* sctpAssocLocalAddrEntry 1/2 */ 12498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t last; 12508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_timeval start_time; /* sctpAssocLocalAddrEntry 3 */ 12518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t extra_padding[32]; /* future */ 12528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 12538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 12548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct xsctp_raddr { 12558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen union sctp_sockstore address; /* sctpAssocLocalRemEntry 1/2 */ 12568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t last; 12578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rto; /* sctpAssocLocalRemEntry 5 */ 12588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t max_path_rtx; /* sctpAssocLocalRemEntry 6 */ 12598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rtx; /* sctpAssocLocalRemEntry 7 */ 12608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t error_counter; /* */ 12618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t cwnd; /* */ 12628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t flight_size; /* */ 12638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t mtu; /* */ 12648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t active; /* sctpAssocLocalRemEntry 3 */ 12658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t confirmed; /* */ 12668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t heartbeat_enabled; /* sctpAssocLocalRemEntry 4 */ 12678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint8_t potentially_failed; 12688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_timeval start_time; /* sctpAssocLocalRemEntry 8 */ 12698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__FreeBSD__) 12708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if __FreeBSD_version >= 800000 12718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rtt; 12728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t heartbeat_interval; 12738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t extra_padding[31]; /* future */ 12748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 12758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 12768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t rtt; 12778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t heartbeat_interval; 12788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t extra_padding[31]; /* future */ 12798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 12808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 12818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 12828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_MAX_LOGGING_SIZE 30000 12838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#define SCTP_TRACE_PARAMS 6 /* This number MUST be even */ 12848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 12858c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_log_entry { 12868c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint64_t timestamp; 12878c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t subsys; 12888c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t padding; 12898c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t params[SCTP_TRACE_PARAMS]; 12908c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 12918c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 12928c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenstruct sctp_log { 12938c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_log_entry entry[SCTP_MAX_LOGGING_SIZE]; 12948c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t index; 12958c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen uint32_t padding; 12968c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen}; 12978c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 12988c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 12998c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * Kernel defined for sctp_send 13008c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 13018c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(_KERNEL) || defined(__Userspace__) 13028c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint 13038c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexensctp_lower_sosend(struct socket *so, 13048c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr *addr, 13058c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct uio *uio, 13068c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__Panda__) 13078c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen pakhandle_type i_pak, 13088c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen pakhandle_type i_control, 13098c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 13108c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct mbuf *i_pak, 13118c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct mbuf *control, 13128c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 13138c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int flags, 13148c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sndrcvinfo *srcv 13150612043f643c9b26245564c05defca64d472060etuexen#if !(defined(__Panda__) || defined(__Userspace__)) 13168c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 13178c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen ,struct thread *p 13188c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#elif defined(__Windows__) 13198c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen , PKTHREAD p 13208c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 13218c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen ,struct proc *p 13228c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 13238c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 13248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen); 13258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint 13278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexensctp_sorecvmsg(struct socket *so, 13288c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct uio *uio, 13298c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if defined(__Panda__) 13308c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen particletype **mp, 13318c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#else 13328c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct mbuf **mp, 13338c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 13348c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sockaddr *from, 13358c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int fromlen, 13368c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int *msg_flags, 13378c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sndrcvinfo *sinfo, 13388c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int filling_sinfo); 13398c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif 13408c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13418c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* 13428c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen * API system calls 13438c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen */ 13448c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#if !(defined(_KERNEL)) && !(defined(__Userspace__)) 13458c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13468c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen__BEGIN_DECLS 13475ecbc5a58b2822cc2ea65aebfe53a622c4d7478ct#if defined(__FreeBSD__) && __FreeBSD_version < 902000 13488c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_peeloff __P((int, sctp_assoc_t)); 13498c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_bindx __P((int, struct sockaddr *, int, int)); 13508c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_connectx __P((int, const struct sockaddr *, int, sctp_assoc_t *)); 13518c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_getaddrlen __P((sa_family_t)); 13528c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_getpaddrs __P((int, sctp_assoc_t, struct sockaddr **)); 13538c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenvoid sctp_freepaddrs __P((struct sockaddr *)); 13548c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_getladdrs __P((int, sctp_assoc_t, struct sockaddr **)); 13558c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenvoid sctp_freeladdrs __P((struct sockaddr *)); 13568c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenint sctp_opt_info __P((int, sctp_assoc_t, int, void *, socklen_t *)); 13578c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13588c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* deprecated */ 13598c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenssize_t sctp_sendmsg __P((int, const void *, size_t, const struct sockaddr *, 13608c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen socklen_t, uint32_t, uint32_t, uint16_t, uint32_t, uint32_t)); 13618c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13628c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* deprecated */ 13638c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenssize_t sctp_send __P((int, const void *, size_t, 13648c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen const struct sctp_sndrcvinfo *, int)); 13658c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13668c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* deprecated */ 13678c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenssize_t sctp_sendx __P((int, const void *, size_t, struct sockaddr *, 13688c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int, struct sctp_sndrcvinfo *, int)); 13698c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13708c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* deprecated */ 13718c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenssize_t sctp_sendmsgx __P((int sd, const void *, size_t, struct sockaddr *, 13728c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int, uint32_t, uint32_t, uint16_t, uint32_t, uint32_t)); 13738c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13748c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexensctp_assoc_t sctp_getassocid __P((int, struct sockaddr *)); 13758c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13768c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen/* deprecated */ 13778c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenssize_t sctp_recvmsg __P((int, void *, size_t, struct sockaddr *, socklen_t *, 13788c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen struct sctp_sndrcvinfo *, int *)); 13798c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13808c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenssize_t sctp_sendv __P((int, const struct iovec *, int, struct sockaddr *, 13818c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen int, void *, socklen_t, unsigned int, int)); 13828c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 13838c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexenssize_t sctp_recvv __P((int, const struct iovec *, int, struct sockaddr *, 13848c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen socklen_t *, void *, socklen_t *, unsigned int *, int *)); 13854bda18bd6192b29406d04eeb576f5d5d7bd32fc7t#else 13864bda18bd6192b29406d04eeb576f5d5d7bd32fc7tint sctp_peeloff(int, sctp_assoc_t); 13874bda18bd6192b29406d04eeb576f5d5d7bd32fc7tint sctp_bindx(int, struct sockaddr *, int, int); 13884bda18bd6192b29406d04eeb576f5d5d7bd32fc7tint sctp_connectx(int, const struct sockaddr *, int, sctp_assoc_t *); 13894bda18bd6192b29406d04eeb576f5d5d7bd32fc7tint sctp_getaddrlen(sa_family_t); 13904bda18bd6192b29406d04eeb576f5d5d7bd32fc7tint sctp_getpaddrs(int, sctp_assoc_t, struct sockaddr **); 13914bda18bd6192b29406d04eeb576f5d5d7bd32fc7tvoid sctp_freepaddrs(struct sockaddr *); 13924bda18bd6192b29406d04eeb576f5d5d7bd32fc7tint sctp_getladdrs(int, sctp_assoc_t, struct sockaddr **); 13934bda18bd6192b29406d04eeb576f5d5d7bd32fc7tvoid sctp_freeladdrs(struct sockaddr *); 13944bda18bd6192b29406d04eeb576f5d5d7bd32fc7tint sctp_opt_info(int, sctp_assoc_t, int, void *, socklen_t *); 13954bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 13964bda18bd6192b29406d04eeb576f5d5d7bd32fc7t/* deprecated */ 13974bda18bd6192b29406d04eeb576f5d5d7bd32fc7tssize_t sctp_sendmsg(int, const void *, size_t, const struct sockaddr *, 13984bda18bd6192b29406d04eeb576f5d5d7bd32fc7t socklen_t, uint32_t, uint32_t, uint16_t, uint32_t, uint32_t); 13994bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 14004bda18bd6192b29406d04eeb576f5d5d7bd32fc7t/* deprecated */ 14014bda18bd6192b29406d04eeb576f5d5d7bd32fc7tssize_t sctp_send(int, const void *, size_t, 14024bda18bd6192b29406d04eeb576f5d5d7bd32fc7t const struct sctp_sndrcvinfo *, int); 14034bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 14044bda18bd6192b29406d04eeb576f5d5d7bd32fc7t/* deprecated */ 14054bda18bd6192b29406d04eeb576f5d5d7bd32fc7tssize_t sctp_sendx(int, const void *, size_t, struct sockaddr *, 14064bda18bd6192b29406d04eeb576f5d5d7bd32fc7t int, struct sctp_sndrcvinfo *, int); 14074bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 14084bda18bd6192b29406d04eeb576f5d5d7bd32fc7t/* deprecated */ 14094bda18bd6192b29406d04eeb576f5d5d7bd32fc7tssize_t sctp_sendmsgx(int sd, const void *, size_t, struct sockaddr *, 14104bda18bd6192b29406d04eeb576f5d5d7bd32fc7t int, uint32_t, uint32_t, uint16_t, uint32_t, uint32_t); 14114bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 14124bda18bd6192b29406d04eeb576f5d5d7bd32fc7tsctp_assoc_t sctp_getassocid(int, struct sockaddr *); 14134bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 14144bda18bd6192b29406d04eeb576f5d5d7bd32fc7t/* deprecated */ 14154bda18bd6192b29406d04eeb576f5d5d7bd32fc7tssize_t sctp_recvmsg(int, void *, size_t, struct sockaddr *, socklen_t *, 14164bda18bd6192b29406d04eeb576f5d5d7bd32fc7t struct sctp_sndrcvinfo *, int *); 14174bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 14184bda18bd6192b29406d04eeb576f5d5d7bd32fc7tssize_t sctp_sendv(int, const struct iovec *, int, struct sockaddr *, 14194bda18bd6192b29406d04eeb576f5d5d7bd32fc7t int, void *, socklen_t, unsigned int, int); 14204bda18bd6192b29406d04eeb576f5d5d7bd32fc7t 14214bda18bd6192b29406d04eeb576f5d5d7bd32fc7tssize_t sctp_recvv(int, const struct iovec *, int, struct sockaddr *, 14224bda18bd6192b29406d04eeb576f5d5d7bd32fc7t socklen_t *, void *, socklen_t *, unsigned int *, int *); 14234bda18bd6192b29406d04eeb576f5d5d7bd32fc7t#endif 14248c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen__END_DECLS 14258c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen 14268c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif /* !_KERNEL */ 14278c8a4cae58a2deed148551d56cb1ab315a55dbbdtuexen#endif /* !__sctp_uio_h__ */ 1428