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