Add support for TCP port reuse (same tuple6 but different ISN) in session manager: evict old session and create new session
This commit is contained in:
@@ -71,6 +71,10 @@ static void session_inputs_to_str(int inputs, char *buff, int len)
|
||||
{
|
||||
nused += snprintf(buff + nused, len - nused, "LRU_EVICT ");
|
||||
}
|
||||
if (inputs & PORT_REUSE_EVICT)
|
||||
{
|
||||
nused += snprintf(buff + nused, len - nused, "PORT_REUSE_EVICT ");
|
||||
}
|
||||
if (inputs & USER_CLOSE)
|
||||
{
|
||||
nused += snprintf(buff + nused, len - nused, "USER_CLOSE ");
|
||||
@@ -94,7 +98,7 @@ void session_transition_init()
|
||||
fsm[SESSION_STATE_OPENING][2].inputs_mask = USER_CLOSE;
|
||||
fsm[SESSION_STATE_OPENING][2].next_state = SESSION_STATE_DISCARD;
|
||||
|
||||
fsm[SESSION_STATE_OPENING][3].inputs_mask = LRU_EVICT;
|
||||
fsm[SESSION_STATE_OPENING][3].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT;
|
||||
fsm[SESSION_STATE_OPENING][3].next_state = SESSION_STATE_CLOSED;
|
||||
|
||||
fsm[SESSION_STATE_OPENING][4].inputs_mask = NONE;
|
||||
@@ -106,7 +110,7 @@ void session_transition_init()
|
||||
fsm[SESSION_STATE_ACTIVE][1].inputs_mask = USER_CLOSE;
|
||||
fsm[SESSION_STATE_ACTIVE][1].next_state = SESSION_STATE_DISCARD;
|
||||
|
||||
fsm[SESSION_STATE_ACTIVE][2].inputs_mask = LRU_EVICT;
|
||||
fsm[SESSION_STATE_ACTIVE][2].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT;
|
||||
fsm[SESSION_STATE_ACTIVE][2].next_state = SESSION_STATE_CLOSED;
|
||||
|
||||
fsm[SESSION_STATE_ACTIVE][3].inputs_mask = NONE;
|
||||
@@ -115,13 +119,13 @@ void session_transition_init()
|
||||
fsm[SESSION_STATE_CLOSING][0].inputs_mask = USER_CLOSE;
|
||||
fsm[SESSION_STATE_CLOSING][0].next_state = SESSION_STATE_DISCARD;
|
||||
|
||||
fsm[SESSION_STATE_CLOSING][1].inputs_mask = LRU_EVICT | TIMEOUT;
|
||||
fsm[SESSION_STATE_CLOSING][1].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT | TIMEOUT;
|
||||
fsm[SESSION_STATE_CLOSING][1].next_state = SESSION_STATE_CLOSED;
|
||||
|
||||
fsm[SESSION_STATE_CLOSING][2].inputs_mask = NONE;
|
||||
fsm[SESSION_STATE_CLOSING][2].next_state = SESSION_STATE_CLOSING;
|
||||
|
||||
fsm[SESSION_STATE_DISCARD][0].inputs_mask = LRU_EVICT | TIMEOUT;
|
||||
fsm[SESSION_STATE_DISCARD][0].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT | TIMEOUT;
|
||||
fsm[SESSION_STATE_DISCARD][0].next_state = SESSION_STATE_CLOSED;
|
||||
|
||||
fsm[SESSION_STATE_DISCARD][1].inputs_mask = NONE;
|
||||
|
||||
Reference in New Issue
Block a user