Cleaning AC DFA code
This commit is contained in:
parent
4cbff2eead
commit
590b7539bf
@ -707,10 +707,9 @@ static uint32_t ac_dfa_state_configure_create_response(struct ac_session_t* sess
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_configure(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_configure(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
struct capwap_header_data capwapheader;
|
struct capwap_header_data capwapheader;
|
||||||
struct capwap_packet_txmng* txmngpacket;
|
struct capwap_packet_txmng* txmngpacket;
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
@ -765,19 +764,10 @@ int ac_dfa_state_configure(struct ac_session_t* session, struct capwap_parsed_pa
|
|||||||
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_STATE);
|
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_STATE);
|
||||||
capwap_set_timeout(session->dfa.rfcChangeStatePendingTimer, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_set_timeout(session->dfa.rfcChangeStatePendingTimer, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
} else {
|
} else {
|
||||||
ac_dfa_change_state(session, CAPWAP_CONFIGURE_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Configure timeout */
|
/* Configure timeout */
|
||||||
ac_dfa_change_state(session, CAPWAP_CONFIGURE_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_configure_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
return ac_session_teardown_connection(session);
|
|
||||||
}
|
}
|
||||||
|
@ -173,10 +173,9 @@ static uint32_t ac_dfa_state_datacheck_create_response(struct ac_session_t* sess
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_datacheck(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_datacheck(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
struct capwap_header_data capwapheader;
|
struct capwap_header_data capwapheader;
|
||||||
struct capwap_packet_txmng* txmngpacket;
|
struct capwap_packet_txmng* txmngpacket;
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
@ -231,25 +230,20 @@ int ac_dfa_state_datacheck(struct ac_session_t* session, struct capwap_parsed_pa
|
|||||||
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_TO_RUN_STATE);
|
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_TO_RUN_STATE);
|
||||||
capwap_set_timeout(session->dfa.rfcDataCheckTimer, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_set_timeout(session->dfa.rfcDataCheckTimer, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
} else {
|
} else {
|
||||||
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Configure timeout */
|
/* Configure timeout */
|
||||||
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_datacheck_to_run(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_datacheck_to_run(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
struct capwap_list* txfragpacket;
|
struct capwap_list* txfragpacket;
|
||||||
struct capwap_header_data capwapheader;
|
struct capwap_header_data capwapheader;
|
||||||
struct capwap_packet_txmng* txmngpacket;
|
struct capwap_packet_txmng* txmngpacket;
|
||||||
struct ac_soap_response* response;
|
struct ac_soap_response* response;
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
@ -303,21 +297,12 @@ int ac_dfa_state_datacheck_to_run(struct ac_session_t* session, struct capwap_pa
|
|||||||
ac_dfa_change_state(session, CAPWAP_RUN_STATE);
|
ac_dfa_change_state(session, CAPWAP_RUN_STATE);
|
||||||
capwap_set_timeout(AC_MAX_ECHO_INTERVAL, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_set_timeout(AC_MAX_ECHO_INTERVAL, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
} else {
|
} else {
|
||||||
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Configure timeout */
|
/* Configure timeout */
|
||||||
ac_dfa_change_state(session, CAPWAP_DATA_CHECK_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_datacheck_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
return ac_session_teardown_connection(session);
|
|
||||||
}
|
}
|
||||||
|
@ -14,38 +14,20 @@ int ac_bio_send(struct capwap_dtls* dtls, char* buffer, int length, void* param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_dtlssetup(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
int ac_dtls_setup(struct ac_session_t* session) {
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
ASSERT(packet == NULL);
|
|
||||||
|
|
||||||
/* Create DTLS session */
|
/* Create DTLS session */
|
||||||
if (!capwap_crypt_createsession(&session->ctrldtls, CAPWAP_DTLS_CONTROL_SESSION, &g_ac.dtlscontext, ac_bio_send, session)) {
|
if (!capwap_crypt_createsession(&session->ctrldtls, CAPWAP_DTLS_CONTROL_SESSION, &g_ac.dtlscontext, ac_bio_send, session)) {
|
||||||
ac_dfa_change_state(session, CAPWAP_DTLS_SETUP_TO_IDLE_STATE); /* TODO */
|
return 0;
|
||||||
status = AC_DFA_NO_PACKET;
|
}
|
||||||
} else {
|
|
||||||
if (capwap_crypt_open(&session->ctrldtls, &session->wtpctrladdress) == CAPWAP_HANDSHAKE_ERROR) {
|
if (capwap_crypt_open(&session->ctrldtls, &session->wtpctrladdress) == CAPWAP_HANDSHAKE_ERROR) {
|
||||||
ac_dfa_change_state(session, CAPWAP_DTLS_SETUP_TO_IDLE_STATE); /* TODO */
|
return 0;
|
||||||
status = AC_DFA_NO_PACKET;
|
}
|
||||||
} else {
|
|
||||||
|
/* Wait DTLS handshake complete */
|
||||||
ac_dfa_change_state(session, CAPWAP_DTLS_CONNECT_STATE);
|
ac_dfa_change_state(session, CAPWAP_DTLS_CONNECT_STATE);
|
||||||
}
|
capwap_set_timeout(session->dfa.rfcWaitDTLS, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
}
|
return 1;
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_dtlsconnect(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
ASSERT(session != NULL);
|
|
||||||
ASSERT(packet == NULL);
|
|
||||||
|
|
||||||
ac_dfa_change_state(session, CAPWAP_DTLS_CONNECT_TO_DTLS_TEARDOWN_STATE); /* TODO */
|
|
||||||
return AC_DFA_NO_PACKET;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_dtlsconnect_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
return ac_session_teardown_connection(session);
|
|
||||||
}
|
}
|
||||||
|
@ -4,15 +4,6 @@
|
|||||||
#include "ac_session.h"
|
#include "ac_session.h"
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_imagedata(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_imagedata(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
/* TODO */
|
/* TODO */
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_imagedata_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
return ac_session_teardown_connection(session);
|
|
||||||
}
|
}
|
||||||
|
@ -579,13 +579,12 @@ static uint32_t ac_dfa_state_join_create_response(struct ac_session_t* session,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_join(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_join(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
struct ac_soap_response* response;
|
struct ac_soap_response* response;
|
||||||
struct capwap_header_data capwapheader;
|
struct capwap_header_data capwapheader;
|
||||||
struct capwap_packet_txmng* txmngpacket;
|
struct capwap_packet_txmng* txmngpacket;
|
||||||
struct capwap_sessionid_element* sessionid;
|
struct capwap_sessionid_element* sessionid;
|
||||||
struct capwap_wtpboarddata_element* wtpboarddata;
|
struct capwap_wtpboarddata_element* wtpboarddata;
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
struct capwap_resultcode_element resultcode = { .code = CAPWAP_RESULTCODE_FAILURE };
|
struct capwap_resultcode_element resultcode = { .code = CAPWAP_RESULTCODE_FAILURE };
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
@ -673,51 +672,35 @@ int ac_dfa_state_join(struct ac_session_t* session, struct capwap_parsed_packet*
|
|||||||
if (CAPWAP_RESULTCODE_OK(resultcode.code)) {
|
if (CAPWAP_RESULTCODE_OK(resultcode.code)) {
|
||||||
ac_dfa_change_state(session, CAPWAP_POSTJOIN_STATE);
|
ac_dfa_change_state(session, CAPWAP_POSTJOIN_STATE);
|
||||||
} else {
|
} else {
|
||||||
ac_dfa_change_state(session, CAPWAP_JOIN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Error to send packets */
|
/* Error to send packets */
|
||||||
capwap_logging_debug("Warning: error to send join response packet");
|
capwap_logging_debug("Warning: error to send join response packet");
|
||||||
ac_dfa_change_state(session, CAPWAP_JOIN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Join timeout */
|
/* Join timeout */
|
||||||
ac_dfa_change_state(session, CAPWAP_JOIN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_postjoin(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_postjoin(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
if (packet) {
|
if (packet) {
|
||||||
if (packet->rxmngpacket->ctrlmsg.type == CAPWAP_CONFIGURATION_STATUS_REQUEST) {
|
if (packet->rxmngpacket->ctrlmsg.type == CAPWAP_CONFIGURATION_STATUS_REQUEST) {
|
||||||
ac_dfa_change_state(session, CAPWAP_CONFIGURE_STATE);
|
ac_dfa_change_state(session, CAPWAP_CONFIGURE_STATE);
|
||||||
status = ac_dfa_state_configure(session, packet);
|
ac_dfa_state_configure(session, packet);
|
||||||
} else if (packet->rxmngpacket->ctrlmsg.type == CAPWAP_IMAGE_DATA_REQUEST) {
|
} else if (packet->rxmngpacket->ctrlmsg.type == CAPWAP_IMAGE_DATA_REQUEST) {
|
||||||
ac_dfa_change_state(session, CAPWAP_IMAGE_DATA_STATE);
|
ac_dfa_change_state(session, CAPWAP_IMAGE_DATA_STATE);
|
||||||
status = ac_dfa_state_imagedata(session, packet);
|
ac_dfa_state_imagedata(session, packet);
|
||||||
} else {
|
} else {
|
||||||
ac_dfa_change_state(session, CAPWAP_JOIN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Join timeout */
|
/* Join timeout */
|
||||||
ac_dfa_change_state(session, CAPWAP_JOIN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_join_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
return ac_session_teardown_connection(session);
|
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,7 @@
|
|||||||
#include "ac_session.h"
|
#include "ac_session.h"
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_reset(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_reset(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
if (packet) {
|
if (packet) {
|
||||||
@ -23,8 +21,7 @@ int ac_dfa_state_reset(struct ac_session_t* session, struct capwap_parsed_packet
|
|||||||
capwap_logging_warning("Receive Reset Response with error: %d", (int)resultcode->code);
|
capwap_logging_warning("Receive Reset Response with error: %d", (int)resultcode->code);
|
||||||
}
|
}
|
||||||
|
|
||||||
ac_dfa_change_state(session, CAPWAP_RESET_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* No Configuration status response received */
|
/* No Configuration status response received */
|
||||||
@ -32,8 +29,7 @@ int ac_dfa_state_reset(struct ac_session_t* session, struct capwap_parsed_packet
|
|||||||
if (session->dfa.rfcRetransmitCount >= session->dfa.rfcMaxRetransmit) {
|
if (session->dfa.rfcRetransmitCount >= session->dfa.rfcMaxRetransmit) {
|
||||||
/* Timeout reset state */
|
/* Timeout reset state */
|
||||||
ac_free_reference_last_request(session);
|
ac_free_reference_last_request(session);
|
||||||
ac_dfa_change_state(session, CAPWAP_RESET_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
} else {
|
} else {
|
||||||
/* Retransmit configuration request */
|
/* Retransmit configuration request */
|
||||||
if (!capwap_crypt_sendto_fragmentpacket(&session->ctrldtls, session->ctrlsocket.socket[session->ctrlsocket.type], session->requestfragmentpacket, &session->acctrladdress, &session->wtpctrladdress)) {
|
if (!capwap_crypt_sendto_fragmentpacket(&session->ctrldtls, session->ctrlsocket.socket[session->ctrlsocket.type], session->requestfragmentpacket, &session->acctrladdress, &session->wtpctrladdress)) {
|
||||||
@ -44,11 +40,4 @@ int ac_dfa_state_reset(struct ac_session_t* session, struct capwap_parsed_packet
|
|||||||
capwap_set_timeout(session->dfa.rfcRetransmitInterval, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_set_timeout(session->dfa.rfcRetransmitInterval, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_reset_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
return ac_session_teardown_connection(session);
|
|
||||||
}
|
}
|
||||||
|
@ -97,9 +97,7 @@ static int ac_send_data_keepalive(struct ac_session_t* session, struct capwap_pa
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_run(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_run(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
int status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
if (packet) {
|
if (packet) {
|
||||||
@ -122,8 +120,7 @@ int ac_dfa_state_run(struct ac_session_t* session, struct capwap_parsed_packet*
|
|||||||
if (!receive_echo_request(session, packet)) {
|
if (!receive_echo_request(session, packet)) {
|
||||||
capwap_set_timeout(AC_MAX_ECHO_INTERVAL, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_set_timeout(AC_MAX_ECHO_INTERVAL, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
} else {
|
} else {
|
||||||
ac_dfa_change_state(session, CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -170,8 +167,7 @@ int ac_dfa_state_run(struct ac_session_t* session, struct capwap_parsed_packet*
|
|||||||
if (IS_FLAG_K_HEADER(packet->rxmngpacket->header)) {
|
if (IS_FLAG_K_HEADER(packet->rxmngpacket->header)) {
|
||||||
if (!memcmp(capwap_get_message_element_data(packet, CAPWAP_ELEMENT_SESSIONID), &session->sessionid, sizeof(struct capwap_sessionid_element))) {
|
if (!memcmp(capwap_get_message_element_data(packet, CAPWAP_ELEMENT_SESSIONID), &session->sessionid, sizeof(struct capwap_sessionid_element))) {
|
||||||
if (ac_send_data_keepalive(session, packet)) {
|
if (ac_send_data_keepalive(session, packet)) {
|
||||||
ac_dfa_change_state(session, CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -179,21 +175,16 @@ int ac_dfa_state_run(struct ac_session_t* session, struct capwap_parsed_packet*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ac_dfa_change_state(session, CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
status = AC_DFA_NO_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_run_to_reset(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_session_reset(struct ac_session_t* session) {
|
||||||
int status = AC_DFA_NO_PACKET;
|
|
||||||
struct capwap_header_data capwapheader;
|
struct capwap_header_data capwapheader;
|
||||||
struct capwap_packet_txmng* txmngpacket;
|
struct capwap_packet_txmng* txmngpacket;
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
ASSERT(packet == NULL);
|
|
||||||
|
|
||||||
/* Build packet */
|
/* Build packet */
|
||||||
capwap_header_init(&capwapheader, CAPWAP_RADIOID_NONE, session->binding);
|
capwap_header_init(&capwapheader, CAPWAP_RADIOID_NONE, session->binding);
|
||||||
@ -219,17 +210,9 @@ int ac_dfa_state_run_to_reset(struct ac_session_t* session, struct capwap_parsed
|
|||||||
capwap_killall_timeout(&session->timeout);
|
capwap_killall_timeout(&session->timeout);
|
||||||
capwap_set_timeout(session->dfa.rfcRetransmitInterval, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_set_timeout(session->dfa.rfcRetransmitInterval, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
ac_dfa_change_state(session, CAPWAP_RESET_STATE);
|
ac_dfa_change_state(session, CAPWAP_RESET_STATE);
|
||||||
status = AC_DFA_ACCEPT_PACKET;
|
|
||||||
} else {
|
} else {
|
||||||
capwap_logging_debug("Warning: error to send reset request packet");
|
capwap_logging_debug("Warning: error to send reset request packet");
|
||||||
ac_free_reference_last_request(session);
|
ac_free_reference_last_request(session);
|
||||||
ac_dfa_change_state(session, CAPWAP_RESET_TO_DTLS_TEARDOWN_STATE);
|
ac_session_teardown(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_run_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
|
||||||
return ac_session_teardown_connection(session);
|
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,8 @@
|
|||||||
#include "ac_session.h"
|
#include "ac_session.h"
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_teardown(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
void ac_dfa_state_teardown(struct ac_session_t* session) {
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
ASSERT(packet == NULL);
|
|
||||||
|
|
||||||
// Notify teardown session
|
// Notify teardown session
|
||||||
if (session->wtpid) {
|
if (session->wtpid) {
|
||||||
@ -18,5 +17,4 @@ int ac_dfa_state_teardown(struct ac_session_t* session, struct capwap_parsed_pac
|
|||||||
|
|
||||||
/* Defered free resource */
|
/* Defered free resource */
|
||||||
ac_dfa_change_state(session, CAPWAP_DEAD_STATE);
|
ac_dfa_change_state(session, CAPWAP_DEAD_STATE);
|
||||||
return AC_DFA_DROP_PACKET;
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ static int ac_session_action_execute(struct ac_session_t* session, struct ac_ses
|
|||||||
|
|
||||||
switch (action->action) {
|
switch (action->action) {
|
||||||
case AC_SESSION_ACTION_RESET_WTP: {
|
case AC_SESSION_ACTION_RESET_WTP: {
|
||||||
|
ac_session_reset(session);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -119,262 +120,53 @@ static int ac_network_read(struct ac_session_t* session, void* buffer, int lengt
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
static int ac_dfa_execute(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
static void ac_dfa_execute(struct ac_session_t* session, struct capwap_parsed_packet* packet) {
|
||||||
int action = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
/* Execute state */
|
/* Execute state */
|
||||||
switch (session->state) {
|
switch (session->state) {
|
||||||
case CAPWAP_START_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_START_TO_IDLE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_IDLE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_IDLE_TO_DISCOVERY_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_IDLE_TO_DTLS_SETUP_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DISCOVERY_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DISCOVERY_TO_IDLE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DISCOVERY_TO_SULKING_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DISCOVERY_TO_DTLS_SETUP_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_SULKING_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_SULKING_TO_IDLE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_SETUP_STATE: {
|
|
||||||
action = ac_dfa_state_dtlssetup(session, packet);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_SETUP_TO_IDLE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_SETUP_TO_SULKING_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_SETUP_TO_AUTHORIZE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_AUTHORIZE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_AUTHORIZE_TO_DTLS_SETUP_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_AUTHORIZE_TO_DTLS_CONNECT_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_AUTHORIZE_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_CONNECT_STATE: {
|
case CAPWAP_DTLS_CONNECT_STATE: {
|
||||||
action = ac_dfa_state_dtlsconnect(session, packet);
|
ac_session_teardown(session);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_CONNECT_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
action = ac_dfa_state_dtlsconnect_to_dtlsteardown(session, packet);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_CONNECT_TO_JOIN_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_TEARDOWN_TO_IDLE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_TEARDOWN_TO_SULKING_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DTLS_TEARDOWN_TO_DEAD_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_JOIN_STATE: {
|
case CAPWAP_JOIN_STATE: {
|
||||||
action = ac_dfa_state_join(session, packet);
|
ac_dfa_state_join(session, packet);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_POSTJOIN_STATE: {
|
case CAPWAP_POSTJOIN_STATE: {
|
||||||
action = ac_dfa_state_postjoin(session, packet);
|
ac_dfa_state_postjoin(session, packet);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_JOIN_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
action = ac_dfa_state_join_to_dtlsteardown(session, packet);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_JOIN_TO_IMAGE_DATA_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_JOIN_TO_CONFIGURE_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_IMAGE_DATA_STATE: {
|
case CAPWAP_IMAGE_DATA_STATE: {
|
||||||
action = ac_dfa_state_imagedata(session, packet);
|
ac_dfa_state_imagedata(session, packet);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_IMAGE_DATA_TO_RESET_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_IMAGE_DATA_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
action = ac_dfa_state_imagedata_to_dtlsteardown(session, packet);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_CONFIGURE_STATE: {
|
case CAPWAP_CONFIGURE_STATE: {
|
||||||
action = ac_dfa_state_configure(session, packet);
|
ac_dfa_state_configure(session, packet);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_CONFIGURE_TO_RESET_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_CONFIGURE_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
action = ac_dfa_state_configure_to_dtlsteardown(session, packet);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_CONFIGURE_TO_DATA_CHECK_STATE: {
|
|
||||||
/* Never called with this state */
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_RESET_STATE: {
|
case CAPWAP_RESET_STATE: {
|
||||||
action = ac_dfa_state_reset(session, packet);
|
ac_dfa_state_reset(session, packet);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_RESET_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
action = ac_dfa_state_reset_to_dtlsteardown(session, packet);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_DATA_CHECK_STATE: {
|
case CAPWAP_DATA_CHECK_STATE: {
|
||||||
action = ac_dfa_state_datacheck(session, packet);
|
ac_dfa_state_datacheck(session, packet);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_DATA_CHECK_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
action = ac_dfa_state_datacheck_to_dtlsteardown(session, packet);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_DATA_CHECK_TO_RUN_STATE: {
|
case CAPWAP_DATA_CHECK_TO_RUN_STATE: {
|
||||||
action = ac_dfa_state_datacheck_to_run(session, packet);
|
ac_dfa_state_datacheck_to_run(session, packet);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CAPWAP_RUN_STATE: {
|
case CAPWAP_RUN_STATE: {
|
||||||
action = ac_dfa_state_run(session, packet);
|
ac_dfa_state_run(session, packet);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_RUN_TO_DTLS_TEARDOWN_STATE: {
|
|
||||||
action = ac_dfa_state_run_to_dtlsteardown(session, packet);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CAPWAP_RUN_TO_RESET_STATE: {
|
|
||||||
action = ac_dfa_state_run_to_reset(session, packet);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,8 +175,6 @@ static int ac_dfa_execute(struct ac_session_t* session, struct capwap_parsed_pac
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return action;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
@ -541,15 +331,14 @@ static void ac_session_run(struct ac_session_t* session) {
|
|||||||
int isctrlsocket;
|
int isctrlsocket;
|
||||||
struct capwap_connection connection;
|
struct capwap_connection connection;
|
||||||
char buffer[CAPWAP_MAX_PACKET_SIZE];
|
char buffer[CAPWAP_MAX_PACKET_SIZE];
|
||||||
int action = AC_DFA_ACCEPT_PACKET;
|
|
||||||
|
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
/* Configure DFA */
|
/* Configure DFA */
|
||||||
if (g_ac.enabledtls) {
|
if (g_ac.enabledtls) {
|
||||||
action = AC_DFA_NO_PACKET;
|
if (!ac_dtls_setup(session)) {
|
||||||
ac_dfa_change_state(session, CAPWAP_DTLS_SETUP_STATE);
|
ac_session_teardown(session); /* Teardown connection */
|
||||||
capwap_set_timeout(session->dfa.rfcWaitDTLS, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Wait Join request */
|
/* Wait Join request */
|
||||||
ac_dfa_change_state(session, CAPWAP_JOIN_STATE);
|
ac_dfa_change_state(session, CAPWAP_JOIN_STATE);
|
||||||
@ -558,13 +347,12 @@ static void ac_session_run(struct ac_session_t* session) {
|
|||||||
|
|
||||||
while (session->state != CAPWAP_DTLS_TEARDOWN_STATE) {
|
while (session->state != CAPWAP_DTLS_TEARDOWN_STATE) {
|
||||||
/* Get packet */
|
/* Get packet */
|
||||||
if ((action == AC_DFA_ACCEPT_PACKET) || (action == AC_DFA_DROP_PACKET)) {
|
|
||||||
length = ac_network_read(session, buffer, sizeof(buffer), &isctrlsocket, &session->timeout);
|
length = ac_network_read(session, buffer, sizeof(buffer), &isctrlsocket, &session->timeout);
|
||||||
if (length < 0) {
|
if (length < 0) {
|
||||||
if (length == PACKET_TIMEOUT) {
|
if (length == PACKET_TIMEOUT) {
|
||||||
action = ac_dfa_execute(session, NULL); /* Timeout */
|
ac_dfa_execute(session, NULL);
|
||||||
} else if (length == DTLS_SHUTDOWN) {
|
} else if (length == DTLS_SHUTDOWN) {
|
||||||
ac_session_teardown_connection(session);
|
ac_session_teardown(session);
|
||||||
} else if (length == ACTION_SESSION) {
|
} else if (length == ACTION_SESSION) {
|
||||||
/* Nothing */
|
/* Nothing */
|
||||||
}
|
}
|
||||||
@ -636,8 +424,8 @@ static void ac_session_run(struct ac_session_t* session) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
if (!ignorepacket && (action == AC_DFA_ACCEPT_PACKET)) {
|
if (!ignorepacket) {
|
||||||
action = ac_dfa_execute(session, &packet);
|
ac_dfa_execute(session, &packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free memory */
|
/* Free memory */
|
||||||
@ -650,14 +438,11 @@ static void ac_session_run(struct ac_session_t* session) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
action = ac_dfa_execute(session, NULL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wait teardown timeout before kill session */
|
/* Wait teardown timeout before kill session */
|
||||||
capwap_wait_timeout(&session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_wait_timeout(&session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
ac_dfa_state_teardown(session, NULL);
|
ac_dfa_state_teardown(session);
|
||||||
|
|
||||||
/* Release reference session */
|
/* Release reference session */
|
||||||
ac_session_destroy(session);
|
ac_session_destroy(session);
|
||||||
@ -679,7 +464,7 @@ void ac_dfa_change_state(struct ac_session_t* session, int state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Teardown connection */
|
/* Teardown connection */
|
||||||
int ac_session_teardown_connection(struct ac_session_t* session) {
|
void ac_session_teardown(struct ac_session_t* session) {
|
||||||
ASSERT(session != NULL);
|
ASSERT(session != NULL);
|
||||||
|
|
||||||
/* Remove session from list */
|
/* Remove session from list */
|
||||||
@ -706,7 +491,6 @@ int ac_session_teardown_connection(struct ac_session_t* session) {
|
|||||||
capwap_killall_timeout(&session->timeout);
|
capwap_killall_timeout(&session->timeout);
|
||||||
capwap_set_timeout(session->dfa.rfcDTLSSessionDelete, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
capwap_set_timeout(session->dfa.rfcDTLSSessionDelete, &session->timeout, CAPWAP_TIMER_CONTROL_CONNECTION);
|
||||||
ac_dfa_change_state(session, CAPWAP_DTLS_TEARDOWN_STATE);
|
ac_dfa_change_state(session, CAPWAP_DTLS_TEARDOWN_STATE);
|
||||||
return AC_DFA_DROP_PACKET;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
@ -6,11 +6,6 @@
|
|||||||
#include "capwap_lock.h"
|
#include "capwap_lock.h"
|
||||||
#include "ac_soap.h"
|
#include "ac_soap.h"
|
||||||
|
|
||||||
#define AC_DFA_NO_PACKET 0
|
|
||||||
#define AC_DFA_ACCEPT_PACKET 1
|
|
||||||
#define AC_DFA_DROP_PACKET 2
|
|
||||||
#define AC_DFA_DEAD 3
|
|
||||||
|
|
||||||
/* AC packet */
|
/* AC packet */
|
||||||
struct ac_packet {
|
struct ac_packet {
|
||||||
int plainbuffer;
|
int plainbuffer;
|
||||||
@ -100,7 +95,8 @@ struct ac_session_t* ac_search_session_from_wtpid(const char* wtpid);
|
|||||||
char* ac_get_printable_wtpid(struct capwap_wtpboarddata_element* wtpboarddata);
|
char* ac_get_printable_wtpid(struct capwap_wtpboarddata_element* wtpboarddata);
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_session_teardown_connection(struct ac_session_t* session);
|
void ac_session_reset(struct ac_session_t* session);
|
||||||
|
void ac_session_teardown(struct ac_session_t* session);
|
||||||
void ac_session_close(struct ac_session_t* session);
|
void ac_session_close(struct ac_session_t* session);
|
||||||
void ac_session_release_reference(struct ac_session_t* session);
|
void ac_session_release_reference(struct ac_session_t* session);
|
||||||
|
|
||||||
@ -119,41 +115,20 @@ int ac_session_msgqueue_init(void);
|
|||||||
void ac_session_msgqueue_free(void);
|
void ac_session_msgqueue_free(void);
|
||||||
void ac_session_msgqueue_notify_closethread(pthread_t threadid);
|
void ac_session_msgqueue_notify_closethread(pthread_t threadid);
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_join(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
int ac_dfa_state_postjoin(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
int ac_dfa_state_join_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_bio_send(struct capwap_dtls* dtls, char* buffer, int length, void* param);
|
int ac_bio_send(struct capwap_dtls* dtls, char* buffer, int length, void* param);
|
||||||
int ac_dfa_state_dtlssetup(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
int ac_dtls_setup(struct ac_session_t* session);
|
||||||
int ac_dfa_state_dtlsconnect(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
int ac_dfa_state_dtlsconnect_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
int ac_dfa_state_configure(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
void ac_dfa_state_join(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
int ac_dfa_state_configure_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
void ac_dfa_state_postjoin(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
|
void ac_dfa_state_configure(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
/* */
|
void ac_dfa_state_datacheck(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
int ac_dfa_state_datacheck(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
void ac_dfa_state_datacheck_to_run(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
int ac_dfa_state_datacheck_to_run(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
void ac_dfa_state_imagedata(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
int ac_dfa_state_datacheck_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
void ac_dfa_state_run(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
|
void ac_dfa_state_reset(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
||||||
/* */
|
void ac_dfa_state_teardown(struct ac_session_t* session);
|
||||||
int ac_dfa_state_imagedata(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
int ac_dfa_state_imagedata_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_run(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
int ac_dfa_state_run_to_reset(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
int ac_dfa_state_run_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_reset(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
int ac_dfa_state_reset_to_dtlsteardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
|
|
||||||
/* */
|
|
||||||
int ac_dfa_state_teardown(struct ac_session_t* session, struct capwap_parsed_packet* packet);
|
|
||||||
|
|
||||||
/* Soap function */
|
/* Soap function */
|
||||||
struct ac_soap_response* ac_session_send_soap_request(struct ac_session_t* session, char* method, int numparam, ...);
|
struct ac_soap_response* ac_session_send_soap_request(struct ac_session_t* session, char* method, int numparam, ...);
|
||||||
|
Loading…
Reference in New Issue
Block a user