static void ac_dfa_execute(struct ac_session_t* session, struct capwap_parsed_packet* packet) { ASSERT(session != NULL); ASSERT(packet != NULL); /* Execute state */ switch (session->state) { case CAPWAP_DTLS_CONNECT_STATE: { ac_session_teardown(session); break; } case CAPWAP_JOIN_STATE: { ac_dfa_state_join(session, packet); break; } case CAPWAP_POSTJOIN_STATE: { ac_dfa_state_postjoin(session, packet); break; } case CAPWAP_IMAGE_DATA_STATE: { ac_dfa_state_imagedata(session, packet); break; } case CAPWAP_CONFIGURE_STATE: { ac_dfa_state_configure(session, packet); break; } case CAPWAP_RESET_STATE: { ac_dfa_state_reset(session, packet); break; } case CAPWAP_DATA_CHECK_STATE: { ac_dfa_state_datacheck(session, packet); break; } case CAPWAP_RUN_STATE: { ac_dfa_state_run(session, packet); break; } default: { capwap_logging_debug("Unknown AC action event: %lu", session->state); ac_session_teardown(session); break; } } }
void ac_dfa_state_postjoin(struct ac_session_t* session, struct capwap_parsed_packet* packet) { ASSERT(session != NULL); ASSERT(packet != NULL); if (packet->rxmngpacket->ctrlmsg.type == CAPWAP_CONFIGURATION_STATUS_REQUEST) { ac_dfa_change_state(session, CAPWAP_CONFIGURE_STATE); ac_dfa_state_configure(session, packet); } else if (packet->rxmngpacket->ctrlmsg.type == CAPWAP_IMAGE_DATA_REQUEST) { ac_dfa_change_state(session, CAPWAP_IMAGE_DATA_STATE); ac_dfa_state_imagedata(session, packet); } else { ac_session_teardown(session); } }