Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
4db67e80 EB |
2 | #ifndef __NETNS_SCTP_H__ |
3 | #define __NETNS_SCTP_H__ | |
4 | ||
2ce95503 | 5 | struct sock; |
13d782f6 | 6 | struct proc_dir_entry; |
b01a2407 | 7 | struct sctp_mib; |
ebb7e95d | 8 | struct ctl_table_header; |
2ce95503 | 9 | |
4db67e80 | 10 | struct netns_sctp { |
b01a2407 EB |
11 | DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics); |
12 | ||
13d782f6 EB |
13 | #ifdef CONFIG_PROC_FS |
14 | struct proc_dir_entry *proc_net_sctp; | |
15 | #endif | |
ebb7e95d EB |
16 | #ifdef CONFIG_SYSCTL |
17 | struct ctl_table_header *sysctl_header; | |
18 | #endif | |
2ce95503 EB |
19 | /* This is the global socket data structure used for responding to |
20 | * the Out-of-the-blue (OOTB) packets. A control sock will be created | |
21 | * for this socket at the initialization time. | |
22 | */ | |
23 | struct sock *ctl_sock; | |
24 | ||
4db67e80 EB |
25 | /* This is the global local address list. |
26 | * We actively maintain this complete list of addresses on | |
27 | * the system by catching address add/delete events. | |
28 | * | |
29 | * It is a list of sctp_sockaddr_entry. | |
30 | */ | |
31 | struct list_head local_addr_list; | |
32 | struct list_head addr_waitq; | |
33 | struct timer_list addr_wq_timer; | |
34 | struct list_head auto_asconf_splist; | |
2d45a02d | 35 | /* Lock that protects both addr_waitq and auto_asconf_splist */ |
4db67e80 EB |
36 | spinlock_t addr_wq_lock; |
37 | ||
38 | /* Lock that protects the local_addr_list writers */ | |
39 | spinlock_t local_addr_lock; | |
ebb7e95d | 40 | |
e1fc3b14 EB |
41 | /* RFC2960 Section 14. Suggested SCTP Protocol Parameter Values |
42 | * | |
43 | * The following protocol parameters are RECOMMENDED: | |
44 | * | |
45 | * RTO.Initial - 3 seconds | |
46 | * RTO.Min - 1 second | |
47 | * RTO.Max - 60 seconds | |
48 | * RTO.Alpha - 1/8 (3 when converted to right shifts.) | |
49 | * RTO.Beta - 1/4 (2 when converted to right shifts.) | |
50 | */ | |
51 | unsigned int rto_initial; | |
52 | unsigned int rto_min; | |
53 | unsigned int rto_max; | |
54 | ||
55 | /* Note: rto_alpha and rto_beta are really defined as inverse | |
56 | * powers of two to facilitate integer operations. | |
57 | */ | |
58 | int rto_alpha; | |
59 | int rto_beta; | |
60 | ||
61 | /* Max.Burst - 4 */ | |
62 | int max_burst; | |
63 | ||
64 | /* Whether Cookie Preservative is enabled(1) or not(0) */ | |
65 | int cookie_preserve_enable; | |
66 | ||
3c68198e NH |
67 | /* The namespace default hmac alg */ |
68 | char *sctp_hmac_alg; | |
69 | ||
e1fc3b14 EB |
70 | /* Valid.Cookie.Life - 60 seconds */ |
71 | unsigned int valid_cookie_life; | |
72 | ||
73 | /* Delayed SACK timeout 200ms default*/ | |
74 | unsigned int sack_timeout; | |
75 | ||
76 | /* HB.interval - 30 seconds */ | |
77 | unsigned int hb_interval; | |
78 | ||
79 | /* Association.Max.Retrans - 10 attempts | |
80 | * Path.Max.Retrans - 5 attempts (per destination address) | |
81 | * Max.Init.Retransmits - 8 attempts | |
82 | */ | |
83 | int max_retrans_association; | |
84 | int max_retrans_path; | |
85 | int max_retrans_init; | |
86 | /* Potentially-Failed.Max.Retrans sysctl value | |
87 | * taken from: | |
88 | * http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05 | |
89 | */ | |
90 | int pf_retrans; | |
91 | ||
34515e94 XL |
92 | /* Primary.Switchover.Max.Retrans sysctl value |
93 | * taken from: | |
94 | * https://tools.ietf.org/html/rfc7829 | |
95 | */ | |
96 | int ps_retrans; | |
97 | ||
566178f8 ZY |
98 | /* |
99 | * Disable Potentially-Failed feature, the feature is enabled by default | |
100 | * pf_enable - 0 : disable pf | |
101 | * - >0 : enable pf | |
102 | */ | |
103 | int pf_enable; | |
104 | ||
aef587be XL |
105 | /* |
106 | * Disable Potentially-Failed state exposure, ignored by default | |
107 | * pf_expose - 0 : compatible with old applications (by default) | |
108 | * - 1 : disable pf state exposure | |
109 | * - 2 : enable pf state exposure | |
110 | */ | |
111 | int pf_expose; | |
112 | ||
e1fc3b14 EB |
113 | /* |
114 | * Policy for preforming sctp/socket accounting | |
115 | * 0 - do socket level accounting, all assocs share sk_sndbuf | |
116 | * 1 - do sctp accounting, each asoc may use sk_sndbuf bytes | |
117 | */ | |
118 | int sndbuf_policy; | |
119 | ||
120 | /* | |
121 | * Policy for preforming sctp/socket accounting | |
122 | * 0 - do socket level accounting, all assocs share sk_rcvbuf | |
123 | * 1 - do sctp accounting, each asoc may use sk_rcvbuf bytes | |
124 | */ | |
125 | int rcvbuf_policy; | |
126 | ||
127 | int default_auto_asconf; | |
128 | ||
129 | /* Flag to indicate if addip is enabled. */ | |
130 | int addip_enable; | |
131 | int addip_noauth; | |
132 | ||
133 | /* Flag to indicate if PR-SCTP is enabled. */ | |
134 | int prsctp_enable; | |
135 | ||
c28445c3 XL |
136 | /* Flag to indicate if PR-CONFIG is enabled. */ |
137 | int reconf_enable; | |
138 | ||
772a5869 | 139 | /* Flag to indicate if SCTP-AUTH is enabled */ |
e1fc3b14 EB |
140 | int auth_enable; |
141 | ||
772a5869 XL |
142 | /* Flag to indicate if stream interleave is enabled */ |
143 | int intl_enable; | |
144 | ||
1b0b8114 XL |
145 | /* Flag to indicate if ecn is enabled */ |
146 | int ecn_enable; | |
147 | ||
e1fc3b14 EB |
148 | /* |
149 | * Policy to control SCTP IPv4 address scoping | |
150 | * 0 - Disable IPv4 address scoping | |
151 | * 1 - Enable IPv4 address scoping | |
152 | * 2 - Selectively allow only IPv4 private addresses | |
153 | * 3 - Selectively allow only IPv4 link local address | |
154 | */ | |
155 | int scope_policy; | |
156 | ||
157 | /* Threshold for rwnd update SACKS. Receive buffer shifted this many | |
158 | * bits is an indicator of when to send and window update SACK. | |
159 | */ | |
160 | int rwnd_upd_shift; | |
161 | ||
162 | /* Threshold for autoclose timeout, in seconds. */ | |
163 | unsigned long max_autoclose; | |
4db67e80 EB |
164 | }; |
165 | ||
166 | #endif /* __NETNS_SCTP_H__ */ |