18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __NETNS_SCTP_H__ 38c2ecf20Sopenharmony_ci#define __NETNS_SCTP_H__ 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_cistruct sock; 68c2ecf20Sopenharmony_cistruct proc_dir_entry; 78c2ecf20Sopenharmony_cistruct sctp_mib; 88c2ecf20Sopenharmony_cistruct ctl_table_header; 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_cistruct netns_sctp { 118c2ecf20Sopenharmony_ci DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics); 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#ifdef CONFIG_PROC_FS 148c2ecf20Sopenharmony_ci struct proc_dir_entry *proc_net_sctp; 158c2ecf20Sopenharmony_ci#endif 168c2ecf20Sopenharmony_ci#ifdef CONFIG_SYSCTL 178c2ecf20Sopenharmony_ci struct ctl_table_header *sysctl_header; 188c2ecf20Sopenharmony_ci#endif 198c2ecf20Sopenharmony_ci /* This is the global socket data structure used for responding to 208c2ecf20Sopenharmony_ci * the Out-of-the-blue (OOTB) packets. A control sock will be created 218c2ecf20Sopenharmony_ci * for this socket at the initialization time. 228c2ecf20Sopenharmony_ci */ 238c2ecf20Sopenharmony_ci struct sock *ctl_sock; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci /* This is the global local address list. 268c2ecf20Sopenharmony_ci * We actively maintain this complete list of addresses on 278c2ecf20Sopenharmony_ci * the system by catching address add/delete events. 288c2ecf20Sopenharmony_ci * 298c2ecf20Sopenharmony_ci * It is a list of sctp_sockaddr_entry. 308c2ecf20Sopenharmony_ci */ 318c2ecf20Sopenharmony_ci struct list_head local_addr_list; 328c2ecf20Sopenharmony_ci struct list_head addr_waitq; 338c2ecf20Sopenharmony_ci struct timer_list addr_wq_timer; 348c2ecf20Sopenharmony_ci struct list_head auto_asconf_splist; 358c2ecf20Sopenharmony_ci /* Lock that protects both addr_waitq and auto_asconf_splist */ 368c2ecf20Sopenharmony_ci spinlock_t addr_wq_lock; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci /* Lock that protects the local_addr_list writers */ 398c2ecf20Sopenharmony_ci spinlock_t local_addr_lock; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci /* RFC2960 Section 14. Suggested SCTP Protocol Parameter Values 428c2ecf20Sopenharmony_ci * 438c2ecf20Sopenharmony_ci * The following protocol parameters are RECOMMENDED: 448c2ecf20Sopenharmony_ci * 458c2ecf20Sopenharmony_ci * RTO.Initial - 3 seconds 468c2ecf20Sopenharmony_ci * RTO.Min - 1 second 478c2ecf20Sopenharmony_ci * RTO.Max - 60 seconds 488c2ecf20Sopenharmony_ci * RTO.Alpha - 1/8 (3 when converted to right shifts.) 498c2ecf20Sopenharmony_ci * RTO.Beta - 1/4 (2 when converted to right shifts.) 508c2ecf20Sopenharmony_ci */ 518c2ecf20Sopenharmony_ci unsigned int rto_initial; 528c2ecf20Sopenharmony_ci unsigned int rto_min; 538c2ecf20Sopenharmony_ci unsigned int rto_max; 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci /* Note: rto_alpha and rto_beta are really defined as inverse 568c2ecf20Sopenharmony_ci * powers of two to facilitate integer operations. 578c2ecf20Sopenharmony_ci */ 588c2ecf20Sopenharmony_ci int rto_alpha; 598c2ecf20Sopenharmony_ci int rto_beta; 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci /* Max.Burst - 4 */ 628c2ecf20Sopenharmony_ci int max_burst; 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci /* Whether Cookie Preservative is enabled(1) or not(0) */ 658c2ecf20Sopenharmony_ci int cookie_preserve_enable; 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci /* The namespace default hmac alg */ 688c2ecf20Sopenharmony_ci char *sctp_hmac_alg; 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci /* Valid.Cookie.Life - 60 seconds */ 718c2ecf20Sopenharmony_ci unsigned int valid_cookie_life; 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci /* Delayed SACK timeout 200ms default*/ 748c2ecf20Sopenharmony_ci unsigned int sack_timeout; 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci /* HB.interval - 30 seconds */ 778c2ecf20Sopenharmony_ci unsigned int hb_interval; 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci /* Association.Max.Retrans - 10 attempts 808c2ecf20Sopenharmony_ci * Path.Max.Retrans - 5 attempts (per destination address) 818c2ecf20Sopenharmony_ci * Max.Init.Retransmits - 8 attempts 828c2ecf20Sopenharmony_ci */ 838c2ecf20Sopenharmony_ci int max_retrans_association; 848c2ecf20Sopenharmony_ci int max_retrans_path; 858c2ecf20Sopenharmony_ci int max_retrans_init; 868c2ecf20Sopenharmony_ci /* Potentially-Failed.Max.Retrans sysctl value 878c2ecf20Sopenharmony_ci * taken from: 888c2ecf20Sopenharmony_ci * http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05 898c2ecf20Sopenharmony_ci */ 908c2ecf20Sopenharmony_ci int pf_retrans; 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci /* Primary.Switchover.Max.Retrans sysctl value 938c2ecf20Sopenharmony_ci * taken from: 948c2ecf20Sopenharmony_ci * https://tools.ietf.org/html/rfc7829 958c2ecf20Sopenharmony_ci */ 968c2ecf20Sopenharmony_ci int ps_retrans; 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci /* 998c2ecf20Sopenharmony_ci * Disable Potentially-Failed feature, the feature is enabled by default 1008c2ecf20Sopenharmony_ci * pf_enable - 0 : disable pf 1018c2ecf20Sopenharmony_ci * - >0 : enable pf 1028c2ecf20Sopenharmony_ci */ 1038c2ecf20Sopenharmony_ci int pf_enable; 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci /* 1068c2ecf20Sopenharmony_ci * Disable Potentially-Failed state exposure, ignored by default 1078c2ecf20Sopenharmony_ci * pf_expose - 0 : compatible with old applications (by default) 1088c2ecf20Sopenharmony_ci * - 1 : disable pf state exposure 1098c2ecf20Sopenharmony_ci * - 2 : enable pf state exposure 1108c2ecf20Sopenharmony_ci */ 1118c2ecf20Sopenharmony_ci int pf_expose; 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci /* 1148c2ecf20Sopenharmony_ci * Policy for preforming sctp/socket accounting 1158c2ecf20Sopenharmony_ci * 0 - do socket level accounting, all assocs share sk_sndbuf 1168c2ecf20Sopenharmony_ci * 1 - do sctp accounting, each asoc may use sk_sndbuf bytes 1178c2ecf20Sopenharmony_ci */ 1188c2ecf20Sopenharmony_ci int sndbuf_policy; 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci /* 1218c2ecf20Sopenharmony_ci * Policy for preforming sctp/socket accounting 1228c2ecf20Sopenharmony_ci * 0 - do socket level accounting, all assocs share sk_rcvbuf 1238c2ecf20Sopenharmony_ci * 1 - do sctp accounting, each asoc may use sk_rcvbuf bytes 1248c2ecf20Sopenharmony_ci */ 1258c2ecf20Sopenharmony_ci int rcvbuf_policy; 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_ci int default_auto_asconf; 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ci /* Flag to indicate if addip is enabled. */ 1308c2ecf20Sopenharmony_ci int addip_enable; 1318c2ecf20Sopenharmony_ci int addip_noauth; 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ci /* Flag to indicate if PR-SCTP is enabled. */ 1348c2ecf20Sopenharmony_ci int prsctp_enable; 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ci /* Flag to indicate if PR-CONFIG is enabled. */ 1378c2ecf20Sopenharmony_ci int reconf_enable; 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci /* Flag to indicate if SCTP-AUTH is enabled */ 1408c2ecf20Sopenharmony_ci int auth_enable; 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci /* Flag to indicate if stream interleave is enabled */ 1438c2ecf20Sopenharmony_ci int intl_enable; 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ci /* Flag to indicate if ecn is enabled */ 1468c2ecf20Sopenharmony_ci int ecn_enable; 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci /* 1498c2ecf20Sopenharmony_ci * Policy to control SCTP IPv4 address scoping 1508c2ecf20Sopenharmony_ci * 0 - Disable IPv4 address scoping 1518c2ecf20Sopenharmony_ci * 1 - Enable IPv4 address scoping 1528c2ecf20Sopenharmony_ci * 2 - Selectively allow only IPv4 private addresses 1538c2ecf20Sopenharmony_ci * 3 - Selectively allow only IPv4 link local address 1548c2ecf20Sopenharmony_ci */ 1558c2ecf20Sopenharmony_ci int scope_policy; 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_ci /* Threshold for rwnd update SACKS. Receive buffer shifted this many 1588c2ecf20Sopenharmony_ci * bits is an indicator of when to send and window update SACK. 1598c2ecf20Sopenharmony_ci */ 1608c2ecf20Sopenharmony_ci int rwnd_upd_shift; 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci /* Threshold for autoclose timeout, in seconds. */ 1638c2ecf20Sopenharmony_ci unsigned long max_autoclose; 1648c2ecf20Sopenharmony_ci}; 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_ci#endif /* __NETNS_SCTP_H__ */ 167