FreeBSD kernel IPv4 code
sctp_sysctl.c
Go to the documentation of this file.
1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 2007, by Cisco Systems, Inc. All rights reserved.
5 * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved.
6 * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * a) Redistributions of source code must retain the above copyright notice,
12 * this list of conditions and the following disclaimer.
13 *
14 * b) Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the distribution.
17 *
18 * c) Neither the name of Cisco Systems, Inc. nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
24 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE.
33 */
34
35#include <sys/cdefs.h>
36__FBSDID("$FreeBSD$");
37
38#include <netinet/sctp_os.h>
39#include <netinet/sctp.h>
41#include <netinet/sctp_sysctl.h>
42#include <netinet/sctp_pcb.h>
43#include <netinet/sctputil.h>
44#include <netinet/sctp_output.h>
45#include <sys/smp.h>
46#include <sys/sysctl.h>
47
48FEATURE(sctp, "Stream Control Transmission Protocol");
49
50/*
51 * sysctl tunable variables
52 */
53
54void
56{
68 SCTP_BASE_SYSCTL(sctp_peer_chunk_oh) = SCTPCTL_PEER_CHKOH_DEFAULT;
69 SCTP_BASE_SYSCTL(sctp_max_burst_default) = SCTPCTL_MAXBURST_DEFAULT;
70 SCTP_BASE_SYSCTL(sctp_fr_max_burst_default) = SCTPCTL_FRMAXBURST_DEFAULT;
71 SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue) = SCTPCTL_MAXCHUNKS_DEFAULT;
76 SCTP_BASE_SYSCTL(sctp_delayed_sack_time_default) = SCTPCTL_DELAYED_SACK_TIME_DEFAULT;
77 SCTP_BASE_SYSCTL(sctp_sack_freq_default) = SCTPCTL_SACK_FREQ_DEFAULT;
78 SCTP_BASE_SYSCTL(sctp_system_free_resc_limit) = SCTPCTL_SYS_RESOURCE_DEFAULT;
79 SCTP_BASE_SYSCTL(sctp_asoc_free_resc_limit) = SCTPCTL_ASOC_RESOURCE_DEFAULT;
80 SCTP_BASE_SYSCTL(sctp_heartbeat_interval_default) = SCTPCTL_HEARTBEAT_INTERVAL_DEFAULT;
81 SCTP_BASE_SYSCTL(sctp_pmtu_raise_time_default) = SCTPCTL_PMTU_RAISE_TIME_DEFAULT;
82 SCTP_BASE_SYSCTL(sctp_shutdown_guard_time_default) = SCTPCTL_SHUTDOWN_GUARD_TIME_DEFAULT;
83 SCTP_BASE_SYSCTL(sctp_secret_lifetime_default) = SCTPCTL_SECRET_LIFETIME_DEFAULT;
84 SCTP_BASE_SYSCTL(sctp_rto_max_default) = SCTPCTL_RTO_MAX_DEFAULT;
85 SCTP_BASE_SYSCTL(sctp_rto_min_default) = SCTPCTL_RTO_MIN_DEFAULT;
86 SCTP_BASE_SYSCTL(sctp_rto_initial_default) = SCTPCTL_RTO_INITIAL_DEFAULT;
87 SCTP_BASE_SYSCTL(sctp_init_rto_max_default) = SCTPCTL_INIT_RTO_MAX_DEFAULT;
88 SCTP_BASE_SYSCTL(sctp_valid_cookie_life_default) = SCTPCTL_VALID_COOKIE_LIFE_DEFAULT;
89 SCTP_BASE_SYSCTL(sctp_init_rtx_max_default) = SCTPCTL_INIT_RTX_MAX_DEFAULT;
90 SCTP_BASE_SYSCTL(sctp_assoc_rtx_max_default) = SCTPCTL_ASSOC_RTX_MAX_DEFAULT;
91 SCTP_BASE_SYSCTL(sctp_path_rtx_max_default) = SCTPCTL_PATH_RTX_MAX_DEFAULT;
94 SCTP_BASE_SYSCTL(sctp_nr_incoming_streams_default) = SCTPCTL_INCOMING_STREAMS_DEFAULT;
95 SCTP_BASE_SYSCTL(sctp_nr_outgoing_streams_default) = SCTPCTL_OUTGOING_STREAMS_DEFAULT;
98 SCTP_BASE_SYSCTL(sctp_use_cwnd_based_maxburst) = SCTPCTL_CWND_MAXBURST_DEFAULT;
100 SCTP_BASE_SYSCTL(sctp_L2_abc_variable) = SCTPCTL_ABC_L_VAR_DEFAULT;
101 SCTP_BASE_SYSCTL(sctp_mbuf_threshold_count) = SCTPCTL_MAX_CHAINED_MBUFS_DEFAULT;
104 SCTP_BASE_SYSCTL(sctp_abort_if_one_2_one_hits_limit) = SCTPCTL_ABORT_AT_LIMIT_DEFAULT;
106 SCTP_BASE_SYSCTL(sctp_max_retran_chunk) = SCTPCTL_MAX_RETRAN_CHUNK_DEFAULT;
108 SCTP_BASE_SYSCTL(sctp_default_cc_module) = SCTPCTL_DEFAULT_CC_MODULE_DEFAULT;
109 SCTP_BASE_SYSCTL(sctp_default_ss_module) = SCTPCTL_DEFAULT_SS_MODULE_DEFAULT;
110 SCTP_BASE_SYSCTL(sctp_default_frag_interleave) = SCTPCTL_DEFAULT_FRAG_INTERLEAVE_DEFAULT;
112 SCTP_BASE_SYSCTL(sctp_mobility_fasthandoff) = SCTPCTL_MOBILITY_FASTHANDOFF_DEFAULT;
113 SCTP_BASE_SYSCTL(sctp_vtag_time_wait) = SCTPCTL_TIME_WAIT_DEFAULT;
114 SCTP_BASE_SYSCTL(sctp_buffer_splitting) = SCTPCTL_BUFFER_SPLITTING_DEFAULT;
124#if defined(SCTP_LOCAL_TRACE_BUF)
125 memset(&SCTP_BASE_SYSCTL(sctp_log), 0, sizeof(struct sctp_log));
126#endif
127 SCTP_BASE_SYSCTL(sctp_udp_tunneling_port) = SCTPCTL_UDP_TUNNELING_PORT_DEFAULT;
128 SCTP_BASE_SYSCTL(sctp_enable_sack_immediately) = SCTPCTL_SACK_IMMEDIATELY_ENABLE_DEFAULT;
129 SCTP_BASE_SYSCTL(sctp_inits_include_nat_friendly) = SCTPCTL_NAT_FRIENDLY_INITS_DEFAULT;
130#if defined(SCTP_DEBUG)
131 SCTP_BASE_SYSCTL(sctp_debug_on) = SCTPCTL_DEBUG_DEFAULT;
132#endif
133}
134
135/* It returns an upper limit. No filtering is done here */
136static unsigned int
138{
139 unsigned int cnt;
140 struct sctp_vrf *vrf;
141 struct sctp_ifn *sctp_ifn;
142 struct sctp_ifa *sctp_ifa;
143 struct sctp_laddr *laddr;
144
145 cnt = 0;
146 /* neither Mac OS X nor FreeBSD support mulitple routing functions */
147 if ((vrf = sctp_find_vrf(inp->def_vrf_id)) == NULL) {
148 return (0);
149 }
151 LIST_FOREACH(sctp_ifn, &vrf->ifnlist, next_ifn) {
152 LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) {
153 switch (sctp_ifa->address.sa.sa_family) {
154#ifdef INET
155 case AF_INET:
156#endif
157#ifdef INET6
158 case AF_INET6:
159#endif
160 cnt++;
161 break;
162 default:
163 break;
164 }
165 }
166 }
167 } else {
168 LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) {
169 switch (laddr->ifa->address.sa.sa_family) {
170#ifdef INET
171 case AF_INET:
172#endif
173#ifdef INET6
174 case AF_INET6:
175#endif
176 cnt++;
177 break;
178 default:
179 break;
180 }
181 }
182 }
183 return (cnt);
184}
185
186static int
187sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sysctl_req *req)
188{
189 struct sctp_ifn *sctp_ifn;
190 struct sctp_ifa *sctp_ifa;
191 int loopback_scope, ipv4_local_scope, local_scope, site_scope;
192 int ipv4_addr_legal, ipv6_addr_legal;
193 struct sctp_vrf *vrf;
194 struct xsctp_laddr xladdr;
195 struct sctp_laddr *laddr;
196 int error;
197
198 /* Turn on all the appropriate scope */
199 if (stcb) {
200 /* use association specific values */
201 loopback_scope = stcb->asoc.scope.loopback_scope;
202 ipv4_local_scope = stcb->asoc.scope.ipv4_local_scope;
203 local_scope = stcb->asoc.scope.local_scope;
204 site_scope = stcb->asoc.scope.site_scope;
205 ipv4_addr_legal = stcb->asoc.scope.ipv4_addr_legal;
206 ipv6_addr_legal = stcb->asoc.scope.ipv6_addr_legal;
207 } else {
208 /* Use generic values for endpoints. */
209 loopback_scope = 1;
210 ipv4_local_scope = 1;
211 local_scope = 1;
212 site_scope = 1;
214 ipv6_addr_legal = 1;
215 if (SCTP_IPV6_V6ONLY(inp)) {
216 ipv4_addr_legal = 0;
217 } else {
218 ipv4_addr_legal = 1;
219 }
220 } else {
221 ipv6_addr_legal = 0;
222 ipv4_addr_legal = 1;
223 }
224 }
225
226 /* neither Mac OS X nor FreeBSD support mulitple routing functions */
227 if ((vrf = sctp_find_vrf(inp->def_vrf_id)) == NULL) {
228 SCTP_INP_RUNLOCK(inp);
230 return (-1);
231 }
233 LIST_FOREACH(sctp_ifn, &vrf->ifnlist, next_ifn) {
234 if ((loopback_scope == 0) && SCTP_IFN_IS_IFT_LOOP(sctp_ifn))
235 /* Skip loopback if loopback_scope not set */
236 continue;
237 LIST_FOREACH(sctp_ifa, &sctp_ifn->ifalist, next_ifa) {
238 if (stcb) {
239 /*
240 * ignore if blacklisted at
241 * association level
242 */
244 continue;
245 }
246 switch (sctp_ifa->address.sa.sa_family) {
247#ifdef INET
248 case AF_INET:
249 if (ipv4_addr_legal) {
250 struct sockaddr_in *sin;
251
252 sin = &sctp_ifa->address.sin;
253 if (sin->sin_addr.s_addr == 0)
254 continue;
256 &sin->sin_addr) != 0) {
257 continue;
258 }
259 if ((ipv4_local_scope == 0) && (IN4_ISPRIVATE_ADDRESS(&sin->sin_addr)))
260 continue;
261 } else {
262 continue;
263 }
264 break;
265#endif
266#ifdef INET6
267 case AF_INET6:
268 if (ipv6_addr_legal) {
269 struct sockaddr_in6 *sin6;
270
271 sin6 = &sctp_ifa->address.sin6;
272 if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr))
273 continue;
274 if (prison_check_ip6(inp->ip_inp.inp.inp_cred,
275 &sin6->sin6_addr) != 0) {
276 continue;
277 }
278 if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
279 if (local_scope == 0)
280 continue;
281 }
282 if ((site_scope == 0) && (IN6_IS_ADDR_SITELOCAL(&sin6->sin6_addr)))
283 continue;
284 } else {
285 continue;
286 }
287 break;
288#endif
289 default:
290 continue;
291 }
292 memset((void *)&xladdr, 0, sizeof(struct xsctp_laddr));
293 memcpy((void *)&xladdr.address, (const void *)&sctp_ifa->address, sizeof(union sctp_sockstore));
294 SCTP_INP_RUNLOCK(inp);
296 error = SYSCTL_OUT(req, &xladdr, sizeof(struct xsctp_laddr));
297 if (error) {
298 return (error);
299 } else {
301 SCTP_INP_RLOCK(inp);
302 }
303 }
304 }
305 } else {
306 LIST_FOREACH(laddr, &inp->sctp_addr_list, sctp_nxt_addr) {
307 /* ignore if blacklisted at association level */
308 if (stcb && sctp_is_addr_restricted(stcb, laddr->ifa))
309 continue;
310 memset((void *)&xladdr, 0, sizeof(struct xsctp_laddr));
311 memcpy((void *)&xladdr.address, (const void *)&laddr->ifa->address, sizeof(union sctp_sockstore));
312 xladdr.start_time.tv_sec = (uint32_t)laddr->start_time.tv_sec;
313 xladdr.start_time.tv_usec = (uint32_t)laddr->start_time.tv_usec;
314 SCTP_INP_RUNLOCK(inp);
316 error = SYSCTL_OUT(req, &xladdr, sizeof(struct xsctp_laddr));
317 if (error) {
318 return (error);
319 } else {
321 SCTP_INP_RLOCK(inp);
322 }
323 }
324 }
325 memset((void *)&xladdr, 0, sizeof(struct xsctp_laddr));
326 xladdr.last = 1;
327 SCTP_INP_RUNLOCK(inp);
329 error = SYSCTL_OUT(req, &xladdr, sizeof(struct xsctp_laddr));
330
331 if (error) {
332 return (error);
333 } else {
335 SCTP_INP_RLOCK(inp);
336 return (0);
337 }
338}
339
340/*
341 * sysctl functions
342 */
343static int
345{
346 unsigned int number_of_endpoints;
347 unsigned int number_of_local_addresses;
348 unsigned int number_of_associations;
349 unsigned int number_of_remote_addresses;
350 unsigned int n;
351 int error;
352 struct sctp_inpcb *inp;
353 struct sctp_tcb *stcb;
354 struct sctp_nets *net;
355 struct xsctp_inpcb xinpcb;
356 struct xsctp_tcb xstcb;
357 struct xsctp_raddr xraddr;
358 struct socket *so;
359
360 number_of_endpoints = 0;
361 number_of_local_addresses = 0;
362 number_of_associations = 0;
363 number_of_remote_addresses = 0;
364
366 if (req->oldptr == NULL) {
367 LIST_FOREACH(inp, &SCTP_BASE_INFO(listhead), sctp_list) {
368 SCTP_INP_RLOCK(inp);
369 number_of_endpoints++;
370 number_of_local_addresses += sctp_sysctl_number_of_addresses(inp);
371 LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) {
372 number_of_associations++;
373 number_of_local_addresses += sctp_sysctl_number_of_addresses(inp);
374 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
375 number_of_remote_addresses++;
376 }
377 }
378 SCTP_INP_RUNLOCK(inp);
379 }
381 n = (number_of_endpoints + 1) * sizeof(struct xsctp_inpcb) +
382 (number_of_local_addresses + number_of_endpoints + number_of_associations) * sizeof(struct xsctp_laddr) +
383 (number_of_associations + number_of_endpoints) * sizeof(struct xsctp_tcb) +
384 (number_of_remote_addresses + number_of_associations) * sizeof(struct xsctp_raddr);
385
386 /* request some more memory than needed */
387 req->oldidx = (n + n / 8);
388 return (0);
389 }
390 if (req->newptr != NULL) {
392 SCTP_LTRACE_ERR_RET(NULL, NULL, NULL, SCTP_FROM_SCTP_SYSCTL, EPERM);
393 return (EPERM);
394 }
395 memset(&xinpcb, 0, sizeof(xinpcb));
396 memset(&xstcb, 0, sizeof(xstcb));
397 memset(&xraddr, 0, sizeof(xraddr));
398 LIST_FOREACH(inp, &SCTP_BASE_INFO(listhead), sctp_list) {
399 SCTP_INP_RLOCK(inp);
401 /* if its allgone it is being freed - skip it */
402 goto skip;
403 }
404 xinpcb.last = 0;
405 xinpcb.local_port = ntohs(inp->sctp_lport);
406 xinpcb.flags = inp->sctp_flags;
407 xinpcb.features = inp->sctp_features;
408 xinpcb.total_sends = inp->total_sends;
409 xinpcb.total_recvs = inp->total_recvs;
410 xinpcb.total_nospaces = inp->total_nospaces;
412 xinpcb.socket = (uintptr_t)inp->sctp_socket;
413 so = inp->sctp_socket;
414 if ((so == NULL) ||
415 (!SCTP_IS_LISTENING(inp)) ||
417 xinpcb.qlen = 0;
418 xinpcb.maxqlen = 0;
419 } else {
420 xinpcb.qlen = so->sol_qlen;
421 xinpcb.qlen_old = so->sol_qlen > USHRT_MAX ?
422 USHRT_MAX : (uint16_t)so->sol_qlen;
423 xinpcb.maxqlen = so->sol_qlimit;
424 xinpcb.maxqlen_old = so->sol_qlimit > USHRT_MAX ?
425 USHRT_MAX : (uint16_t)so->sol_qlimit;
426 }
428 SCTP_INP_RUNLOCK(inp);
430 error = SYSCTL_OUT(req, &xinpcb, sizeof(struct xsctp_inpcb));
431 if (error) {
433 return (error);
434 }
436 SCTP_INP_RLOCK(inp);
437 error = sctp_sysctl_copy_out_local_addresses(inp, NULL, req);
438 if (error) {
440 return (error);
441 }
442 LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) {
443 SCTP_TCB_LOCK(stcb);
444 atomic_add_int(&stcb->asoc.refcnt, 1);
445 SCTP_TCB_UNLOCK(stcb);
446 xstcb.last = 0;
447 xstcb.local_port = ntohs(inp->sctp_lport);
448 xstcb.remote_port = ntohs(stcb->rport);
449 if (stcb->asoc.primary_destination != NULL)
453 xstcb.assoc_id = sctp_get_associd(stcb);
454 xstcb.peers_rwnd = stcb->asoc.peers_rwnd;
455 xstcb.in_streams = stcb->asoc.streamincnt;
456 xstcb.out_streams = stcb->asoc.streamoutcnt;
458 xstcb.primary_process = 0; /* not really supported
459 * yet */
460 xstcb.T1_expireries = stcb->asoc.timoinit + stcb->asoc.timocookie;
461 xstcb.T2_expireries = stcb->asoc.timoshutdown + stcb->asoc.timoshutdownack;
463 xstcb.start_time.tv_sec = (uint32_t)stcb->asoc.start_time.tv_sec;
464 xstcb.start_time.tv_usec = (uint32_t)stcb->asoc.start_time.tv_usec;
467 xstcb.total_sends = stcb->total_sends;
468 xstcb.total_recvs = stcb->total_recvs;
469 xstcb.local_tag = stcb->asoc.my_vtag;
470 xstcb.remote_tag = stcb->asoc.peer_vtag;
471 xstcb.initial_tsn = stcb->asoc.init_seq_number;
472 xstcb.highest_tsn = stcb->asoc.sending_seq - 1;
473 xstcb.cumulative_tsn = stcb->asoc.last_acked_seq;
475 xstcb.mtu = stcb->asoc.smallest_mtu;
476 xstcb.refcnt = stcb->asoc.refcnt;
477 SCTP_INP_RUNLOCK(inp);
479 error = SYSCTL_OUT(req, &xstcb, sizeof(struct xsctp_tcb));
480 if (error) {
482 atomic_subtract_int(&stcb->asoc.refcnt, 1);
483 return (error);
484 }
486 SCTP_INP_RLOCK(inp);
487 error = sctp_sysctl_copy_out_local_addresses(inp, stcb, req);
488 if (error) {
490 atomic_subtract_int(&stcb->asoc.refcnt, 1);
491 return (error);
492 }
493 TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) {
494 xraddr.last = 0;
495 xraddr.address = net->ro._l_addr;
497 xraddr.confirmed = ((net->dest_state & SCTP_ADDR_UNCONFIRMED) == 0);
498 xraddr.heartbeat_enabled = ((net->dest_state & SCTP_ADDR_NOHB) == 0);
500 xraddr.rto = net->RTO;
501 xraddr.max_path_rtx = net->failure_threshold;
502 xraddr.rtx = net->marked_retrans;
503 xraddr.error_counter = net->error_count;
504 xraddr.cwnd = net->cwnd;
505 xraddr.flight_size = net->flight_size;
506 xraddr.mtu = net->mtu;
507 xraddr.rtt = net->rtt / 1000;
509 xraddr.ssthresh = net->ssthresh;
510 xraddr.encaps_port = net->port;
512 xraddr.state = SCTP_UNCONFIRMED;
513 } else if (net->dest_state & SCTP_ADDR_REACHABLE) {
514 xraddr.state = SCTP_ACTIVE;
515 } else {
516 xraddr.state = SCTP_INACTIVE;
517 }
518 xraddr.start_time.tv_sec = (uint32_t)net->start_time.tv_sec;
519 xraddr.start_time.tv_usec = (uint32_t)net->start_time.tv_usec;
520 SCTP_INP_RUNLOCK(inp);
522 error = SYSCTL_OUT(req, &xraddr, sizeof(struct xsctp_raddr));
523 if (error) {
525 atomic_subtract_int(&stcb->asoc.refcnt, 1);
526 return (error);
527 }
529 SCTP_INP_RLOCK(inp);
530 }
531 atomic_subtract_int(&stcb->asoc.refcnt, 1);
532 memset((void *)&xraddr, 0, sizeof(struct xsctp_raddr));
533 xraddr.last = 1;
534 SCTP_INP_RUNLOCK(inp);
536 error = SYSCTL_OUT(req, &xraddr, sizeof(struct xsctp_raddr));
537 if (error) {
539 return (error);
540 }
542 SCTP_INP_RLOCK(inp);
543 }
545 SCTP_INP_RUNLOCK(inp);
547 memset((void *)&xstcb, 0, sizeof(struct xsctp_tcb));
548 xstcb.last = 1;
549 error = SYSCTL_OUT(req, &xstcb, sizeof(struct xsctp_tcb));
550 if (error) {
551 return (error);
552 }
553skip:
555 }
557
558 memset((void *)&xinpcb, 0, sizeof(struct xsctp_inpcb));
559 xinpcb.last = 1;
560 error = SYSCTL_OUT(req, &xinpcb, sizeof(struct xsctp_inpcb));
561 return (error);
562}
563
564static int
566{
567 int error;
568 uint32_t old, new;
569
571 old = SCTP_BASE_SYSCTL(sctp_udp_tunneling_port);
573 new = old;
574 error = sysctl_handle_int(oidp, &new, 0, req);
575 if ((error == 0) &&
576 (req->newptr != NULL)) {
577#if (SCTPCTL_UDP_TUNNELING_PORT_MIN == 0)
579#else
580 if ((new < SCTPCTL_UDP_TUNNELING_PORT_MIN) ||
582#endif
583 error = EINVAL;
584 } else {
586 SCTP_BASE_SYSCTL(sctp_udp_tunneling_port) = new;
587 if (old != 0) {
589 }
590 if (new != 0) {
591 error = sctp_over_udp_start();
592 }
594 }
595 }
596 return (error);
597}
598
599static int
600sctp_sysctl_handle_auth(SYSCTL_HANDLER_ARGS)
601{
602 int error;
603 uint32_t new;
604
605 new = SCTP_BASE_SYSCTL(sctp_auth_enable);
606 error = sysctl_handle_int(oidp, &new, 0, req);
607 if ((error == 0) &&
608 (req->newptr != NULL)) {
609#if (SCTPCTL_AUTH_ENABLE_MIN == 0)
610 if ((new > SCTPCTL_AUTH_ENABLE_MAX) ||
611 ((new == 0) && (SCTP_BASE_SYSCTL(sctp_asconf_enable) == 1))) {
612#else
613 if ((new < SCTPCTL_AUTH_ENABLE_MIN) ||
614 (new > SCTPCTL_AUTH_ENABLE_MAX) ||
615 ((new == 0) && (SCTP_BASE_SYSCTL(sctp_asconf_enable) == 1))) {
616#endif
617 error = EINVAL;
618 } else {
619 SCTP_BASE_SYSCTL(sctp_auth_enable) = new;
620 }
621 }
622 return (error);
623}
624
625static int
626sctp_sysctl_handle_asconf(SYSCTL_HANDLER_ARGS)
627{
628 int error;
629 uint32_t new;
630
631 new = SCTP_BASE_SYSCTL(sctp_asconf_enable);
632 error = sysctl_handle_int(oidp, &new, 0, req);
633 if ((error == 0) &&
634 (req->newptr != NULL)) {
635#if (SCTPCTL_ASCONF_ENABLE_MIN == 0)
636 if ((new > SCTPCTL_ASCONF_ENABLE_MAX) ||
637 ((new == 1) && (SCTP_BASE_SYSCTL(sctp_auth_enable) == 0))) {
638#else
639 if ((new < SCTPCTL_ASCONF_ENABLE_MIN) ||
641 ((new == 1) && (SCTP_BASE_SYSCTL(sctp_auth_enable) == 0))) {
642#endif
643 error = EINVAL;
644 } else {
645 SCTP_BASE_SYSCTL(sctp_asconf_enable) = new;
646 }
647 }
648 return (error);
649}
650
651static int
652sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS)
653{
654 int error;
655#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT)
656 struct sctpstat *sarry;
657 struct sctpstat sb;
658 int cpu;
659#endif
660 struct sctpstat sb_temp;
661
662 if ((req->newptr != NULL) &&
663 (req->newlen != sizeof(struct sctpstat))) {
664 return (EINVAL);
665 }
666 memset(&sb_temp, 0, sizeof(struct sctpstat));
667
668 if (req->newptr != NULL) {
669 error = SYSCTL_IN(req, &sb_temp, sizeof(struct sctpstat));
670 if (error != 0) {
671 return (error);
672 }
673 }
674#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT)
675 memset(&sb, 0, sizeof(sb));
676 for (cpu = 0; cpu < mp_maxid; cpu++) {
677 sarry = &SCTP_BASE_STATS[cpu];
681 }
682 sb.sctps_currestab += sarry->sctps_currestab;
687 sb.sctps_aborted += sarry->sctps_aborted;
688 sb.sctps_shutdown += sarry->sctps_shutdown;
700 sb.sctps_inpackets += sarry->sctps_inpackets;
704 sb.sctps_recvsacks += sarry->sctps_recvsacks;
705 sb.sctps_recvdata += sarry->sctps_recvdata;
709 sb.sctps_recvecne += sarry->sctps_recvecne;
710 sb.sctps_recvauth += sarry->sctps_recvauth;
717 sb.sctps_recvswcrc += sarry->sctps_recvswcrc;
718 sb.sctps_recvhwcrc += sarry->sctps_recvhwcrc;
720 sb.sctps_sendsacks += sarry->sctps_sendsacks;
721 sb.sctps_senddata += sarry->sctps_senddata;
726 sb.sctps_sendecne += sarry->sctps_sendecne;
727 sb.sctps_sendauth += sarry->sctps_sendauth;
729 sb.sctps_sendswcrc += sarry->sctps_sendswcrc;
730 sb.sctps_sendhwcrc += sarry->sctps_sendhwcrc;
731 sb.sctps_pdrpfmbox += sarry->sctps_pdrpfmbox;
732 sb.sctps_pdrpfehos += sarry->sctps_pdrpfehos;
733 sb.sctps_pdrpmbda += sarry->sctps_pdrpmbda;
734 sb.sctps_pdrpmbct += sarry->sctps_pdrpmbct;
735 sb.sctps_pdrpbwrpt += sarry->sctps_pdrpbwrpt;
736 sb.sctps_pdrpcrupt += sarry->sctps_pdrpcrupt;
737 sb.sctps_pdrpnedat += sarry->sctps_pdrpnedat;
738 sb.sctps_pdrppdbrk += sarry->sctps_pdrppdbrk;
739 sb.sctps_pdrptsnnf += sarry->sctps_pdrptsnnf;
740 sb.sctps_pdrpdnfnd += sarry->sctps_pdrpdnfnd;
741 sb.sctps_pdrpdiwnp += sarry->sctps_pdrpdiwnp;
742 sb.sctps_pdrpdizrw += sarry->sctps_pdrpdizrw;
743 sb.sctps_pdrpbadd += sarry->sctps_pdrpbadd;
744 sb.sctps_pdrpmark += sarry->sctps_pdrpmark;
746 sb.sctps_timodata += sarry->sctps_timodata;
748 sb.sctps_timoinit += sarry->sctps_timoinit;
749 sb.sctps_timosack += sarry->sctps_timosack;
764 sb.sctps_hdrops += sarry->sctps_hdrops;
765 sb.sctps_badsum += sarry->sctps_badsum;
766 sb.sctps_noport += sarry->sctps_noport;
767 sb.sctps_badvtag += sarry->sctps_badvtag;
768 sb.sctps_badsid += sarry->sctps_badsid;
769 sb.sctps_nomem += sarry->sctps_nomem;
772 sb.sctps_naglesent += sarry->sctps_naglesent;
783 sb.sctps_vtagbogus += sarry->sctps_vtagbogus;
801 if (req->newptr != NULL) {
802 memcpy(sarry, &sb_temp, sizeof(struct sctpstat));
803 }
804 }
805 error = SYSCTL_OUT(req, &sb, sizeof(struct sctpstat));
806#else
807 error = SYSCTL_OUT(req, &SCTP_BASE_STATS, sizeof(struct sctpstat));
808 if (error != 0) {
809 return (error);
810 }
811 if (req->newptr != NULL) {
812 memcpy(&SCTP_BASE_STATS, &sb_temp, sizeof(struct sctpstat));
813 }
814#endif
815 return (error);
816}
817
818#if defined(SCTP_LOCAL_TRACE_BUF)
819static int
820sctp_sysctl_handle_trace_log(SYSCTL_HANDLER_ARGS)
821{
822 int error;
823
824 error = SYSCTL_OUT(req, &SCTP_BASE_SYSCTL(sctp_log), sizeof(struct sctp_log));
825 return (error);
826}
827
828static int
829sctp_sysctl_handle_trace_log_clear(SYSCTL_HANDLER_ARGS)
830{
831 int error = 0;
832
833 memset(&SCTP_BASE_SYSCTL(sctp_log), 0, sizeof(struct sctp_log));
834 return (error);
835}
836#endif
837
838#define SCTP_UINT_SYSCTL(mib_name, var_name, prefix) \
839 static int \
840 sctp_sysctl_handle_##mib_name(SYSCTL_HANDLER_ARGS) \
841 { \
842 int error; \
843 uint32_t new; \
844 \
845 new = SCTP_BASE_SYSCTL(var_name); \
846 error = sysctl_handle_int(oidp, &new, 0, req); \
847 if ((error == 0) && (req->newptr != NULL)) { \
848 if ((new < prefix##_MIN) || \
849 (new > prefix##_MAX)) { \
850 error = EINVAL; \
851 } else { \
852 SCTP_BASE_SYSCTL(var_name) = new; \
853 } \
854 } \
855 return (error); \
856 } \
857 SYSCTL_PROC(_net_inet_sctp, OID_AUTO, mib_name, \
858 CTLFLAG_VNET | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, \
859 NULL, 0, sctp_sysctl_handle_##mib_name, "UI", prefix##_DESC);
860
861/*
862 * sysctl definitions
863 */
864
865SCTP_UINT_SYSCTL(sendspace, sctp_sendspace, SCTPCTL_MAXDGRAM)
866SCTP_UINT_SYSCTL(recvspace, sctp_recvspace, SCTPCTL_RECVSPACE)
867SCTP_UINT_SYSCTL(auto_asconf, sctp_auto_asconf, SCTPCTL_AUTOASCONF)
868SCTP_UINT_SYSCTL(ecn_enable, sctp_ecn_enable, SCTPCTL_ECN_ENABLE)
869SCTP_UINT_SYSCTL(pr_enable, sctp_pr_enable, SCTPCTL_PR_ENABLE)
870SYSCTL_PROC(_net_inet_sctp, OID_AUTO, auth_enable,
871 CTLFLAG_VNET | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
872 NULL, 0, sctp_sysctl_handle_auth, "IU",
874SYSCTL_PROC(_net_inet_sctp, OID_AUTO, asconf_enable,
875 CTLFLAG_VNET | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
876 NULL, 0, sctp_sysctl_handle_asconf, "IU",
878SCTP_UINT_SYSCTL(reconfig_enable, sctp_reconfig_enable, SCTPCTL_RECONFIG_ENABLE)
879SCTP_UINT_SYSCTL(nrsack_enable, sctp_nrsack_enable, SCTPCTL_NRSACK_ENABLE)
880SCTP_UINT_SYSCTL(pktdrop_enable, sctp_pktdrop_enable, SCTPCTL_PKTDROP_ENABLE)
881SCTP_UINT_SYSCTL(peer_chkoh, sctp_peer_chunk_oh, SCTPCTL_PEER_CHKOH)
882SCTP_UINT_SYSCTL(maxburst, sctp_max_burst_default, SCTPCTL_MAXBURST)
883SCTP_UINT_SYSCTL(fr_maxburst, sctp_fr_max_burst_default, SCTPCTL_FRMAXBURST)
884SCTP_UINT_SYSCTL(maxchunks, sctp_max_chunks_on_queue, SCTPCTL_MAXCHUNKS)
885SCTP_UINT_SYSCTL(tcbhashsize, sctp_hashtblsize, SCTPCTL_TCBHASHSIZE)
886SCTP_UINT_SYSCTL(pcbhashsize, sctp_pcbtblsize, SCTPCTL_PCBHASHSIZE)
887SCTP_UINT_SYSCTL(min_split_point, sctp_min_split_point, SCTPCTL_MIN_SPLIT_POINT)
888SCTP_UINT_SYSCTL(chunkscale, sctp_chunkscale, SCTPCTL_CHUNKSCALE)
889SCTP_UINT_SYSCTL(delayed_sack_time, sctp_delayed_sack_time_default, SCTPCTL_DELAYED_SACK_TIME)
890SCTP_UINT_SYSCTL(sack_freq, sctp_sack_freq_default, SCTPCTL_SACK_FREQ)
891SCTP_UINT_SYSCTL(sys_resource, sctp_system_free_resc_limit, SCTPCTL_SYS_RESOURCE)
892SCTP_UINT_SYSCTL(asoc_resource, sctp_asoc_free_resc_limit, SCTPCTL_ASOC_RESOURCE)
893SCTP_UINT_SYSCTL(heartbeat_interval, sctp_heartbeat_interval_default, SCTPCTL_HEARTBEAT_INTERVAL)
894SCTP_UINT_SYSCTL(pmtu_raise_time, sctp_pmtu_raise_time_default, SCTPCTL_PMTU_RAISE_TIME)
895SCTP_UINT_SYSCTL(shutdown_guard_time, sctp_shutdown_guard_time_default, SCTPCTL_SHUTDOWN_GUARD_TIME)
896SCTP_UINT_SYSCTL(secret_lifetime, sctp_secret_lifetime_default, SCTPCTL_SECRET_LIFETIME)
897SCTP_UINT_SYSCTL(rto_max, sctp_rto_max_default, SCTPCTL_RTO_MAX)
898SCTP_UINT_SYSCTL(rto_min, sctp_rto_min_default, SCTPCTL_RTO_MIN)
899SCTP_UINT_SYSCTL(rto_initial, sctp_rto_initial_default, SCTPCTL_RTO_INITIAL)
900SCTP_UINT_SYSCTL(init_rto_max, sctp_init_rto_max_default, SCTPCTL_INIT_RTO_MAX)
901SCTP_UINT_SYSCTL(valid_cookie_life, sctp_valid_cookie_life_default, SCTPCTL_VALID_COOKIE_LIFE)
902SCTP_UINT_SYSCTL(init_rtx_max, sctp_init_rtx_max_default, SCTPCTL_INIT_RTX_MAX)
903SCTP_UINT_SYSCTL(assoc_rtx_max, sctp_assoc_rtx_max_default, SCTPCTL_ASSOC_RTX_MAX)
904SCTP_UINT_SYSCTL(path_rtx_max, sctp_path_rtx_max_default, SCTPCTL_PATH_RTX_MAX)
905SCTP_UINT_SYSCTL(path_pf_threshold, sctp_path_pf_threshold, SCTPCTL_PATH_PF_THRESHOLD)
906SCTP_UINT_SYSCTL(add_more_on_output, sctp_add_more_threshold, SCTPCTL_ADD_MORE_ON_OUTPUT)
907SCTP_UINT_SYSCTL(incoming_streams, sctp_nr_incoming_streams_default, SCTPCTL_INCOMING_STREAMS)
908SCTP_UINT_SYSCTL(outgoing_streams, sctp_nr_outgoing_streams_default, SCTPCTL_OUTGOING_STREAMS)
909SCTP_UINT_SYSCTL(cmt_on_off, sctp_cmt_on_off, SCTPCTL_CMT_ON_OFF)
910SCTP_UINT_SYSCTL(cmt_use_dac, sctp_cmt_use_dac, SCTPCTL_CMT_USE_DAC)
911SCTP_UINT_SYSCTL(cwnd_maxburst, sctp_use_cwnd_based_maxburst, SCTPCTL_CWND_MAXBURST)
912SCTP_UINT_SYSCTL(nat_friendly, sctp_nat_friendly, SCTPCTL_NAT_FRIENDLY)
913SCTP_UINT_SYSCTL(abc_l_var, sctp_L2_abc_variable, SCTPCTL_ABC_L_VAR)
914SCTP_UINT_SYSCTL(max_chained_mbufs, sctp_mbuf_threshold_count, SCTPCTL_MAX_CHAINED_MBUFS)
915SCTP_UINT_SYSCTL(do_sctp_drain, sctp_do_drain, SCTPCTL_DO_SCTP_DRAIN)
916SCTP_UINT_SYSCTL(hb_max_burst, sctp_hb_maxburst, SCTPCTL_HB_MAX_BURST)
917SCTP_UINT_SYSCTL(abort_at_limit, sctp_abort_if_one_2_one_hits_limit, SCTPCTL_ABORT_AT_LIMIT)
918SCTP_UINT_SYSCTL(min_residual, sctp_min_residual, SCTPCTL_MIN_RESIDUAL)
919SCTP_UINT_SYSCTL(max_retran_chunk, sctp_max_retran_chunk, SCTPCTL_MAX_RETRAN_CHUNK)
920SCTP_UINT_SYSCTL(log_level, sctp_logging_level, SCTPCTL_LOGGING_LEVEL)
921SCTP_UINT_SYSCTL(default_cc_module, sctp_default_cc_module, SCTPCTL_DEFAULT_CC_MODULE)
922SCTP_UINT_SYSCTL(default_ss_module, sctp_default_ss_module, SCTPCTL_DEFAULT_SS_MODULE)
923SCTP_UINT_SYSCTL(default_frag_interleave, sctp_default_frag_interleave, SCTPCTL_DEFAULT_FRAG_INTERLEAVE)
924SCTP_UINT_SYSCTL(mobility_base, sctp_mobility_base, SCTPCTL_MOBILITY_BASE)
925SCTP_UINT_SYSCTL(mobility_fasthandoff, sctp_mobility_fasthandoff, SCTPCTL_MOBILITY_FASTHANDOFF)
926#if defined(SCTP_LOCAL_TRACE_BUF)
927SYSCTL_PROC(_net_inet_sctp, OID_AUTO, log,
928 CTLFLAG_VNET | CTLTYPE_STRUCT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
929 NULL, 0, sctp_sysctl_handle_trace_log, "S,sctplog"a
930 , "SCTP logging (struct sctp_log)");
931SYSCTL_PROC(_net_inet_sctp, OID_AUTO, clear_trace,
932 CTLFLAG_VNET | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
933 NULL, 0, sctp_sysctl_handle_trace_log_clear, "IU",
934 "Clear SCTP Logging buffer");
935#endif
936SYSCTL_PROC(_net_inet_sctp, OID_AUTO, udp_tunneling_port,
937 CTLFLAG_VNET | CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
940SCTP_UINT_SYSCTL(enable_sack_immediately, sctp_enable_sack_immediately, SCTPCTL_SACK_IMMEDIATELY_ENABLE)
941SCTP_UINT_SYSCTL(nat_friendly_init, sctp_inits_include_nat_friendly, SCTPCTL_NAT_FRIENDLY_INITS)
942SCTP_UINT_SYSCTL(vtag_time_wait, sctp_vtag_time_wait, SCTPCTL_TIME_WAIT)
943SCTP_UINT_SYSCTL(buffer_splitting, sctp_buffer_splitting, SCTPCTL_BUFFER_SPLITTING)
944SCTP_UINT_SYSCTL(initial_cwnd, sctp_initial_cwnd, SCTPCTL_INITIAL_CWND)
945SCTP_UINT_SYSCTL(rttvar_bw, sctp_rttvar_bw, SCTPCTL_RTTVAR_BW)
946SCTP_UINT_SYSCTL(rttvar_rtt, sctp_rttvar_rtt, SCTPCTL_RTTVAR_RTT)
947SCTP_UINT_SYSCTL(rttvar_eqret, sctp_rttvar_eqret, SCTPCTL_RTTVAR_EQRET)
948SCTP_UINT_SYSCTL(rttvar_steady_step, sctp_steady_step, SCTPCTL_RTTVAR_STEADYS)
949SCTP_UINT_SYSCTL(use_dcccecn, sctp_use_dccc_ecn, SCTPCTL_RTTVAR_DCCCECN)
950SCTP_UINT_SYSCTL(blackhole, sctp_blackhole, SCTPCTL_BLACKHOLE)
951SCTP_UINT_SYSCTL(sendall_limit, sctp_sendall_limit, SCTPCTL_SENDALL_LIMIT)
952SCTP_UINT_SYSCTL(diag_info_code, sctp_diag_info_code, SCTPCTL_DIAG_INFO_CODE)
953#ifdef SCTP_DEBUG
954SCTP_UINT_SYSCTL(debug, sctp_debug_on, SCTPCTL_DEBUG)
955#endif
956SYSCTL_PROC(_net_inet_sctp, OID_AUTO, stats,
957 CTLFLAG_VNET | CTLTYPE_STRUCT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
958 NULL, 0, sctp_sysctl_handle_stats, "S,sctpstat",
959 "SCTP statistics (struct sctp_stat)");
960SYSCTL_PROC(_net_inet_sctp, OID_AUTO, assoclist,
961 CTLFLAG_VNET | CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
962 NULL, 0, sctp_sysctl_handle_assoclist, "S,xassoc",
963 "List of active SCTP associations");
__uint32_t uint32_t
Definition: in.h:62
__uint16_t uint16_t
Definition: in.h:57
int prison_check_ip4(const struct ucred *cred, const struct in_addr *ia)
Definition: in_jail.c:322
#define SCTP_PCB_FLAGS_BOUND_V6
Definition: sctp.h:519
#define SCTP_PCB_FLAGS_SOCKET_ALLGONE
Definition: sctp.h:522
#define SCTP_PCB_FLAGS_SOCKET_GONE
Definition: sctp.h:521
#define SCTP_PCB_FLAGS_BOUNDALL
Definition: sctp.h:505
#define IN4_ISPRIVATE_ADDRESS(a)
#define SCTP_ADDR_PF
#define SCTP_FROM_SCTP_SYSCTL
#define SCTP_ADDR_UNCONFIRMED
#define SCTP_ADDR_NOHB
#define SCTP_ADDR_REACHABLE
#define SCTP_TCB_LOCK(_tcb)
#define SCTP_INP_INFO_WLOCK()
Definition: sctp_lock_bsd.h:98
#define SCTP_INP_RLOCK(_inp)
#define SCTP_INP_INFO_RLOCK()
Definition: sctp_lock_bsd.h:94
#define SCTP_INP_DECR_REF(_inp)
#define SCTP_INP_INFO_RUNLOCK()
#define SCTP_INP_INCR_REF(_inp)
#define SCTP_TCB_UNLOCK(_tcb)
#define SCTP_INP_INFO_WUNLOCK()
#define SCTP_INP_RUNLOCK(_inp)
#define SCTP_LTRACE_ERR_RET(inp, stcb, net, file, err)
Definition: sctp_os_bsd.h:191
#define SCTP_IFN_IS_IFT_LOOP(ifn)
Definition: sctp_os_bsd.h:205
#define SCTP_BASE_INFO(__m)
Definition: sctp_os_bsd.h:145
#define SCTP_IPV6_V6ONLY(sctp_inpcb)
Definition: sctp_os_bsd.h:368
#define SCTP_BASE_STATS
Definition: sctp_os_bsd.h:146
#define SCTP_IS_LISTENING(inp)
Definition: sctp_os_bsd.h:480
#define SCTP_BASE_SYSCTL(__m)
Definition: sctp_os_bsd.h:148
int sctp_is_addr_restricted(struct sctp_tcb *stcb, struct sctp_ifa *ifa)
Definition: sctp_output.c:2407
struct sctp_vrf * sctp_find_vrf(uint32_t vrf_id)
Definition: sctp_pcb.c:216
static int sctp_sysctl_handle_assoclist(SYSCTL_HANDLER_ARGS)
Definition: sctp_sysctl.c:344
static int sctp_sysctl_handle_stats(SYSCTL_HANDLER_ARGS)
Definition: sctp_sysctl.c:652
static unsigned int sctp_sysctl_number_of_addresses(struct sctp_inpcb *inp)
Definition: sctp_sysctl.c:137
static int sctp_sysctl_handle_asconf(SYSCTL_HANDLER_ARGS)
Definition: sctp_sysctl.c:626
#define SCTP_UINT_SYSCTL(mib_name, var_name, prefix)
Definition: sctp_sysctl.c:838
__FBSDID("$FreeBSD$")
FEATURE(sctp, "Stream Control Transmission Protocol")
static int sctp_sysctl_copy_out_local_addresses(struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sysctl_req *req)
Definition: sctp_sysctl.c:187
SYSCTL_PROC(_net_inet_sctp, OID_AUTO, auth_enable, CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW|CTLFLAG_NEEDGIANT, NULL, 0, sctp_sysctl_handle_auth, "IU", SCTPCTL_AUTH_ENABLE_DESC)
static int sctp_sysctl_handle_auth(SYSCTL_HANDLER_ARGS)
Definition: sctp_sysctl.c:600
void sctp_init_sysctls()
Definition: sctp_sysctl.c:55
static int sctp_sysctl_handle_udp_tunneling(SYSCTL_HANDLER_ARGS)
Definition: sctp_sysctl.c:565
#define SCTPCTL_TIME_WAIT_DEFAULT
Definition: sctp_sysctl.h:492
#define SCTPCTL_MIN_RESIDUAL_DEFAULT
Definition: sctp_sysctl.h:426
#define SCTPCTL_RECONFIG_ENABLE_DEFAULT
Definition: sctp_sysctl.h:180
#define SCTPCTL_FRMAXBURST_DEFAULT
Definition: sctp_sysctl.h:216
#define SCTPCTL_CHUNKSCALE_DEFAULT
Definition: sctp_sysctl.h:246
#define SCTPCTL_DO_SCTP_DRAIN_DEFAULT
Definition: sctp_sysctl.h:408
#define SCTPCTL_NAT_FRIENDLY_DEFAULT
Definition: sctp_sysctl.h:390
#define SCTPCTL_MAX_CHAINED_MBUFS_DEFAULT
Definition: sctp_sysctl.h:402
#define SCTPCTL_RTTVAR_STEADYS_DEFAULT
Definition: sctp_sysctl.h:526
#define SCTPCTL_SENDALL_LIMIT_DEFAULT
Definition: sctp_sysctl.h:542
#define SCTPCTL_ASCONF_ENABLE_DESC
Definition: sctp_sysctl.h:171
#define SCTPCTL_BLACKHOLE_DEFAULT
Definition: sctp_sysctl.h:536
#define SCTPCTL_ABORT_AT_LIMIT_DEFAULT
Definition: sctp_sysctl.h:420
#define SCTPCTL_PATH_PF_THRESHOLD_DEFAULT
Definition: sctp_sysctl.h:348
#define SCTPCTL_HB_MAX_BURST_DEFAULT
Definition: sctp_sysctl.h:414
#define SCTPCTL_AUTH_ENABLE_MAX
Definition: sctp_sysctl.h:167
#define SCTPCTL_PKTDROP_ENABLE_DEFAULT
Definition: sctp_sysctl.h:192
#define SCTPCTL_PR_ENABLE_DEFAULT
Definition: sctp_sysctl.h:162
#define SCTPCTL_TCBHASHSIZE_DEFAULT
Definition: sctp_sysctl.h:228
#define SCTPCTL_MULTIPLEASCONFS_DEFAULT
Definition: sctp_sysctl.h:150
#define SCTPCTL_NAT_FRIENDLY_INITS_DEFAULT
Definition: sctp_sysctl.h:486
#define SCTPCTL_PMTU_RAISE_TIME_DEFAULT
Definition: sctp_sysctl.h:282
#define SCTPCTL_ASCONF_ENABLE_DEFAULT
Definition: sctp_sysctl.h:174
#define SCTPCTL_ASCONF_ENABLE_MAX
Definition: sctp_sysctl.h:173
#define SCTPCTL_OUTGOING_STREAMS_DEFAULT
Definition: sctp_sysctl.h:366
#define SCTPCTL_RTTVAR_RTT_DEFAULT
Definition: sctp_sysctl.h:516
#define SCTPCTL_SYS_RESOURCE_DEFAULT
Definition: sctp_sysctl.h:264
#define SCTPCTL_CMT_ON_OFF_DEFAULT
Definition: sctp_sysctl.h:372
#define SCTPCTL_CMT_USE_DAC_DEFAULT
Definition: sctp_sysctl.h:378
#define SCTPCTL_SACK_IMMEDIATELY_ENABLE_DEFAULT
Definition: sctp_sysctl.h:480
#define SCTPCTL_DIAG_INFO_CODE_DEFAULT
Definition: sctp_sysctl.h:547
#define SCTPCTL_DELAYED_SACK_TIME_DEFAULT
Definition: sctp_sysctl.h:252
#define SCTPCTL_PCBHASHSIZE_DEFAULT
Definition: sctp_sysctl.h:234
#define SCTPCTL_ADD_MORE_ON_OUTPUT_DEFAULT
Definition: sctp_sysctl.h:354
#define SCTPCTL_RTO_INITIAL_DEFAULT
Definition: sctp_sysctl.h:312
#define SCTPCTL_RTTVAR_EQRET_DEFAULT
Definition: sctp_sysctl.h:521
#define SCTPCTL_MAXBURST_DEFAULT
Definition: sctp_sysctl.h:210
#define SCTPCTL_MAXCHUNKS_DEFAULT
Definition: sctp_sysctl.h:222
#define SCTPCTL_SHUTDOWN_GUARD_TIME_DEFAULT
Definition: sctp_sysctl.h:288
#define SCTPCTL_RTTVAR_DCCCECN_DEFAULT
Definition: sctp_sysctl.h:531
#define SCTPCTL_UDP_TUNNELING_PORT_MAX
Definition: sctp_sysctl.h:473
#define SCTPCTL_RTTVAR_BW_DEFAULT
Definition: sctp_sysctl.h:510
#define SCTPCTL_ABC_L_VAR_DEFAULT
Definition: sctp_sysctl.h:396
#define SCTPCTL_INITIAL_CWND_DEFAULT
Definition: sctp_sysctl.h:504
#define SCTPCTL_INIT_RTX_MAX_DEFAULT
Definition: sctp_sysctl.h:330
#define SCTPCTL_PEER_CHKOH_DEFAULT
Definition: sctp_sysctl.h:204
#define SCTPCTL_RECVSPACE_DEFAULT
Definition: sctp_sysctl.h:138
#define SCTPCTL_DEFAULT_SS_MODULE_DEFAULT
Definition: sctp_sysctl.h:450
#define SCTPCTL_NRSACK_ENABLE_DEFAULT
Definition: sctp_sysctl.h:186
#define SCTPCTL_UDP_TUNNELING_PORT_DESC
Definition: sctp_sysctl.h:471
#define SCTPCTL_PATH_RTX_MAX_DEFAULT
Definition: sctp_sysctl.h:342
#define SCTPCTL_MAX_RETRAN_CHUNK_DEFAULT
Definition: sctp_sysctl.h:432
#define SCTPCTL_ASOC_RESOURCE_DEFAULT
Definition: sctp_sysctl.h:270
#define SCTPCTL_UDP_TUNNELING_PORT_DEFAULT
Definition: sctp_sysctl.h:474
#define SCTPCTL_SECRET_LIFETIME_DEFAULT
Definition: sctp_sysctl.h:294
#define SCTPCTL_MOBILITY_FASTHANDOFF_DEFAULT
Definition: sctp_sysctl.h:468
#define SCTPCTL_UDP_TUNNELING_PORT_MIN
Definition: sctp_sysctl.h:472
#define SCTPCTL_AUTOASCONF_DEFAULT
Definition: sctp_sysctl.h:144
#define SCTPCTL_RTO_MIN_DEFAULT
Definition: sctp_sysctl.h:306
#define SCTPCTL_DEFAULT_FRAG_INTERLEAVE_DEFAULT
Definition: sctp_sysctl.h:456
#define SCTPCTL_AUTH_ENABLE_DEFAULT
Definition: sctp_sysctl.h:168
#define SCTPCTL_DEFAULT_CC_MODULE_DEFAULT
Definition: sctp_sysctl.h:444
#define SCTPCTL_INIT_RTO_MAX_DEFAULT
Definition: sctp_sysctl.h:318
#define SCTPCTL_CWND_MAXBURST_DEFAULT
Definition: sctp_sysctl.h:384
#define SCTPCTL_BUFFER_SPLITTING_DEFAULT
Definition: sctp_sysctl.h:498
#define SCTPCTL_VALID_COOKIE_LIFE_DEFAULT
Definition: sctp_sysctl.h:324
#define SCTPCTL_MAXDGRAM_DEFAULT
Definition: sctp_sysctl.h:132
#define SCTPCTL_HEARTBEAT_INTERVAL_DEFAULT
Definition: sctp_sysctl.h:276
#define SCTPCTL_MIN_SPLIT_POINT_DEFAULT
Definition: sctp_sysctl.h:240
#define SCTPCTL_INCOMING_STREAMS_DEFAULT
Definition: sctp_sysctl.h:360
#define SCTPCTL_ECN_ENABLE_DEFAULT
Definition: sctp_sysctl.h:156
#define SCTPCTL_MOBILITY_BASE_DEFAULT
Definition: sctp_sysctl.h:462
#define SCTPCTL_LOGGING_LEVEL_DEFAULT
Definition: sctp_sysctl.h:438
#define SCTPCTL_AUTH_ENABLE_MIN
Definition: sctp_sysctl.h:166
#define SCTPCTL_AUTH_ENABLE_DESC
Definition: sctp_sysctl.h:165
#define SCTPCTL_ASSOC_RTX_MAX_DEFAULT
Definition: sctp_sysctl.h:336
#define SCTPCTL_SACK_FREQ_DEFAULT
Definition: sctp_sysctl.h:258
#define SCTPCTL_RTO_MAX_DEFAULT
Definition: sctp_sysctl.h:300
#define SCTPCTL_ASCONF_ENABLE_MIN
Definition: sctp_sysctl.h:172
#define SCTP_ACTIVE
Definition: sctp_uio.h:349
#define SCTP_INACTIVE
Definition: sctp_uio.h:350
#define SCTP_UNCONFIRMED
Definition: sctp_uio.h:351
int32_t sctp_map_assoc_state(int kernel_state)
Definition: sctputil.c:1071
int sctp_over_udp_start(void)
Definition: sctputil.c:7453
void sctp_over_udp_stop(void)
Definition: sctputil.c:7432
#define sctp_get_associd(stcb)
Definition: sctputil.h:63
in_addr_t s_addr
Definition: in.h:84
struct ucred * inp_cred
Definition: in_pcb.h:258
uint32_t sending_seq
Definition: sctp_structs.h:930
uint32_t timoshutdown
uint16_t streamincnt
struct timeval start_time
struct sctpnetlisthead nets
Definition: sctp_structs.h:814
uint32_t cumulative_tsn
Definition: sctp_structs.h:943
uint32_t timoshutdownack
uint16_t streamoutcnt
uint32_t smallest_mtu
Definition: sctp_structs.h:915
uint32_t last_acked_seq
Definition: sctp_structs.h:927
struct sctp_scoping scope
uint32_t heart_beat_delay
struct sctp_nets * primary_destination
Definition: sctp_structs.h:860
unsigned int overall_error_count
uint32_t init_seq_number
Definition: sctp_structs.h:933
uint32_t marked_retrans
struct timeval discontinuity_time
uint32_t peer_vtag
Definition: sctp_structs.h:907
union sctp_sockstore address
Definition: sctp_pcb.h:105
struct sctp_ifalist ifalist
Definition: sctp_pcb.h:75
uint32_t total_sends
Definition: sctp_pcb.h:423
struct inpcb inp
Definition: sctp_pcb.h:356
uint32_t sctp_flags
Definition: sctp_pcb.h:381
struct socket * sctp_socket
Definition: sctp_pcb.h:379
uint32_t sctp_frag_point
Definition: sctp_pcb.h:392
union sctp_inpcb::@33 ip_inp
struct sctpasochead sctp_asoc_list
Definition: sctp_pcb.h:388
uint64_t sctp_features
Definition: sctp_pcb.h:380
uint32_t total_nospaces
Definition: sctp_pcb.h:426
uint32_t total_recvs
Definition: sctp_pcb.h:424
struct sctpladdr sctp_addr_list
Definition: sctp_pcb.h:371
uint32_t def_vrf_id
Definition: sctp_pcb.h:421
struct timeval start_time
Definition: sctp_pcb.h:122
struct sctp_ifa * ifa
Definition: sctp_pcb.h:118
union sctp_sockstore _l_addr
Definition: sctp_structs.h:193
uint16_t failure_threshold
Definition: sctp_structs.h:336
uint32_t marked_retrans
Definition: sctp_structs.h:328
uint32_t flight_size
Definition: sctp_structs.h:289
uint32_t RTO
Definition: sctp_structs.h:271
uint32_t ssthresh
Definition: sctp_structs.h:262
uint32_t heart_beat_delay
Definition: sctp_structs.h:331
uint16_t port
Definition: sctp_structs.h:342
uint16_t error_count
Definition: sctp_structs.h:340
struct timeval start_time
Definition: sctp_structs.h:327
uint32_t mtu
Definition: sctp_structs.h:261
uint16_t dest_state
Definition: sctp_structs.h:334
struct sctp_net_route ro
Definition: sctp_structs.h:258
uint64_t rtt
Definition: sctp_structs.h:270
uint32_t cwnd
Definition: sctp_structs.h:290
uint8_t site_scope
Definition: sctp_structs.h:651
uint8_t ipv6_addr_legal
Definition: sctp_structs.h:647
uint8_t ipv4_addr_legal
Definition: sctp_structs.h:646
uint8_t ipv4_local_scope
Definition: sctp_structs.h:649
uint8_t loopback_scope
Definition: sctp_structs.h:648
uint8_t local_scope
Definition: sctp_structs.h:650
uint32_t total_recvs
Definition: sctp_pcb.h:457
uint32_t total_sends
Definition: sctp_pcb.h:456
struct sctp_association asoc
Definition: sctp_pcb.h:449
uint16_t rport
Definition: sctp_pcb.h:459
uint32_t tv_usec
Definition: sctp_uio.h:939
uint32_t tv_sec
Definition: sctp_uio.h:938
struct sctp_ifnlist ifnlist
Definition: sctp_pcb.h:65
uint32_t sctps_pdrpmark
Definition: sctp_uio.h:1025
uint32_t sctps_slowpath_sack
Definition: sctp_uio.h:1096
uint32_t sctps_shutdown
Definition: sctp_uio.h:952
uint32_t sctps_fastretransinrtt
Definition: sctp_uio.h:1069
uint32_t sctps_datadropchklmt
Definition: sctp_uio.h:1085
uint32_t sctps_protocol_drains_done
Definition: sctp_uio.h:1106
uint32_t sctps_timoinpkill
Definition: sctp_uio.h:1059
uint32_t sctps_pdrpmbct
Definition: sctp_uio.h:1013
uint32_t sctps_collisionestab
Definition: sctp_uio.h:949
uint32_t sctps_timoinit
Definition: sctp_uio.h:1033
uint32_t sctps_sends_with_flags
Definition: sctp_uio.h:1098
uint32_t sctps_datadroprwnd
Definition: sctp_uio.h:1087
uint32_t sctps_lowlevelerrusr
Definition: sctp_uio.h:1082
uint32_t sctps_protocol_drain_calls
Definition: sctp_uio.h:1104
uint32_t sctps_timowindowprobe
Definition: sctp_uio.h:1031
uint32_t sctps_recvexpress
Definition: sctp_uio.h:983
uint32_t sctps_recvheartbeat
Definition: sctp_uio.h:973
uint32_t sctps_recvheartbeatack
Definition: sctp_uio.h:974
uint32_t sctps_recvauthfailed
Definition: sctp_uio.h:982
uint32_t sctps_recvdata
Definition: sctp_uio.h:971
uint32_t sctps_inpackets
Definition: sctp_uio.h:964
uint32_t sctps_sendecne
Definition: sctp_uio.h:1003
uint32_t sctps_timodelprim
Definition: sctp_uio.h:1054
uint32_t sctps_inorderchunks
Definition: sctp_uio.h:959
uint32_t sctps_sendhwcrc
Definition: sctp_uio.h:1008
uint32_t sctps_naglequeued
Definition: sctp_uio.h:1073
uint32_t sctps_timoshutdownguard
Definition: sctp_uio.h:1046
uint32_t sctps_primary_randry
Definition: sctp_uio.h:1093
uint32_t sctps_recvexpressm
Definition: sctp_uio.h:985
uint32_t sctps_timocookie
Definition: sctp_uio.h:1039
uint32_t sctps_recvdatagrams
Definition: sctp_uio.h:968
uint32_t sctps_recvpktwithdata
Definition: sctp_uio.h:969
uint32_t sctps_sendfastretrans
Definition: sctp_uio.h:996
uint32_t sctps_pdrpmbda
Definition: sctp_uio.h:1012
uint32_t sctps_outunorderchunks
Definition: sctp_uio.h:957
uint32_t sctps_timoshutdownack
Definition: sctp_uio.h:1044
uint32_t sctps_checksumerrors
Definition: sctp_uio.h:954
uint32_t sctps_windowprobed
Definition: sctp_uio.h:1079
uint32_t sctps_restartestab
Definition: sctp_uio.h:948
uint32_t sctps_recvecne
Definition: sctp_uio.h:975
uint32_t sctps_senddata
Definition: sctp_uio.h:993
uint32_t sctps_cached_strmoq
Definition: sctp_uio.h:1111
uint32_t sctps_fragusrmsgs
Definition: sctp_uio.h:961
uint32_t sctps_naglesent
Definition: sctp_uio.h:1072
uint32_t sctps_pdrpfmbox
Definition: sctp_uio.h:1010
uint32_t sctps_pdrptsnnf
Definition: sctp_uio.h:1020
uint32_t sctps_recvauthmissing
Definition: sctp_uio.h:977
uint32_t sctps_timoheartbeat
Definition: sctp_uio.h:1037
uint32_t sctps_ecnereducedcwnd
Definition: sctp_uio.h:1089
uint32_t sctps_pdrpbwrpt
Definition: sctp_uio.h:1014
uint32_t sctps_vtagbogus
Definition: sctp_uio.h:1092
uint32_t sctps_markedretrans
Definition: sctp_uio.h:1071
uint32_t sctps_timoasconf
Definition: sctp_uio.h:1052
uint32_t sctps_sendpackets
Definition: sctp_uio.h:991
uint32_t sctps_timosecret
Definition: sctp_uio.h:1041
uint32_t sctps_aborted
Definition: sctp_uio.h:951
uint32_t sctps_sendheartbeat
Definition: sctp_uio.h:1002
uint32_t sctps_outoftheblue
Definition: sctp_uio.h:953
uint32_t sctps_pdrppdbrk
Definition: sctp_uio.h:1018
uint32_t sctps_timoautoclose
Definition: sctp_uio.h:1056
uint32_t sctps_send_burst_avoid
Definition: sctp_uio.h:1114
uint32_t sctps_wu_sacks_sent
Definition: sctp_uio.h:1097
uint32_t sctps_timoshutdown
Definition: sctp_uio.h:1035
uint32_t sctps_activeestab
Definition: sctp_uio.h:947
uint32_t sctps_recvsacks
Definition: sctp_uio.h:970
uint32_t sctps_inunorderchunks
Definition: sctp_uio.h:960
uint32_t sctps_timoassockill
Definition: sctp_uio.h:1058
uint32_t sctps_badvtag
Definition: sctp_uio.h:1066
uint32_t sctps_pdrpdizrw
Definition: sctp_uio.h:1023
uint32_t sctps_outcontrolchunks
Definition: sctp_uio.h:955
uint32_t sctps_recvpackets
Definition: sctp_uio.h:967
uint32_t sctps_sends_with_eof
Definition: sctp_uio.h:1101
uint32_t sctps_sendsacks
Definition: sctp_uio.h:992
uint32_t sctps_pdrpdnfnd
Definition: sctp_uio.h:1021
uint32_t sctps_timoearlyfr
Definition: sctp_uio.h:1050
uint32_t sctps_lowlevelerr
Definition: sctp_uio.h:1080
uint32_t sctps_timosack
Definition: sctp_uio.h:1034
uint32_t sctps_read_peeks
Definition: sctp_uio.h:1108
uint32_t sctps_timoiterator
Definition: sctp_uio.h:1028
uint32_t sctps_pdrpbadd
Definition: sctp_uio.h:1024
uint32_t sctps_incontrolchunks
Definition: sctp_uio.h:958
uint32_t sctps_outpackets
Definition: sctp_uio.h:963
uint32_t sctps_recvdupdata
Definition: sctp_uio.h:972
uint32_t sctps_senderrors
Definition: sctp_uio.h:1005
uint32_t sctps_timostrmrst
Definition: sctp_uio.h:1048
uint32_t sctps_outorderchunks
Definition: sctp_uio.h:956
uint32_t sctps_maxburstqueued
Definition: sctp_uio.h:1074
uint32_t sctps_recvauth
Definition: sctp_uio.h:976
uint32_t sctps_left_abandon
Definition: sctp_uio.h:1112
uint32_t sctps_pdrpnedat
Definition: sctp_uio.h:1017
uint32_t sctps_badsid
Definition: sctp_uio.h:1067
uint32_t sctps_hdrops
Definition: sctp_uio.h:1063
uint32_t sctps_pdrpcrupt
Definition: sctp_uio.h:1016
uint32_t sctps_cmt_randry
Definition: sctp_uio.h:1095
uint32_t sctps_noport
Definition: sctp_uio.h:1065
uint32_t sctps_sends_with_abort
Definition: sctp_uio.h:1102
uint32_t sctps_nomem
Definition: sctp_uio.h:1068
uint32_t sctps_sendretransdata
Definition: sctp_uio.h:994
uint32_t sctps_sendmultfastretrans
Definition: sctp_uio.h:998
uint32_t sctps_recvivalhmacid
Definition: sctp_uio.h:978
uint32_t sctps_ifnomemqueued
Definition: sctp_uio.h:1075
struct sctp_timeval sctps_discontinuitytime
Definition: sctp_uio.h:943
uint32_t sctps_passiveestab
Definition: sctp_uio.h:950
uint32_t sctps_recvhwcrc
Definition: sctp_uio.h:988
uint32_t sctps_sendswcrc
Definition: sctp_uio.h:1007
uint32_t sctps_reasmusrmsgs
Definition: sctp_uio.h:962
uint32_t sctps_sendauth
Definition: sctp_uio.h:1004
uint32_t sctps_fwdtsn_map_over
Definition: sctp_uio.h:1117
uint32_t sctps_badsum
Definition: sctp_uio.h:1064
uint32_t sctps_recvswcrc
Definition: sctp_uio.h:987
uint32_t sctps_vtagexpress
Definition: sctp_uio.h:1091
uint32_t sctps_recvivalkeyid
Definition: sctp_uio.h:980
uint32_t sctps_currestab
Definition: sctp_uio.h:946
uint32_t sctps_timodata
Definition: sctp_uio.h:1030
uint32_t sctps_sends_with_unord
Definition: sctp_uio.h:1100
uint32_t sctps_send_cwnd_avoid
Definition: sctp_uio.h:1115
uint32_t sctps_timopathmtu
Definition: sctp_uio.h:1043
uint32_t sctps_cached_chk
Definition: sctp_uio.h:1110
uint32_t sctps_pdrpfehos
Definition: sctp_uio.h:1011
uint32_t sctps_pdrpdiwnp
Definition: sctp_uio.h:1022
Definition: in.h:97
struct in_addr sin_addr
Definition: in.h:101
uint32_t last
Definition: sctp_uio.h:1158
uint32_t total_recvs
Definition: sctp_uio.h:1162
uint32_t total_nospaces
Definition: sctp_uio.h:1163
uint32_t maxqlen
Definition: sctp_uio.h:1171
uint16_t local_port
Definition: sctp_uio.h:1165
uint32_t total_sends
Definition: sctp_uio.h:1161
uint64_t features
Definition: sctp_uio.h:1160
uint32_t fragmentation_point
Definition: sctp_uio.h:1164
uint32_t flags
Definition: sctp_uio.h:1159
uint16_t qlen_old
Definition: sctp_uio.h:1166
kvaddr_t socket
Definition: sctp_uio.h:1169
uint16_t maxqlen_old
Definition: sctp_uio.h:1167
uint32_t qlen
Definition: sctp_uio.h:1170
uint32_t last
Definition: sctp_uio.h:1208
uint32_t rtx
Definition: sctp_uio.h:1218
uint32_t max_path_rtx
Definition: sctp_uio.h:1217
uint32_t rto
Definition: sctp_uio.h:1216
uint32_t cwnd
Definition: sctp_uio.h:1220
struct sctp_timeval start_time
Definition: sctp_uio.h:1227
uint8_t confirmed
Definition: sctp_uio.h:1224
uint32_t heartbeat_interval
Definition: sctp_uio.h:1229
uint8_t heartbeat_enabled
Definition: sctp_uio.h:1225
uint32_t error_counter
Definition: sctp_uio.h:1219
uint32_t ssthresh
Definition: sctp_uio.h:1230
uint8_t potentially_failed
Definition: sctp_uio.h:1226
uint32_t last
Definition: sctp_uio.h:1215
union sctp_sockstore address
Definition: sctp_uio.h:1214
uint32_t flight_size
Definition: sctp_uio.h:1221
uint32_t rtt
Definition: sctp_uio.h:1228
uint16_t encaps_port
Definition: sctp_uio.h:1231
uint16_t state
Definition: sctp_uio.h:1232
uint8_t active
Definition: sctp_uio.h:1223
uint32_t mtu
Definition: sctp_uio.h:1222
uint32_t last
Definition: sctp_uio.h:1177
uint32_t primary_process
Definition: sctp_uio.h:1183
uint32_t heartbeat_interval
Definition: sctp_uio.h:1178
union sctp_sockstore primary_addr
Definition: sctp_uio.h:1176
uint32_t out_streams
Definition: sctp_uio.h:1181
uint32_t local_tag
Definition: sctp_uio.h:1189
uint32_t remote_tag
Definition: sctp_uio.h:1190
uint32_t cumulative_tsn_ack
Definition: sctp_uio.h:1194
uint32_t T1_expireries
Definition: sctp_uio.h:1184
uint16_t local_port
Definition: sctp_uio.h:1197
uint32_t in_streams
Definition: sctp_uio.h:1180
uint32_t total_sends
Definition: sctp_uio.h:1187
sctp_assoc_t assoc_id
Definition: sctp_uio.h:1202
uint32_t mtu
Definition: sctp_uio.h:1195
struct sctp_timeval discontinuity_time
Definition: sctp_uio.h:1200
uint32_t max_nr_retrans
Definition: sctp_uio.h:1182
uint32_t peers_rwnd
Definition: sctp_uio.h:1201
uint32_t highest_tsn
Definition: sctp_uio.h:1192
uint32_t refcnt
Definition: sctp_uio.h:1196
struct sctp_timeval start_time
Definition: sctp_uio.h:1199
uint32_t T2_expireries
Definition: sctp_uio.h:1185
uint32_t retransmitted_tsns
Definition: sctp_uio.h:1186
uint32_t state
Definition: sctp_uio.h:1179
uint32_t total_recvs
Definition: sctp_uio.h:1188
uint32_t cumulative_tsn
Definition: sctp_uio.h:1193
uint16_t remote_port
Definition: sctp_uio.h:1198
uint32_t initial_tsn
Definition: sctp_uio.h:1191
struct sockaddr_in6 sin6
Definition: sctp_uio.h:629
struct sockaddr sa
Definition: sctp_uio.h:630
struct sockaddr_in sin
Definition: sctp_uio.h:628