Lines Matching refs:sctp
49 sctp_send_shutdown(sctp_t *sctp, int rexmit) in sctp_send_shutdown() argument
56 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_send_shutdown()
58 if (sctp->sctp_state != SCTPS_ESTABLISHED && in sctp_send_shutdown()
59 sctp->sctp_state != SCTPS_SHUTDOWN_PENDING && in sctp_send_shutdown()
60 sctp->sctp_state != SCTPS_SHUTDOWN_SENT) { in sctp_send_shutdown()
64 if (sctp->sctp_state == SCTPS_ESTABLISHED) { in sctp_send_shutdown()
65 sctp->sctp_state = SCTPS_SHUTDOWN_PENDING; in sctp_send_shutdown()
77 sctp->sctp_out_time = ddi_get_lbolt64(); in sctp_send_shutdown()
83 if (sctp->sctp_xmit_head != NULL || sctp->sctp_xmit_unsent != NULL) { in sctp_send_shutdown()
89 fp = sctp->sctp_current; in sctp_send_shutdown()
91 fp = sctp_rotate_faddr(sctp, sctp->sctp_shutdown_faddr); in sctp_send_shutdown()
94 sctp->sctp_shutdown_faddr = fp; in sctp_send_shutdown()
97 if (sctp->sctp_state > SCTPS_SHUTDOWN_PENDING && in sctp_send_shutdown()
98 (sendmp = sctp_make_sack(sctp, fp, NULL)) != NULL) { in sctp_send_shutdown()
110 sendmp = sctp_make_mp(sctp, fp, in sctp_send_shutdown()
120 sctp->sctp_lastacked = sctp->sctp_ftsn - 1; in sctp_send_shutdown()
128 *ctsn = htonl(sctp->sctp_lastacked); in sctp_send_shutdown()
132 BUMP_LOCAL(sctp->sctp_obchunks); in sctp_send_shutdown()
135 sctp_set_iplen(sctp, sendmp, fp->sf_ixa); in sctp_send_shutdown()
137 BUMP_LOCAL(sctp->sctp_opkts); in sctp_send_shutdown()
140 sctp->sctp_state = SCTPS_SHUTDOWN_SENT; in sctp_send_shutdown()
141 SCTP_FADDR_TIMER_RESTART(sctp, sctp->sctp_current, in sctp_send_shutdown()
142 sctp->sctp_current->sf_rto); in sctp_send_shutdown()
146 sctp_shutdown_received(sctp_t *sctp, sctp_chunk_hdr_t *sch, boolean_t crwsd, in sctp_shutdown_received() argument
153 if (sctp->sctp_state != SCTPS_SHUTDOWN_ACK_SENT) in sctp_shutdown_received()
154 sctp->sctp_state = SCTPS_SHUTDOWN_RECEIVED; in sctp_shutdown_received()
160 if (!SEQ_LT(ntohl(*tsn), sctp->sctp_lastack_rxd)) in sctp_shutdown_received()
161 trysend = sctp_cumack(sctp, ntohl(*tsn), &samp); in sctp_shutdown_received()
165 if (!SCTP_IS_DETACHED(sctp) && !sctp->sctp_ulp_discon_done) { in sctp_shutdown_received()
166 sctp->sctp_ulp_opctl(sctp->sctp_ulpd, SOCK_OPCTL_SHUT_SEND, 0); in sctp_shutdown_received()
167 sctp->sctp_ulp_discon_done = B_TRUE; in sctp_shutdown_received()
175 if (sctp->sctp_xmit_head != NULL || sctp->sctp_xmit_unsent != NULL) in sctp_shutdown_received()
181 fp = sctp->sctp_current; in sctp_shutdown_received()
183 fp = sctp_rotate_faddr(sctp, sctp->sctp_shutdown_faddr); in sctp_shutdown_received()
186 sctp_send_shutdown_ack(sctp, fp, crwsd); in sctp_shutdown_received()
192 sctp_shutdown_complete(sctp_t *sctp) in sctp_shutdown_complete() argument
196 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_shutdown_complete()
198 scmp = sctp_make_mp(sctp, sctp->sctp_current, sizeof (*scch)); in sctp_shutdown_complete()
212 BUMP_LOCAL(sctp->sctp_obchunks); in sctp_shutdown_complete()
214 sctp_set_iplen(sctp, scmp, sctp->sctp_current->sf_ixa); in sctp_shutdown_complete()
215 (void) conn_ip_output(scmp, sctp->sctp_current->sf_ixa); in sctp_shutdown_complete()
216 BUMP_LOCAL(sctp->sctp_opkts); in sctp_shutdown_complete()
368 sctp_send_shutdown_ack(sctp_t *sctp, sctp_faddr_t *fp, boolean_t crwsd) in sctp_send_shutdown_ack() argument
372 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_send_shutdown_ack()
374 ASSERT(sctp->sctp_xmit_unacked == NULL); in sctp_send_shutdown_ack()
375 ASSERT(sctp->sctp_lastack_rxd == (sctp->sctp_ltsn - 1)); in sctp_send_shutdown_ack()
378 sctp->sctp_shutdown_faddr = fp; in sctp_send_shutdown_ack()
380 samp = sctp_make_mp(sctp, fp, sizeof (*sach)); in sctp_send_shutdown_ack()
399 errmp = sctp_make_err(sctp, SCTP_ERR_COOKIE_SHUT, NULL, 0); in sctp_send_shutdown_ack()
402 BUMP_LOCAL(sctp->sctp_obchunks); in sctp_send_shutdown_ack()
406 BUMP_LOCAL(sctp->sctp_obchunks); in sctp_send_shutdown_ack()
408 sctp_set_iplen(sctp, samp, fp->sf_ixa); in sctp_send_shutdown_ack()
410 BUMP_LOCAL(sctp->sctp_opkts); in sctp_send_shutdown_ack()
413 sctp->sctp_state = SCTPS_SHUTDOWN_ACK_SENT; in sctp_send_shutdown_ack()
414 SCTP_FADDR_TIMER_RESTART(sctp, fp, fp->sf_rto); in sctp_send_shutdown_ack()