diff -r bad0cc58d154 -r c74b3d9f6b9e eapol/eapol_framework/eapol_common/core/eap_core.cpp --- a/eapol/eapol_framework/eapol_common/core/eap_core.cpp Tue Aug 31 15:16:37 2010 +0300 +++ b/eapol/eapol_framework/eapol_common/core/eap_core.cpp Wed Sep 01 12:23:57 2010 +0100 @@ -16,7 +16,7 @@ */ /* -* %version: 58.1.12 % +* %version: 63 % */ // This is enumeration of EAPOL source code. @@ -242,7 +242,7 @@ //-------------------------------------------------- // -EAP_FUNC_EXPORT eap_status_e eap_core_c::initialize_asynchronous_init_remove_eap_session( +eap_status_e eap_core_c::initialize_asynchronous_init_remove_eap_session( const u32_t remove_session_timeout) { EAP_TRACE_DEBUG( @@ -314,7 +314,7 @@ //-------------------------------------------------- -EAP_FUNC_EXPORT eap_status_e eap_core_c::cancel_asynchronous_init_remove_eap_session() +eap_status_e eap_core_c::cancel_asynchronous_init_remove_eap_session() { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -343,7 +343,7 @@ //-------------------------------------------------- // -EAP_FUNC_EXPORT eap_status_e eap_core_c::asynchronous_init_remove_eap_session() +eap_status_e eap_core_c::asynchronous_init_remove_eap_session() { EAP_TRACE_DEBUG( m_am_tools, @@ -383,13 +383,29 @@ // Remove session only if the stack is not already being deleted if (m_shutdown_was_called == false) { - #if defined(USE_EAP_CORE_SIMULATOR_VERSION) + #if defined(USE_EAPOL_KEY_STATE) && defined(USE_EAP_CORE_RESTART_AUTHENTICATION) + #error ERROR: USE_EAPOL_KEY_STATE and USE_EAP_CORE_RESTART_AUTHENTICATION cannot be used same time. + #endif //#if defined(USE_EAPOL_KEY_STATE) && defined(USE_EAP_CORE_RESTART_AUTHENTICATION) + + #if defined(USE_EAP_CORE_SIMULATOR_VERSION) && defined(USE_EAP_CORE_RESTART_AUTHENTICATION) + + // Simulator reuses current session. + status = restart_authentication( + state->get_send_network_id(), + m_is_client); + if (status != eap_status_ok) + { + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); + } + + #elif defined(USE_EAP_CORE_SIMULATOR_VERSION) && defined(USE_EAPOL_KEY_STATE) EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ") - EAPL("Protocol layer %d, EAP-type 0x%02x, State transition from ") + EAPL("Protocol layer %d, EAP type 0x%02x, State transition from ") EAPL("%d=%s to %d=%s, client %d.\n"), (m_is_client == true) ? "client": "server", (m_is_tunneled_eap == true) ? "tunneled": "outer most", @@ -417,7 +433,7 @@ m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ") - EAPL("Protocol layer %d, EAP-type 0x%02x, State transition from ") + EAPL("Protocol layer %d, EAP type 0x%02x, State transition from ") EAPL("%d=%s to %d=%s, client %d when shutdown was called.\n"), (m_is_client == true) ? "client": "server", (m_is_tunneled_eap == true) ? "tunneled": "outer most", @@ -444,21 +460,22 @@ EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); eap_status_string_c status_string; + eap_header_string_c eap_string; EAP_UNREFERENCED_PARAMETER(status_string); // in release + EAP_UNREFERENCED_PARAMETER(eap_string); // in release EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("eap_core_c::state_notification(), %s, %s, protocol_layer %d=%s, protocol %d=%s, EAP-type 0xfe%06x%08x=%s.\n"), + (EAPL("eap_core_c::state_notification(), %s, %s, protocol_layer %d=%s, protocol %d=%s, EAP-type 0x%08x=%s.\n"), (m_is_client == true) ? "client": "server", (m_is_tunneled_eap == true) ? "tunneled": "outer most", state->get_protocol_layer(), state->get_protocol_layer_string(), state->get_protocol(), state->get_protocol_string(), - state->get_eap_type().get_vendor_id(), - state->get_eap_type().get_vendor_type(), - eap_header_string_c::get_eap_type_string(state->get_eap_type()))); + convert_eap_type_to_u32_t(state->get_eap_type()), + eap_string.get_eap_type_string(state->get_eap_type()))); EAP_TRACE_DEBUG( m_am_tools, @@ -489,7 +506,7 @@ m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ") - EAPL("Protocol layer %d, non-active EAP-type 0x%02x, current EAP type 0x%08x, State transition from ") + EAPL("Protocol layer %d, non-active EAP type 0x%02x, current EAP type 0x%08x, State transition from ") EAPL("%d=%s to %d=%s, client %d\n"), (m_is_client == true) ? "client": "server", (m_is_tunneled_eap == true) ? "tunneled": "outer most", @@ -774,14 +791,9 @@ { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); - eap_status_e status(eap_status_ok); - - if (m_am_tools != 0) - { - status = m_partner->cancel_timer( - this, - EAP_CORE_SESSION_TIMEOUT_ID); - } + eap_status_e status = m_partner->cancel_timer( + this, + EAP_CORE_SESSION_TIMEOUT_ID); EAP_UNREFERENCED_PARAMETER(status); // in release @@ -1300,9 +1312,9 @@ } } #endif //#if defined(USE_EAP_CORE_SERVER) - else if (((eap.get_code() == eap_code_request + else if ((eap.get_code() == eap_code_request || eap.get_code() == eap_code_response) - && eap.get_type() == used_eap_type) + && eap.get_type() == used_eap_type || eap.get_code() == eap_code_success || eap.get_code() == eap_code_failure) { @@ -1512,15 +1524,17 @@ #if defined (_DEBUG) if (m_retransmission != 0) { + eap_header_string_c eap_string; + EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, (EAPL("EAP_Core: eap_core_c::packet_process(): %s, retransmission counter %d, retrans EAP-type %s, retrans EAP-Id %d, current EAP-type %s, current EAP-Id %d, session 0x%08x.\n"), (m_is_client_role == true) ? "client": "server", m_retransmission->get_retransmission_counter(), - eap_header_string_c::get_eap_type_string(m_retransmission->get_eap_type()), + eap_string.get_eap_type_string(m_retransmission->get_eap_type()), m_retransmission->get_eap_identifier(), - eap_header_string_c::get_eap_type_string(eap.get_type()), + eap_string.get_eap_type_string(eap.get_type()), eap.get_identifier(), this)); } @@ -2209,8 +2223,7 @@ (m_is_tunneled_eap == true) ? "tunneled": "outer most" )); - if (m_is_client_role == false - && m_partner != 0) + if (m_is_client_role == false) { // Only EAP-server uses timer to re-transmits EAP-packets. m_partner->cancel_timer(this, EAP_CORE_TIMER_RETRANSMISSION_ID); @@ -2391,16 +2404,9 @@ (m_is_tunneled_eap == true) ? "tunneled": "outer most" )); - eap_status_e status(eap_status_ok); - - if (m_am_tools != 0) - { - status = m_partner->cancel_timer( - this, - EAP_CORE_FAILURE_RECEIVED_ID); - } - - return EAP_STATUS_RETURN(m_am_tools, status); + return m_partner->cancel_timer( + this, + EAP_CORE_FAILURE_RECEIVED_ID); } //-------------------------------------------------- @@ -2468,16 +2474,9 @@ m_wait_eap_request_type_timeout_set = false; - eap_status_e status(eap_status_ok); - - if (m_am_tools != 0) - { - m_partner->cancel_timer( - this, - EAP_CORE_WAIT_EAP_REQUEST_TYPE_ID); - } - - return EAP_STATUS_RETURN(m_am_tools, status); + return m_partner->cancel_timer( + this, + EAP_CORE_WAIT_EAP_REQUEST_TYPE_ID); } else { @@ -3015,6 +3014,7 @@ //---------------------------------------------------------- +#if defined(USE_EAP_EXPANDED_TYPES) { eap_variable_data_c use_eap_expanded_type(m_am_tools); @@ -3040,6 +3040,7 @@ } } } +#endif //#if defined(USE_EAP_EXPANDED_TYPES) //---------------------------------------------------------- @@ -5402,12 +5403,10 @@ EAP_TRACE_DEBUG( m_am_tools, TRACE_FLAGS_DEFAULT, - (EAPL("WARNING: %s, %s, EAP-identity is unknown: current EAP-type 0xfe%06x%08x=%s\n"), + (EAPL("WARNING: %s, %s, EAP-identity is unknown: current EAP-type 0x%08x\n"), (m_is_client == true) ? "client": "server", (m_is_tunneled_eap == true) ? "tunneled": "outer most", - m_current_eap_type.get_vendor_id(), - m_current_eap_type.get_vendor_type(), - eap_header_string_c::get_eap_type_string(m_current_eap_type))); + convert_eap_type_to_u32_t(m_current_eap_type))); } EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); @@ -5489,6 +5488,21 @@ //-------------------------------------------------- +// +EAP_FUNC_EXPORT eap_status_e eap_core_c::cancel_all_timers() +{ + EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT); + + EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true); + + const eap_status_e status = m_partner->cancel_all_timers(); + + EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT); + return EAP_STATUS_RETURN(m_am_tools, status); +} + +//-------------------------------------------------- + EAP_FUNC_EXPORT eap_status_e eap_core_c::set_authentication_role(const bool when_true_set_client) { EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);