eapol/eapol_framework/eapol_common/core/eap_core.cpp
branchRCL_3
changeset 46 c74b3d9f6b9e
parent 45 bad0cc58d154
--- 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);