Cleaning WTP DFA code

This commit is contained in:
vemax78
2013-11-07 22:06:29 +01:00
parent d3b5d889ab
commit 516f129fce
13 changed files with 714 additions and 1147 deletions

View File

@ -99,9 +99,7 @@ static void receive_reset_request(struct capwap_parsed_packet* packet) {
}
/* */
int wtp_dfa_state_run(struct capwap_parsed_packet* packet, struct timeout_control* timeout) {
int status = WTP_DFA_ACCEPT_PACKET;
void wtp_dfa_state_run(struct capwap_parsed_packet* packet, struct timeout_control* timeout) {
ASSERT(timeout != NULL);
if (packet) {
@ -154,8 +152,8 @@ int wtp_dfa_state_run(struct capwap_parsed_packet* packet, struct timeout_contro
case CAPWAP_RESET_REQUEST: {
receive_reset_request(packet);
capwap_set_timeout(0, timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
wtp_dfa_change_state(CAPWAP_RESET_STATE);
status = WTP_DFA_NO_PACKET;
break;
}
@ -188,8 +186,7 @@ int wtp_dfa_state_run(struct capwap_parsed_packet* packet, struct timeout_contro
if (g_wtp.dfa.rfcRetransmitCount >= g_wtp.dfa.rfcMaxRetransmit) {
/* Timeout run state */
wtp_free_reference_last_request();
wtp_dfa_change_state(CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
status = WTP_DFA_NO_PACKET;
wtp_teardown_connection(timeout);
} else {
/* Retransmit request */
if (!capwap_crypt_sendto_fragmentpacket(&g_wtp.ctrldtls, g_wtp.acctrlsock.socket[g_wtp.acctrlsock.type], g_wtp.requestfragmentpacket, &g_wtp.wtpctrladdress, &g_wtp.acctrladdress)) {
@ -207,8 +204,7 @@ int wtp_dfa_state_run(struct capwap_parsed_packet* packet, struct timeout_contro
g_wtp.dfa.rfcRetransmitCount = 0;
capwap_set_timeout(g_wtp.dfa.rfcRetransmitInterval, timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
} else {
wtp_dfa_change_state(CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
status = WTP_DFA_NO_PACKET;
wtp_teardown_connection(timeout);
}
} else if (capwap_is_timeout(timeout, CAPWAP_TIMER_DATA_KEEPALIVE)) {
struct capwap_list* txfragpacket;
@ -234,13 +230,11 @@ int wtp_dfa_state_run(struct capwap_parsed_packet* packet, struct timeout_contro
} else {
/* Error to send packets */
capwap_logging_debug("Warning: error to send data channel keepalive packet");
wtp_dfa_change_state(CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
status = WTP_DFA_NO_PACKET;
wtp_teardown_connection(timeout);
}
} else {
capwap_logging_debug("Warning: error to send data channel keepalive packet, fragment packet");
wtp_dfa_change_state(CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
status = WTP_DFA_NO_PACKET;
wtp_teardown_connection(timeout);
}
/* Free packets manager */
@ -249,18 +243,7 @@ int wtp_dfa_state_run(struct capwap_parsed_packet* packet, struct timeout_contro
} else if (capwap_is_timeout(timeout, CAPWAP_TIMER_DATA_KEEPALIVEDEAD)) {
/* Data Keep-Alive timeout */
capwap_kill_timeout(timeout, CAPWAP_TIMER_DATA_KEEPALIVEDEAD);
wtp_dfa_change_state(CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
status = WTP_DFA_NO_PACKET;
wtp_teardown_connection(timeout);
}
}
return status;
}
/* */
int wtp_dfa_state_run_to_dtlsteardown(struct capwap_parsed_packet* packet, struct timeout_control* timeout) {
ASSERT(packet == NULL);
ASSERT(timeout != NULL);
return wtp_teardown_connection(timeout);
}