| 1321 | } |
| 1322 | |
| 1323 | int |
| 1324 | sctp_shutdownack_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, |
| 1325 | struct sctp_nets *net) |
| 1326 | { |
| 1327 | struct sctp_nets *alt; |
| 1328 | |
| 1329 | /* first threshold management */ |
| 1330 | if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { |
| 1331 | /* Assoc is over */ |
| 1332 | return (1); |
| 1333 | } |
| 1334 | sctp_backoff_on_timeout(stcb, net, 1, 0, 0); |
| 1335 | /* second select an alternative */ |
| 1336 | alt = sctp_find_alternate_net(stcb, net, 0); |
| 1337 | |
| 1338 | /* third generate a shutdown into the queue for out net */ |
| 1339 | sctp_send_shutdown_ack(stcb, alt); |
| 1340 | |
| 1341 | /* fourth restart timer */ |
| 1342 | sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNACK, inp, stcb, alt); |
| 1343 | return (0); |
| 1344 | } |
| 1345 | |
| 1346 | static void |
| 1347 | sctp_audit_stream_queues_for_size(struct sctp_inpcb *inp, |
no test coverage detected