Consistently provide arguments for timer start and stop routines.
This is another step in cleaning up timer handling. MFC after: 1 week
This commit is contained in:
parent
e95b3d7faf
commit
6fb7b4fbdb
@ -939,12 +939,12 @@ sctp_addr_match(struct sctp_paramhdr *ph, struct sockaddr *sa)
|
||||
* Cleanup for non-responded/OP ERR'd ASCONF
|
||||
*/
|
||||
void
|
||||
sctp_asconf_cleanup(struct sctp_tcb *stcb, struct sctp_nets *net)
|
||||
sctp_asconf_cleanup(struct sctp_tcb *stcb)
|
||||
{
|
||||
/*
|
||||
* clear out any existing asconfs going out
|
||||
*/
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, net,
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, NULL,
|
||||
SCTP_FROM_SCTP_ASCONF + SCTP_LOC_2);
|
||||
stcb->asoc.asconf_seq_out_acked = stcb->asoc.asconf_seq_out;
|
||||
/* remove the old ASCONF on our outbound queue */
|
||||
@ -1725,7 +1725,7 @@ sctp_handle_asconf_ack(struct mbuf *m, int offset,
|
||||
|
||||
if (serial_num == asoc->asconf_seq_out - 1) {
|
||||
/* stop our timer */
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, net,
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, NULL,
|
||||
SCTP_FROM_SCTP_ASCONF + SCTP_LOC_5);
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ __FBSDID("$FreeBSD$");
|
||||
/*
|
||||
* function prototypes
|
||||
*/
|
||||
extern void sctp_asconf_cleanup(struct sctp_tcb *, struct sctp_nets *);
|
||||
extern void sctp_asconf_cleanup(struct sctp_tcb *);
|
||||
|
||||
extern struct mbuf *sctp_compose_asconf(struct sctp_tcb *, int *, int);
|
||||
|
||||
|
@ -4392,7 +4392,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack,
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN,
|
||||
stcb->sctp_ep, stcb, netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, netp);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
} else if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) &&
|
||||
(asoc->stream_queue_cnt == 0)) {
|
||||
struct sctp_nets *netp;
|
||||
@ -5087,7 +5087,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup,
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN,
|
||||
stcb->sctp_ep, stcb, netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, netp);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
return;
|
||||
} else if ((SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED) &&
|
||||
(asoc->stream_queue_cnt == 0)) {
|
||||
|
@ -826,7 +826,7 @@ sctp_handle_abort(struct sctp_abort_chunk *abort,
|
||||
error = 0;
|
||||
}
|
||||
/* stop any receive timers */
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, net,
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL,
|
||||
SCTP_FROM_SCTP_INPUT + SCTP_LOC_7);
|
||||
/* notify user of the abort and clean up... */
|
||||
sctp_abort_notification(stcb, 1, error, abort, SCTP_SO_NOT_LOCKED);
|
||||
@ -1110,13 +1110,12 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED,
|
||||
}
|
||||
|
||||
static void
|
||||
sctp_process_unrecog_chunk(struct sctp_tcb *stcb, uint8_t chunk_type,
|
||||
struct sctp_nets *net)
|
||||
sctp_process_unrecog_chunk(struct sctp_tcb *stcb, uint8_t chunk_type)
|
||||
{
|
||||
switch (chunk_type) {
|
||||
case SCTP_ASCONF_ACK:
|
||||
case SCTP_ASCONF:
|
||||
sctp_asconf_cleanup(stcb, net);
|
||||
sctp_asconf_cleanup(stcb);
|
||||
break;
|
||||
case SCTP_IFORWARD_CUM_TSN:
|
||||
case SCTP_FORWARD_CUM_TSN:
|
||||
@ -1294,7 +1293,7 @@ sctp_handle_error(struct sctp_chunkhdr *ch,
|
||||
struct sctp_error_unrecognized_chunk *unrec_chunk;
|
||||
|
||||
unrec_chunk = (struct sctp_error_unrecognized_chunk *)cause;
|
||||
sctp_process_unrecog_chunk(stcb, unrec_chunk->ch.chunk_type, net);
|
||||
sctp_process_unrecog_chunk(stcb, unrec_chunk->ch.chunk_type);
|
||||
}
|
||||
break;
|
||||
case SCTP_CAUSE_UNRECOG_PARAM:
|
||||
@ -1643,7 +1642,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
|
||||
if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, asoc->primary_destination);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
}
|
||||
SCTP_STAT_INCR_GAUGE32(sctps_currestab);
|
||||
sctp_stop_all_cookie_timers(stcb);
|
||||
@ -1886,7 +1885,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
|
||||
if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, asoc->primary_destination);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
}
|
||||
sctp_stop_all_cookie_timers(stcb);
|
||||
sctp_toss_old_cookies(stcb, asoc);
|
||||
@ -1956,7 +1955,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphlen, int offset,
|
||||
if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
|
||||
SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, asoc->primary_destination);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
|
||||
} else if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) {
|
||||
/* move to OPEN state, if not in SHUTDOWN_SENT */
|
||||
@ -2352,7 +2351,7 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, int offset,
|
||||
SCTP_SET_STATE(stcb, SCTP_STATE_OPEN);
|
||||
if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, asoc->primary_destination);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
}
|
||||
sctp_stop_all_cookie_timers(stcb);
|
||||
SCTP_STAT_INCR_COUNTER32(sctps_passiveestab);
|
||||
@ -2980,7 +2979,7 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *cp SCTP_UNUSED,
|
||||
sctp_start_net_timers(stcb);
|
||||
if (asoc->state & SCTP_STATE_SHUTDOWN_PENDING) {
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, asoc->primary_destination);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
|
||||
}
|
||||
/* update RTO */
|
||||
@ -3660,7 +3659,7 @@ sctp_clean_up_stream_reset(struct sctp_tcb *stcb)
|
||||
}
|
||||
asoc->str_reset = NULL;
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb,
|
||||
chk->whoTo, SCTP_FROM_SCTP_INPUT + SCTP_LOC_28);
|
||||
NULL, SCTP_FROM_SCTP_INPUT + SCTP_LOC_28);
|
||||
TAILQ_REMOVE(&asoc->control_send_queue, chk, sctp_next);
|
||||
asoc->ctrl_queue_cnt--;
|
||||
if (chk->data) {
|
||||
|
@ -6735,7 +6735,7 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr,
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb,
|
||||
net);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb,
|
||||
asoc->primary_destination);
|
||||
NULL);
|
||||
added_control = 1;
|
||||
do_chunk_output = 0;
|
||||
}
|
||||
@ -6775,7 +6775,7 @@ sctp_sendall_iterator(struct sctp_inpcb *inp, struct sctp_tcb *stcb, void *ptr,
|
||||
goto no_chunk_output;
|
||||
}
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb,
|
||||
asoc->primary_destination);
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -8447,7 +8447,7 @@ sctp_med_chunk_output(struct sctp_inpcb *inp,
|
||||
/* turn off the timer */
|
||||
if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) {
|
||||
sctp_timer_stop(SCTP_TIMER_TYPE_RECV,
|
||||
inp, stcb, net,
|
||||
inp, stcb, NULL,
|
||||
SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_1);
|
||||
}
|
||||
}
|
||||
@ -13577,7 +13577,7 @@ sctp_lower_sosend(struct socket *so,
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb,
|
||||
netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb,
|
||||
asoc->primary_destination);
|
||||
NULL);
|
||||
}
|
||||
} else {
|
||||
/*-
|
||||
@ -13629,7 +13629,7 @@ sctp_lower_sosend(struct socket *so,
|
||||
goto out;
|
||||
}
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb,
|
||||
asoc->primary_destination);
|
||||
NULL);
|
||||
sctp_feature_off(inp, SCTP_PCB_FLAGS_NODELAY);
|
||||
}
|
||||
}
|
||||
|
@ -3444,15 +3444,13 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from)
|
||||
sctp_send_shutdown(asoc, netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, asoc->sctp_ep, asoc,
|
||||
netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, asoc->sctp_ep, asoc,
|
||||
asoc->asoc.primary_destination);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, asoc->sctp_ep, asoc, NULL);
|
||||
sctp_chunk_output(inp, asoc, SCTP_OUTPUT_FROM_SHUT_TMR, SCTP_SO_LOCKED);
|
||||
}
|
||||
} else {
|
||||
/* mark into shutdown pending */
|
||||
SCTP_ADD_SUBSTATE(asoc, SCTP_STATE_SHUTDOWN_PENDING);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, asoc->sctp_ep, asoc,
|
||||
asoc->asoc.primary_destination);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, asoc->sctp_ep, asoc, NULL);
|
||||
if ((*asoc->asoc.ss_functions.sctp_ss_is_user_msgs_incomplete) (asoc, &asoc->asoc)) {
|
||||
SCTP_ADD_SUBSTATE(asoc, SCTP_STATE_PARTIAL_MSG_LEFT);
|
||||
}
|
||||
|
@ -1202,7 +1202,7 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
||||
* and cleanup.
|
||||
*/
|
||||
SCTPDBG(SCTP_DEBUG_TIMER1, "asconf_timer: Peer has not responded to our repeated ASCONFs\n");
|
||||
sctp_asconf_cleanup(stcb, net);
|
||||
sctp_asconf_cleanup(stcb);
|
||||
return (0);
|
||||
}
|
||||
/*
|
||||
|
@ -768,7 +768,7 @@ sctp_disconnect(struct socket *so)
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN,
|
||||
stcb->sctp_ep, stcb, netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD,
|
||||
stcb->sctp_ep, stcb, netp);
|
||||
stcb->sctp_ep, stcb, NULL);
|
||||
sctp_chunk_output(stcb->sctp_ep, stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_LOCKED);
|
||||
}
|
||||
} else {
|
||||
@ -791,8 +791,7 @@ sctp_disconnect(struct socket *so)
|
||||
}
|
||||
|
||||
SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_SHUTDOWN_PENDING);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb,
|
||||
netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, NULL);
|
||||
if ((*asoc->ss_functions.sctp_ss_is_user_msgs_incomplete) (stcb, asoc)) {
|
||||
SCTP_ADD_SUBSTATE(stcb, SCTP_STATE_PARTIAL_MSG_LEFT);
|
||||
}
|
||||
@ -996,7 +995,7 @@ sctp_shutdown(struct socket *so)
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, netp);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNGUARD, stcb->sctp_ep, stcb, NULL);
|
||||
/*
|
||||
* XXX: Why do this in the case where we have still data
|
||||
* queued?
|
||||
|
@ -1875,7 +1875,7 @@ sctp_timeout_handler(void *t)
|
||||
inp->sctp_ep.secret_key[secret][i] =
|
||||
sctp_select_initial_TSN(&inp->sctp_ep);
|
||||
}
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_NEWCOOKIE, inp, stcb, net);
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_NEWCOOKIE, inp, NULL, NULL);
|
||||
}
|
||||
did_output = 0;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user