Lines Matching defs:sctp

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