#define STATES \
STATE(VOID, 1 << 0) \
STATE(BACKOFF, 1 << 1) \
- STATE(CONNECT_IN_PROGRESS, 1 << 3) \
+ STATE(CONNECTING, 1 << 3) \
STATE(ACTIVE, 1 << 4) \
STATE(IDLE, 1 << 5) \
STATE(RECONNECT, 1 << 6) \
fsm->passive = passive;
if (passive
- ? fsm->state & (S_CONNECT_IN_PROGRESS | S_RECONNECT)
+ ? fsm->state & (S_CONNECTING | S_RECONNECT)
: fsm->state == S_LISTENING && reconnect_may_retry(fsm)) {
reconnect_transition__(fsm, now, S_BACKOFF);
fsm->backoff = 0;
void
reconnect_force_reconnect(struct reconnect *fsm, long long int now)
{
- if (fsm->state & (S_CONNECT_IN_PROGRESS | S_ACTIVE | S_IDLE)) {
+ if (fsm->state & (S_CONNECTING | S_ACTIVE | S_IDLE)) {
reconnect_transition__(fsm, now, S_RECONNECT);
}
}
void
reconnect_connecting(struct reconnect *fsm, long long int now)
{
- if (fsm->state != S_CONNECT_IN_PROGRESS) {
+ if (fsm->state != S_CONNECTING) {
if (fsm->passive) {
VLOG(fsm->info, "%s: listening...", fsm->name);
} else {
VLOG(fsm->info, "%s: connecting...", fsm->name);
}
- reconnect_transition__(fsm, now, S_CONNECT_IN_PROGRESS);
+ reconnect_transition__(fsm, now, S_CONNECTING);
}
}
reconnect_transition__(struct reconnect *fsm, long long int now,
enum state state)
{
- if (fsm->state == S_CONNECT_IN_PROGRESS) {
+ if (fsm->state == S_CONNECTING) {
fsm->n_attempted_connections++;
if (state == S_ACTIVE) {
fsm->n_successful_connections++;
case S_BACKOFF:
return fsm->state_entered + fsm->backoff;
- case S_CONNECT_IN_PROGRESS:
+ case S_CONNECTING:
return fsm->state_entered + MAX(1000, fsm->backoff);
case S_ACTIVE:
case S_BACKOFF:
return RECONNECT_CONNECT;
- case S_CONNECT_IN_PROGRESS:
+ case S_CONNECTING:
return RECONNECT_DISCONNECT;
case S_ACTIVE:
run
should connect
connecting
- in CONNECT_IN_PROGRESS for 0 ms (0 ms backoff)
+ in CONNECTING for 0 ms (0 ms backoff)
# Connect after 500 ms.
advance 500
### t=1500 ###
- in CONNECT_IN_PROGRESS for 500 ms (0 ms backoff)
+ in CONNECTING for 500 ms (0 ms backoff)
disconnected for 500 ms
run
connected
run
should connect
connecting
- in CONNECT_IN_PROGRESS for 0 ms (0 ms backoff)
+ in CONNECTING for 0 ms (0 ms backoff)
run
timeout
advance 1000 ms
### t=2000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (0 ms backoff)
+ in CONNECTING for 1000 ms (0 ms backoff)
disconnected for 1000 ms
run
should disconnect
# Second connection attempt fails after 1000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (1000 ms backoff)
+ in CONNECTING for 0 ms (1000 ms backoff)
timeout
advance 1000 ms
### t=4000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (1000 ms backoff)
+ in CONNECTING for 1000 ms (1000 ms backoff)
disconnected for 3000 ms
run
should disconnect
# Third connection attempt fails after 2000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (2000 ms backoff)
+ in CONNECTING for 0 ms (2000 ms backoff)
timeout
advance 2000 ms
### t=8000 ###
- in CONNECT_IN_PROGRESS for 2000 ms (2000 ms backoff)
+ in CONNECTING for 2000 ms (2000 ms backoff)
disconnected for 7000 ms
run
should disconnect
# Third connection attempt fails after 4000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (4000 ms backoff)
+ in CONNECTING for 0 ms (4000 ms backoff)
timeout
advance 4000 ms
### t=16000 ###
- in CONNECT_IN_PROGRESS for 4000 ms (4000 ms backoff)
+ in CONNECTING for 4000 ms (4000 ms backoff)
disconnected for 15000 ms
run
should disconnect
# Third connection attempt fails after 8000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (8000 ms backoff)
+ in CONNECTING for 0 ms (8000 ms backoff)
timeout
advance 8000 ms
### t=32000 ###
- in CONNECT_IN_PROGRESS for 8000 ms (8000 ms backoff)
+ in CONNECTING for 8000 ms (8000 ms backoff)
disconnected for 31000 ms
run
should disconnect
# Fourth connection attempt fails after 8000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (8000 ms backoff)
+ in CONNECTING for 0 ms (8000 ms backoff)
timeout
advance 8000 ms
### t=48000 ###
- in CONNECT_IN_PROGRESS for 8000 ms (8000 ms backoff)
+ in CONNECTING for 8000 ms (8000 ms backoff)
disconnected for 47000 ms
run
should disconnect
run
should connect
connecting
- in CONNECT_IN_PROGRESS for 0 ms (0 ms backoff)
+ in CONNECTING for 0 ms (0 ms backoff)
run
timeout
advance 1000 ms
### t=2000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (0 ms backoff)
+ in CONNECTING for 1000 ms (0 ms backoff)
disconnected for 1000 ms
run
should disconnect
# Second connection attempt fails after 1000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (1000 ms backoff)
+ in CONNECTING for 0 ms (1000 ms backoff)
timeout
advance 1000 ms
### t=4000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (1000 ms backoff)
+ in CONNECTING for 1000 ms (1000 ms backoff)
disconnected for 3000 ms
run
should disconnect
# Third connection attempt succeeds after 500 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (2000 ms backoff)
+ in CONNECTING for 0 ms (2000 ms backoff)
advance 500
### t=6500 ###
- in CONNECT_IN_PROGRESS for 500 ms (2000 ms backoff)
+ in CONNECTING for 500 ms (2000 ms backoff)
disconnected for 5500 ms
run
connected
run
should connect
connecting
- in CONNECT_IN_PROGRESS for 0 ms (0 ms backoff)
+ in CONNECTING for 0 ms (0 ms backoff)
run
timeout
advance 1000 ms
### t=2000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (0 ms backoff)
+ in CONNECTING for 1000 ms (0 ms backoff)
disconnected for 1000 ms
run
should disconnect
# Second connection attempt fails after 1000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (1000 ms backoff)
+ in CONNECTING for 0 ms (1000 ms backoff)
timeout
advance 1000 ms
### t=4000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (1000 ms backoff)
+ in CONNECTING for 1000 ms (1000 ms backoff)
disconnected for 3000 ms
run
should disconnect
# Third connection attempt succeeds after 500 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (2000 ms backoff)
+ in CONNECTING for 0 ms (2000 ms backoff)
advance 500
### t=6500 ###
- in CONNECT_IN_PROGRESS for 500 ms (2000 ms backoff)
+ in CONNECTING for 500 ms (2000 ms backoff)
disconnected for 5500 ms
run
connected
run
should connect
connecting
- in CONNECT_IN_PROGRESS for 0 ms (0 ms backoff)
+ in CONNECTING for 0 ms (0 ms backoff)
run
timeout
advance 1000 ms
### t=2000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (0 ms backoff)
+ in CONNECTING for 1000 ms (0 ms backoff)
disconnected for 1000 ms
run
should disconnect
# Second connection attempt fails after 1000 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (1000 ms backoff)
+ in CONNECTING for 0 ms (1000 ms backoff)
timeout
advance 1000 ms
### t=4000 ###
- in CONNECT_IN_PROGRESS for 1000 ms (1000 ms backoff)
+ in CONNECTING for 1000 ms (1000 ms backoff)
disconnected for 3000 ms
run
should disconnect
# Third connection attempt succeeds after 500 ms.
connecting
- in CONNECT_IN_PROGRESS for 0 ms (2000 ms backoff)
+ in CONNECTING for 0 ms (2000 ms backoff)
advance 500
### t=6500 ###
- in CONNECT_IN_PROGRESS for 500 ms (2000 ms backoff)
+ in CONNECTING for 500 ms (2000 ms backoff)
disconnected for 5500 ms
run
connected