Lines Matching refs:sctp
64 sctp_get_status(sctp_t *sctp, void *ptr) in sctp_get_status() argument
73 conn_t *connp = sctp->sctp_connp; in sctp_get_status()
75 sstat->sstat_state = sctp->sctp_state; in sctp_get_status()
76 sstat->sstat_rwnd = sctp->sctp_frwnd; in sctp_get_status()
79 if (!sctp->sctp_primary) { in sctp_get_status()
83 fp = sctp->sctp_primary; in sctp_get_status()
90 sp->spinfo_mtu = sctp->sctp_hdr_len; in sctp_get_status()
96 sp->spinfo_mtu = sctp->sctp_hdr6_len; in sctp_get_status()
108 sstat->sstat_instrms = sctp->sctp_num_istr; in sctp_get_status()
109 sstat->sstat_outstrms = sctp->sctp_num_ostr; in sctp_get_status()
110 sstat->sstat_fragmentation_point = sctp->sctp_mss - in sctp_get_status()
114 for (meta = sctp->sctp_xmit_head; meta; meta = meta->b_next) { in sctp_get_status()
129 if (sctp->sctp_instr != NULL) { in sctp_get_status()
130 for (i = 0; i < sctp->sctp_num_istr; i++) { in sctp_get_status()
131 for (meta = sctp->sctp_instr[i].istr_reass; in sctp_get_status()
142 for (meta = sctp->sctp_uo_frags; meta != NULL; meta = meta->b_next) in sctp_get_status()
152 sctp_get_paddrinfo(sctp_t *sctp, void *ptr, socklen_t *optlen) in sctp_get_paddrinfo() argument
173 if ((fp = sctp_lookup_faddr(sctp, &faddr)) == NULL) in sctp_get_paddrinfo()
191 sctp_get_rtoinfo(sctp_t *sctp, void *ptr) in sctp_get_rtoinfo() argument
195 srto->srto_initial = TICK_TO_MSEC(sctp->sctp_rto_initial); in sctp_get_rtoinfo()
196 srto->srto_max = TICK_TO_MSEC(sctp->sctp_rto_max); in sctp_get_rtoinfo()
197 srto->srto_min = TICK_TO_MSEC(sctp->sctp_rto_min); in sctp_get_rtoinfo()
203 sctp_set_rtoinfo(sctp_t *sctp, const void *invalp) in sctp_set_rtoinfo() argument
207 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_set_rtoinfo()
208 conn_t *connp = sctp->sctp_connp; in sctp_set_rtoinfo()
235 new_min = (srto->srto_min != 0) ? srto->srto_min : sctp->sctp_rto_min; in sctp_set_rtoinfo()
236 new_max = (srto->srto_max != 0) ? srto->srto_max : sctp->sctp_rto_max; in sctp_set_rtoinfo()
242 sctp->sctp_rto_initial = MSEC_TO_TICK(srto->srto_initial); in sctp_set_rtoinfo()
247 sctp->sctp_rto_max = MAX(MSEC_TO_TICK(srto->srto_max), 1); in sctp_set_rtoinfo()
250 sctp->sctp_rto_min = MSEC_TO_TICK(srto->srto_min); in sctp_set_rtoinfo()
260 sctp_get_assocparams(sctp_t *sctp, void *ptr) in sctp_get_assocparams() argument
266 sap->sasoc_asocmaxrxt = sctp->sctp_pa_max_rxt; in sctp_get_assocparams()
271 for (i = 0, fp = sctp->sctp_faddrs; fp != NULL; fp = fp->sf_next) { in sctp_get_assocparams()
275 sap->sasoc_peer_rwnd = sctp->sctp_frwnd; in sctp_get_assocparams()
276 sap->sasoc_local_rwnd = sctp->sctp_rwnd; in sctp_get_assocparams()
277 sap->sasoc_cookie_life = TICK_TO_MSEC(sctp->sctp_cookie_lifetime); in sctp_get_assocparams()
283 sctp_set_assocparams(sctp_t *sctp, const void *invalp) in sctp_set_assocparams() argument
288 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_set_assocparams()
291 if (sctp->sctp_faddrs) { in sctp_set_assocparams()
296 for (fp = sctp->sctp_faddrs; fp; fp = fp->sf_next) { in sctp_set_assocparams()
318 sctp->sctp_pa_max_rxt = sap->sasoc_asocmaxrxt; in sctp_set_assocparams()
321 sctp->sctp_cookie_lifetime = MSEC_TO_TICK( in sctp_set_assocparams()
331 sctp_get_initmsg(sctp_t *sctp, void *ptr) in sctp_get_initmsg() argument
335 si->sinit_num_ostreams = sctp->sctp_num_ostr; in sctp_get_initmsg()
336 si->sinit_max_instreams = sctp->sctp_num_istr; in sctp_get_initmsg()
337 si->sinit_max_attempts = sctp->sctp_max_init_rxt; in sctp_get_initmsg()
338 si->sinit_max_init_timeo = TICK_TO_MSEC(sctp->sctp_rto_max_init); in sctp_get_initmsg()
344 sctp_set_initmsg(sctp_t *sctp, const void *invalp, uint_t inlen) in sctp_set_initmsg() argument
347 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_set_initmsg()
348 conn_t *connp = sctp->sctp_connp; in sctp_set_initmsg()
350 if (sctp->sctp_state > SCTPS_LISTEN) { in sctp_set_initmsg()
382 sctp->sctp_num_ostr = si->sinit_num_ostreams; in sctp_set_initmsg()
385 sctp->sctp_num_istr = si->sinit_max_instreams; in sctp_set_initmsg()
388 sctp->sctp_max_init_rxt = si->sinit_max_attempts; in sctp_set_initmsg()
391 sctp->sctp_rto_max_init = in sctp_set_initmsg()
401 sctp_find_peer_fp(sctp_t *sctp, const struct sockaddr_storage *ss, in sctp_find_peer_fp() argument
422 *fpp = sctp_lookup_faddr(sctp, &addr); in sctp_find_peer_fp()
431 sctp_get_peer_addr_params(sctp_t *sctp, void *ptr) in sctp_get_peer_addr_params() argument
437 retval = sctp_find_peer_fp(sctp, &spp->spp_address, &fp); in sctp_get_peer_addr_params()
445 spp->spp_hbinterval = TICK_TO_MSEC(sctp->sctp_hb_interval); in sctp_get_peer_addr_params()
446 spp->spp_pathmaxrxt = sctp->sctp_pp_max_rxt; in sctp_get_peer_addr_params()
452 sctp_set_peer_addr_params(sctp_t *sctp, const void *invalp) in sctp_set_peer_addr_params() argument
459 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_set_peer_addr_params()
461 retval = sctp_find_peer_fp(sctp, &spp->spp_address, &fp); in sctp_set_peer_addr_params()
476 if (spp->spp_pathmaxrxt && sctp->sctp_faddrs) { in sctp_set_peer_addr_params()
477 for (fp2 = sctp->sctp_faddrs; fp2; fp2 = fp2->sf_next) { in sctp_set_peer_addr_params()
484 if (sctp->sctp_pa_max_rxt > sum) { in sctp_set_peer_addr_params()
496 sctp_send_heartbeat(sctp, fp); in sctp_set_peer_addr_params()
505 sctp_heartbeat_timer(sctp); in sctp_set_peer_addr_params()
511 for (fp2 = sctp->sctp_faddrs; fp2 != NULL; fp2 = fp2->sf_next) { in sctp_set_peer_addr_params()
517 sctp_send_heartbeat(sctp, fp2); in sctp_set_peer_addr_params()
528 sctp->sctp_hb_interval = MSEC_TO_TICK( in sctp_set_peer_addr_params()
531 sctp_timer(sctp, sctp->sctp_heartbeat_mp, in sctp_set_peer_addr_params()
532 sctp->sctp_hb_interval); in sctp_set_peer_addr_params()
535 sctp->sctp_pp_max_rxt = spp->spp_pathmaxrxt; in sctp_set_peer_addr_params()
545 sctp_get_def_send_params(sctp_t *sctp, void *ptr) in sctp_get_def_send_params() argument
549 sinfo->sinfo_stream = sctp->sctp_def_stream; in sctp_get_def_send_params()
551 sinfo->sinfo_flags = sctp->sctp_def_flags; in sctp_get_def_send_params()
552 sinfo->sinfo_ppid = sctp->sctp_def_ppid; in sctp_get_def_send_params()
553 sinfo->sinfo_context = sctp->sctp_def_context; in sctp_get_def_send_params()
554 sinfo->sinfo_timetolive = sctp->sctp_def_timetolive; in sctp_get_def_send_params()
562 sctp_set_def_send_params(sctp_t *sctp, const void *invalp) in sctp_set_def_send_params() argument
566 if (sinfo->sinfo_stream >= sctp->sctp_num_ostr) { in sctp_set_def_send_params()
570 sctp->sctp_def_stream = sinfo->sinfo_stream; in sctp_set_def_send_params()
571 sctp->sctp_def_flags = sinfo->sinfo_flags; in sctp_set_def_send_params()
572 sctp->sctp_def_ppid = sinfo->sinfo_ppid; in sctp_set_def_send_params()
573 sctp->sctp_def_context = sinfo->sinfo_context; in sctp_set_def_send_params()
574 sctp->sctp_def_timetolive = sinfo->sinfo_timetolive; in sctp_set_def_send_params()
580 sctp_set_prim(sctp_t *sctp, const void *invalp) in sctp_set_prim() argument
586 retval = sctp_find_peer_fp(sctp, &pp->sspp_addr, &fp); in sctp_set_prim()
592 if (fp == sctp->sctp_primary) in sctp_set_prim()
594 sctp->sctp_primary = fp; in sctp_set_prim()
597 if (fp->sf_state != SCTP_FADDRS_ALIVE || fp == sctp->sctp_current) { in sctp_set_prim()
600 sctp_set_faddr_current(sctp, fp); in sctp_set_prim()
789 sctp_get_opt(sctp_t *sctp, int level, int name, void *ptr, socklen_t *optlen) in sctp_get_opt() argument
794 conn_t *connp = sctp->sctp_connp; in sctp_get_opt()
804 RUN_SCTP(sctp); in sctp_get_opt()
807 WAKE_SCTP(sctp); in sctp_get_opt()
818 WAKE_SCTP(sctp); in sctp_get_opt()
829 *optlen = sctp_get_rtoinfo(sctp, ptr); in sctp_get_opt()
832 *optlen = sctp_get_assocparams(sctp, ptr); in sctp_get_opt()
835 *optlen = sctp_get_initmsg(sctp, ptr); in sctp_get_opt()
838 *i1 = sctp->sctp_ndelay; in sctp_get_opt()
841 *i1 = TICK_TO_SEC(sctp->sctp_autoclose); in sctp_get_opt()
845 sctp->sctp_tx_adaptation_code; in sctp_get_opt()
848 *optlen = sctp_get_peer_addr_params(sctp, ptr); in sctp_get_opt()
851 *optlen = sctp_get_def_send_params(sctp, ptr); in sctp_get_opt()
858 ONOFF(sctp->sctp_recvsndrcvinfo); in sctp_get_opt()
860 ONOFF(sctp->sctp_recvassocevnt); in sctp_get_opt()
862 ONOFF(sctp->sctp_recvpathevnt); in sctp_get_opt()
864 ONOFF(sctp->sctp_recvsendfailevnt); in sctp_get_opt()
866 ONOFF(sctp->sctp_recvpeererr); in sctp_get_opt()
868 ONOFF(sctp->sctp_recvshutdownevnt); in sctp_get_opt()
870 ONOFF(sctp->sctp_recvpdevnt); in sctp_get_opt()
872 ONOFF(sctp->sctp_recvalevnt); in sctp_get_opt()
877 *optlen = sctp_get_status(sctp, ptr); in sctp_get_opt()
880 retval = sctp_get_paddrinfo(sctp, ptr, optlen); in sctp_get_opt()
883 *(int32_t *)ptr = sctp->sctp_nsaddrs; in sctp_get_opt()
894 retval = sctp_getmyaddrs(sctp, ptr, &addr_cnt); in sctp_get_opt()
903 for (i = 0, fp = sctp->sctp_faddrs; fp != NULL; in sctp_get_opt()
918 retval = sctp_getpeeraddrs(sctp, ptr, &addr_cnt); in sctp_get_opt()
924 *i1 = sctp->sctp_prsctp_aware ? 1 : 0; in sctp_get_opt()
938 sas->sas_gapcnt = sctp->sctp_gapcnt; in sctp_get_opt()
939 sas->sas_outseqtsns = sctp->sctp_outseqtsns; in sctp_get_opt()
940 sas->sas_osacks = sctp->sctp_osacks; in sctp_get_opt()
941 sas->sas_isacks = sctp->sctp_isacks; in sctp_get_opt()
942 sas->sas_idupchunks = sctp->sctp_idupchunks; in sctp_get_opt()
943 sas->sas_rtxchunks = sctp->sctp_rxtchunks + in sctp_get_opt()
944 sctp->sctp_cum_rxtchunks; in sctp_get_opt()
945 sas->sas_octrlchunks = sctp->sctp_obchunks + in sctp_get_opt()
946 sctp->sctp_cum_obchunks; in sctp_get_opt()
947 sas->sas_ictrlchunks = sctp->sctp_ibchunks + in sctp_get_opt()
948 sctp->sctp_cum_ibchunks; in sctp_get_opt()
949 sas->sas_oodchunks = sctp->sctp_odchunks + in sctp_get_opt()
950 sctp->sctp_cum_odchunks; in sctp_get_opt()
951 sas->sas_iodchunks = sctp->sctp_idchunks + in sctp_get_opt()
952 sctp->sctp_cum_idchunks; in sctp_get_opt()
953 sas->sas_ouodchunks = sctp->sctp_oudchunks + in sctp_get_opt()
954 sctp->sctp_cum_oudchunks; in sctp_get_opt()
955 sas->sas_iuodchunks = sctp->sctp_iudchunks + in sctp_get_opt()
956 sctp->sctp_cum_iudchunks; in sctp_get_opt()
962 if (sctp->sctp_maxrto == 0) { in sctp_get_opt()
964 sas->sas_maxrto = sctp->sctp_prev_maxrto; in sctp_get_opt()
967 sas->sas_maxrto = sctp->sctp_maxrto; in sctp_get_opt()
970 sctp->sctp_prev_maxrto = sas->sas_maxrto; in sctp_get_opt()
973 sctp->sctp_maxrto = 0; in sctp_get_opt()
986 WAKE_SCTP(sctp); in sctp_get_opt()
1018 WAKE_SCTP(sctp); in sctp_get_opt()
1029 WAKE_SCTP(sctp); in sctp_get_opt()
1037 sctp_set_opt(sctp_t *sctp, int level, int name, const void *invalp, in sctp_set_opt() argument
1043 conn_t *connp = sctp->sctp_connp; in sctp_set_opt()
1044 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_set_opt()
1059 RUN_SCTP(sctp); in sctp_set_opt()
1062 WAKE_SCTP(sctp); in sctp_set_opt()
1116 sctp->sctp_mss); in sctp_set_opt()
1121 connp->conn_rcvbuf = sctp->sctp_rwnd = *i1; in sctp_set_opt()
1122 sctp->sctp_arwnd = sctp->sctp_rwnd; in sctp_set_opt()
1123 sctp->sctp_pd_point = sctp->sctp_rwnd; in sctp_set_opt()
1127 sctp->sctp_ulp_prop(sctp->sctp_ulpd, &sopp); in sctp_set_opt()
1136 if (sctp->sctp_state >= SCTPS_BOUND) { in sctp_set_opt()
1142 if (sctp->sctp_state >= SCTPS_BOUND) { in sctp_set_opt()
1153 retval = sctp_set_rtoinfo(sctp, invalp); in sctp_set_opt()
1156 retval = sctp_set_assocparams(sctp, invalp); in sctp_set_opt()
1159 retval = sctp_set_initmsg(sctp, invalp, inlen); in sctp_set_opt()
1162 sctp->sctp_ndelay = ONOFF(*i1); in sctp_set_opt()
1170 sctp->sctp_autoclose = SEC_TO_TICK(*i1); in sctp_set_opt()
1171 sctp_heartbeat_timer(sctp); in sctp_set_opt()
1174 retval = sctp_set_peerprim(sctp, invalp); in sctp_set_opt()
1177 retval = sctp_set_prim(sctp, invalp); in sctp_set_opt()
1183 sctp->sctp_send_adaptation = 1; in sctp_set_opt()
1184 sctp->sctp_tx_adaptation_code = ssb->ssb_adaptation_ind; in sctp_set_opt()
1188 retval = sctp_set_peer_addr_params(sctp, invalp); in sctp_set_opt()
1191 retval = sctp_set_def_send_params(sctp, invalp); in sctp_set_opt()
1197 sctp->sctp_recvsndrcvinfo = in sctp_set_opt()
1199 sctp->sctp_recvassocevnt = in sctp_set_opt()
1201 sctp->sctp_recvpathevnt = in sctp_set_opt()
1203 sctp->sctp_recvsendfailevnt = in sctp_set_opt()
1205 sctp->sctp_recvpeererr = in sctp_set_opt()
1207 sctp->sctp_recvshutdownevnt = in sctp_set_opt()
1209 sctp->sctp_recvpdevnt = in sctp_set_opt()
1211 sctp->sctp_recvalevnt = in sctp_set_opt()
1221 if (sctp->sctp_state < SCTPS_BOUND) { in sctp_set_opt()
1232 retval = sctp_bind_add(sctp, invalp, addrcnt, in sctp_set_opt()
1235 retval = sctp_bind_del(sctp, invalp, addrcnt, in sctp_set_opt()
1246 sctp->sctp_ulpd = us->sus_handle; in sctp_set_opt()
1247 sctp->sctp_upcalls = us->sus_upcalls; in sctp_set_opt()
1251 sctp->sctp_prsctp_aware = onoff; in sctp_set_opt()
1273 if (sctp->sctp_state >= SCTPS_LISTEN) { in sctp_set_opt()
1289 sctp->sctp_recvifindex = 0; in sctp_set_opt()
1293 sctp->sctp_recvtclass = 0xffffffffU; in sctp_set_opt()
1297 sctp->sctp_recvhops = 0xffffffffU; in sctp_set_opt()
1304 if (sctp->sctp_state >= SCTPS_LISTEN) { in sctp_set_opt()
1314 if (sctp->sctp_state >= SCTPS_BOUND) { in sctp_set_opt()
1334 for (fp = sctp->sctp_faddrs; fp != NULL; fp = fp->sf_next) in sctp_set_opt()
1335 sctp_get_dest(sctp, fp); in sctp_set_opt()
1338 retval = sctp_build_hdrs(sctp, KM_NOSLEEP); in sctp_set_opt()
1345 if (sctp->sctp_current != NULL) { in sctp_set_opt()
1350 sctp_set_ulp_prop(sctp); in sctp_set_opt()
1354 WAKE_SCTP(sctp); in sctp_set_opt()
1364 sctp_getsockname(sctp_t *sctp, struct sockaddr *addr, socklen_t *addrlen) in sctp_getsockname() argument
1370 conn_t *connp = sctp->sctp_connp; in sctp_getsockname()
1372 ASSERT(sctp != NULL); in sctp_getsockname()
1374 RUN_SCTP(sctp); in sctp_getsockname()
1379 if ((sctp->sctp_state <= SCTPS_LISTEN) && in sctp_getsockname()
1380 sctp->sctp_bound_to_all) { in sctp_getsockname()
1384 err = sctp_getmyaddrs(sctp, sin4, &addrcnt); in sctp_getsockname()
1394 if ((sctp->sctp_state <= SCTPS_LISTEN) && in sctp_getsockname()
1395 sctp->sctp_bound_to_all) { in sctp_getsockname()
1399 err = sctp_getmyaddrs(sctp, sin6, &addrcnt); in sctp_getsockname()
1409 WAKE_SCTP(sctp); in sctp_getsockname()
1419 sctp_getpeername(sctp_t *sctp, struct sockaddr *addr, socklen_t *addrlen) in sctp_getpeername() argument
1424 conn_t *connp = sctp->sctp_connp; in sctp_getpeername()
1426 ASSERT(sctp != NULL); in sctp_getpeername()
1428 RUN_SCTP(sctp); in sctp_getpeername()
1432 err = sctp_getpeeraddrs(sctp, addr, &addrcnt); in sctp_getpeername()
1441 err = sctp_getpeeraddrs(sctp, sin6, &addrcnt); in sctp_getpeername()
1449 WAKE_SCTP(sctp); in sctp_getpeername()
1459 sctp_getpeeraddrs(sctp_t *sctp, void *paddrs, int *addrcnt) in sctp_getpeeraddrs() argument
1466 sctp_faddr_t *fp = sctp->sctp_faddrs; in sctp_getpeeraddrs()
1468 conn_t *connp = sctp->sctp_connp; in sctp_getpeeraddrs()
1470 ASSERT(sctp != NULL); in sctp_getpeeraddrs()
1472 if (sctp->sctp_faddrs == NULL) in sctp_getpeeraddrs()
1480 addr = sctp->sctp_primary->sf_faddr; in sctp_getpeeraddrs()
1496 sctp->sctp_primary != NULL && in sctp_getpeeraddrs()
1497 (sctp->sctp_primary->sf_ixa->ixa_flags & in sctp_getpeeraddrs()
1500 sctp->sctp_primary->sf_ixa->ixa_scopeid; in sctp_getpeeraddrs()