eapol/eapol_framework/eapol_common/core/eap_core_server_message_if.cpp
changeset 49 43351a4f2da3
parent 36 c98682f98478
equal deleted inserted replaced
47:712b4ffd76bb 49:43351a4f2da3
    14 * Description:  EAP and WLAN authentication protocols.
    14 * Description:  EAP and WLAN authentication protocols.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 33 %
    19 * %version: 36 %
    20 */
    20 */
    21 
    21 
    22 // This is enumeration of EAPOL source code.
    22 // This is enumeration of EAPOL source code.
    23 #if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
    23 #if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
    24 	#undef EAP_FILE_NUMBER_ENUM
    24 	#undef EAP_FILE_NUMBER_ENUM
    49 {
    49 {
    50 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
    50 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
    51 
    51 
    52 	EAP_TRACE_DEBUG(
    52 	EAP_TRACE_DEBUG(
    53 		m_am_tools, 
    53 		m_am_tools, 
    54 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
    54 		TRACE_FLAGS_DEFAULT, 
    55 		(EAPL("eap_core_server_message_if_c::~eap_core_server_message_if_c(): this = 0x%08x\n"),
    55 		(EAPL("eap_core_server_message_if_c::~eap_core_server_message_if_c(): this = 0x%08x\n"),
    56 		this));
    56 		this));
    57 
    57 
    58 	EAP_ASSERT(m_shutdown_was_called == true);
    58 	EAP_ASSERT(m_shutdown_was_called == true);
    59 
    59 
    89 {
    89 {
    90 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
    90 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
    91 
    91 
    92 	EAP_TRACE_DEBUG(
    92 	EAP_TRACE_DEBUG(
    93 		m_am_tools, 
    93 		m_am_tools, 
    94 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
    94 		TRACE_FLAGS_DEFAULT, 
    95 		(EAPL("eap_core_server_message_if_c::eap_core_server_message_if_c(): %s, this = 0x%08x => 0x%08x, compiled %s %s.\n"),
    95 		(EAPL("eap_core_server_message_if_c::eap_core_server_message_if_c(): %s, this = 0x%08x => 0x%08x, compiled %s %s.\n"),
    96 		(m_is_client == true) ? "client": "server",
    96 		(m_is_client == true) ? "client": "server",
    97 		this,
    97 		this,
    98 		dynamic_cast<abs_eap_base_timer_c *>(this),
    98 		dynamic_cast<abs_eap_base_timer_c *>(this),
    99 		__DATE__,
    99 		__DATE__,
   118 {
   118 {
   119 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   119 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   120 
   120 
   121 	EAP_TRACE_DEBUG(
   121 	EAP_TRACE_DEBUG(
   122 		m_am_tools,
   122 		m_am_tools,
   123 		EAP_TRACE_FLAGS_MESSAGE_DATA,
   123 		TRACE_FLAGS_DEFAULT,
   124 		(EAPL("%s: eap_core_server_message_if_c::configure()\n"),
   124 		(EAPL("%s: eap_core_server_message_if_c::configure()\n"),
   125 		(m_is_client == true) ? "client": "server"));
   125 		(m_is_client == true) ? "client": "server"));
   126 
   126 
   127 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::configure()");
   127 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::configure()");
   128 
   128 
   129 	eap_status_e status(eap_status_process_general_error);
   129 	eap_status_e status(eap_status_process_general_error);
   130 
   130 
   131 	m_eap_header_offset = 0ul;
   131 	m_eap_header_offset = 0ul;
   132 	m_trailer_length = 0ul;
   132 	m_trailer_length = 0ul;
   171 //
   171 //
   172 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::shutdown()
   172 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::shutdown()
   173 {
   173 {
   174 	EAP_TRACE_DEBUG(
   174 	EAP_TRACE_DEBUG(
   175 		m_am_tools,
   175 		m_am_tools,
   176 		EAP_TRACE_FLAGS_MESSAGE_DATA,
   176 		TRACE_FLAGS_DEFAULT,
   177 		(EAPL("%s: eap_core_server_message_if_c::shutdown(), m_shutdown_was_called=%d\n"),
   177 		(EAPL("%s: eap_core_server_message_if_c::shutdown(), m_shutdown_was_called=%d\n"),
   178 		(m_is_client == true) ? "client": "server",
   178 		(m_is_client == true) ? "client": "server",
   179 		m_shutdown_was_called));
   179 		m_shutdown_was_called));
   180 
   180 
   181 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::shutdown()");
   181 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::shutdown()");
   182 
   182 
   183 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   183 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   184 
   184 
   185 	if (m_shutdown_was_called == true)
   185 	if (m_shutdown_was_called == true)
   186 	{
   186 	{
   214 
   214 
   215 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::send_error_message(
   215 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::send_error_message(
   216 	const eap_status_e error_code,
   216 	const eap_status_e error_code,
   217 	const eap_tlv_message_type_function_e function)
   217 	const eap_tlv_message_type_function_e function)
   218 {
   218 {
       
   219 	EAP_TRACE_DEBUG(
       
   220 		m_am_tools, 
       
   221 		TRACE_FLAGS_DEFAULT, 
       
   222 		(EAPL("%s: eap_core_server_message_if_c::send_error_message()\n"),
       
   223 		 (m_is_client == true) ? "client": "server"));
       
   224 
       
   225 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::send_error_message()");
       
   226 
   219 	eap_status_e status(eap_status_ok);
   227 	eap_status_e status(eap_status_ok);
   220 
   228 
   221 	{
   229 	{
   222 		// Creates message data composed of Attribute-Value Pairs.
   230 		// Creates message data composed of Attribute-Value Pairs.
   223 		eap_process_tlv_message_data_c message(m_am_tools);
   231 		eap_process_tlv_message_data_c message(m_am_tools);
   262 {
   270 {
   263 	// Sends message data composed of Attribute-Value Pairs.
   271 	// Sends message data composed of Attribute-Value Pairs.
   264 
   272 
   265 	EAP_TRACE_DEBUG(
   273 	EAP_TRACE_DEBUG(
   266 		m_am_tools, 
   274 		m_am_tools, 
   267 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
   275 		TRACE_FLAGS_DEFAULT, 
   268 		(EAPL("eap_core_server_message_if_c::send_message(): this = 0x%08x => 0x%08x.\n"),
   276 		(EAPL("eap_core_server_message_if_c::send_message(): this = 0x%08x => 0x%08x.\n"),
   269 		this,
   277 		this,
   270 		dynamic_cast<abs_eap_base_timer_c *>(this)));
   278 		dynamic_cast<abs_eap_base_timer_c *>(this)));
   271 
   279 
   272 	EAP_TRACE_DATA_DEBUG(
   280 	EAP_TRACE_DATA_DEBUG(
   274 		EAP_TRACE_FLAGS_NEVER,
   282 		EAP_TRACE_FLAGS_NEVER,
   275 		(EAPL("eap_core_client_message_if_c::send_message()"),
   283 		(EAPL("eap_core_client_message_if_c::send_message()"),
   276 		message->get_message_data(),
   284 		message->get_message_data(),
   277 		message->get_message_data_length()));
   285 		message->get_message_data_length()));
   278 
   286 
   279 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_client_message_if_c::send_message()");
   287 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_client_message_if_c::send_message()");
   280 
   288 
   281 
   289 
   282 	{
   290 	{
   283 		eap_status_e send_status = m_partner->send_data(
   291 		eap_status_e send_status = m_partner->send_data(
   284 			message->get_message_data(),
   292 			message->get_message_data(),
   299 //--------------------------------------------------
   307 //--------------------------------------------------
   300 
   308 
   301 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::process_message_type_error(
   309 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::process_message_type_error(
   302 	EAP_TEMPLATE_CONST eap_array_c<eap_tlv_header_c> * const parameters)
   310 	EAP_TEMPLATE_CONST eap_array_c<eap_tlv_header_c> * const parameters)
   303 {
   311 {
       
   312 	EAP_TRACE_DEBUG(
       
   313 		m_am_tools, 
       
   314 		TRACE_FLAGS_DEFAULT, 
       
   315 		(EAPL("%s: eap_core_server_message_if_c::process_message_type_error()\n"),
       
   316 		 (m_is_client == true) ? "client": "server"));
       
   317 
       
   318 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::process_message_type_error()");
       
   319 
   304 	eap_status_e status(eap_status_ok);
   320 	eap_status_e status(eap_status_ok);
   305 
   321 
   306 	eap_process_tlv_message_data_c message_data(m_am_tools);
   322 	eap_process_tlv_message_data_c message_data(m_am_tools);
   307 
   323 
   308 	if (message_data.get_is_valid() == false)
   324 	if (message_data.get_is_valid() == false)
   335 
   351 
   336 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::process_message(eap_process_tlv_message_data_c * const message)
   352 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::process_message(eap_process_tlv_message_data_c * const message)
   337 {
   353 {
   338 	// Parses message data composed of Attribute-Value Pairs.
   354 	// Parses message data composed of Attribute-Value Pairs.
   339 
   355 
       
   356 	EAP_TRACE_DEBUG(
       
   357 		m_am_tools, 
       
   358 		TRACE_FLAGS_DEFAULT, 
       
   359 		(EAPL("%s: eap_core_server_message_if_c::process_message()\n"),
       
   360 		 (m_is_client == true) ? "client": "server"));
       
   361 
       
   362 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::process_message()");
       
   363 
   340 	EAP_TRACE_DATA_DEBUG(
   364 	EAP_TRACE_DATA_DEBUG(
   341 		m_am_tools,
   365 		m_am_tools,
   342 		EAP_TRACE_FLAGS_MESSAGE_DATA,
   366 		EAP_TRACE_FLAGS_NEVER,
   343 		(EAPL("eap_core_server_message_if_c::process_message()"),
   367 		(EAPL("eap_core_server_message_if_c::process_message()"),
   344 		message->get_message_data(),
   368 		message->get_message_data(),
   345 		message->get_message_data_length()));
   369 		message->get_message_data_length()));
   346 
       
   347 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::process_message()");
       
   348 
   370 
   349 	eap_array_c<eap_tlv_header_c> parameters(m_am_tools);
   371 	eap_array_c<eap_tlv_header_c> parameters(m_am_tools);
   350 
   372 
   351 	eap_status_e status = message->parse_message_data(&parameters);
   373 	eap_status_e status = message->parse_message_data(&parameters);
   352 	if (status != eap_status_ok)
   374 	if (status != eap_status_ok)
   406 				status,
   428 				status,
   407 				eap_tlv_message_type_function_none);
   429 				eap_tlv_message_type_function_none);
   408 
   430 
   409 			return EAP_STATUS_RETURN(m_am_tools, status);
   431 			return EAP_STATUS_RETURN(m_am_tools, status);
   410 		}
   432 		}
       
   433 
       
   434 		EAP_TRACE_DEBUG(
       
   435 			m_am_tools, 
       
   436 			TRACE_FLAGS_DEFAULT, 
       
   437 			(EAPL("eap_core_server_message_if_c::process_message(): this = 0x%08x, message=%d=%s\n"),
       
   438 			this,
       
   439 			function,
       
   440 			eap_process_tlv_message_data_c::get_function_string(function)));
   411 
   441 
   412 		switch(function)
   442 		switch(function)
   413 		{
   443 		{
   414 		case eap_tlv_message_type_function_create_eap_session:
   444 		case eap_tlv_message_type_function_create_eap_session:
   415 			status = create_eap_session(&parameters);
   445 			status = create_eap_session(&parameters);
   468 /// Function receives the data message from lower layer.
   498 /// Function receives the data message from lower layer.
   469 /// Data is formatted to Attribute-Value Pairs.
   499 /// Data is formatted to Attribute-Value Pairs.
   470 /// Look at eap_tlv_header_c and eap_tlv_message_data_c.
   500 /// Look at eap_tlv_header_c and eap_tlv_message_data_c.
   471 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::process_data(const void * const data, const u32_t length)
   501 EAP_FUNC_EXPORT eap_status_e eap_core_server_message_if_c::process_data(const void * const data, const u32_t length)
   472 {
   502 {
       
   503 	EAP_TRACE_DEBUG(
       
   504 		m_am_tools, 
       
   505 		TRACE_FLAGS_DEFAULT, 
       
   506 		(EAPL("%s: eap_core_server_message_if_c::process_data()\n"),
       
   507 		 (m_is_client == true) ? "client": "server"));
       
   508 
       
   509 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::process_data()");
       
   510 
   473 	eap_status_e status(eap_status_process_general_error);
   511 	eap_status_e status(eap_status_process_general_error);
   474 
   512 
   475 	{
   513 	{
   476 		eap_process_tlv_message_data_c message(m_am_tools);
   514 		eap_process_tlv_message_data_c message(m_am_tools);
   477 
   515 
   515 	eap_buf_chain_wr_c * const sent_packet,
   553 	eap_buf_chain_wr_c * const sent_packet,
   516 	const u32_t header_offset,
   554 	const u32_t header_offset,
   517 	const u32_t data_length,
   555 	const u32_t data_length,
   518 	const u32_t buffer_length)
   556 	const u32_t buffer_length)
   519 {
   557 {
       
   558 	EAP_TRACE_DEBUG(
       
   559 		m_am_tools, 
       
   560 		TRACE_FLAGS_DEFAULT, 
       
   561 		(EAPL("%s: eap_core_server_message_if_c::packet_send()\n"),
       
   562 		 (m_is_client == true) ? "client": "server"));
       
   563 
       
   564 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::packet_send()");
       
   565 
   520 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   566 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   521 
   567 
   522 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   568 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   523 	EAP_ASSERT(header_offset < sent_packet->get_data_length());
   569 	EAP_ASSERT(header_offset < sent_packet->get_data_length());
   524 	EAP_ASSERT(data_length <= sent_packet->get_data_length());
   570 	EAP_ASSERT(data_length <= sent_packet->get_data_length());
   708 {
   754 {
   709 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   755 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   710 
   756 
   711 	EAP_TRACE_DEBUG(
   757 	EAP_TRACE_DEBUG(
   712 		m_am_tools,
   758 		m_am_tools,
   713 		EAP_TRACE_FLAGS_MESSAGE_DATA,
   759 		TRACE_FLAGS_DEFAULT,
   714 		(EAPL("%s: eap_core_server_message_if_c::packet_data_crypto_keys()\n"),
   760 		(EAPL("%s: eap_core_server_message_if_c::packet_data_crypto_keys()\n"),
   715 		(m_is_client == true) ? "client": "server"));
   761 		(m_is_client == true) ? "client": "server"));
   716 
   762 
   717 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::packet_data_crypto_keys()");
   763 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::packet_data_crypto_keys()");
   718 
   764 
   719 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   765 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   720 
   766 
   721 	eap_status_e status(eap_status_process_general_error);
   767 	eap_status_e status(eap_status_process_general_error);
   722 
   768 
   799 {
   845 {
   800 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   846 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   801 
   847 
   802 	EAP_TRACE_DEBUG(
   848 	EAP_TRACE_DEBUG(
   803 		m_am_tools,
   849 		m_am_tools,
   804 		EAP_TRACE_FLAGS_MESSAGE_DATA,
   850 		TRACE_FLAGS_DEFAULT,
   805 		(EAPL("%s: eap_core_server_message_if_c::complete_get_802_11_authentication_mode()\n"),
   851 		(EAPL("%s: eap_core_server_message_if_c::complete_get_802_11_authentication_mode()\n"),
   806 		(m_is_client == true) ? "client": "server"));
   852 		(m_is_client == true) ? "client": "server"));
   807 
   853 
   808 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::complete_get_802_11_authentication_mode()");
   854 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::complete_get_802_11_authentication_mode()");
   809 
   855 
   810 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   856 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   811 
   857 
   812 	eap_status_e status(eap_status_process_general_error);
   858 	eap_status_e status(eap_status_process_general_error);
   813 
   859 
   870 {
   916 {
   871 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   917 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   872 
   918 
   873 	EAP_TRACE_DEBUG(
   919 	EAP_TRACE_DEBUG(
   874 		m_am_tools,
   920 		m_am_tools,
   875 		EAP_TRACE_FLAGS_MESSAGE_DATA,
   921 		TRACE_FLAGS_DEFAULT,
   876 		(EAPL("%s: eap_core_server_message_if_c::complete_remove_eap_session(): complete_to_lower_layer=%s\n"),
   922 		(EAPL("%s: eap_core_server_message_if_c::complete_remove_eap_session(): complete_to_lower_layer=%s\n"),
   877 		(m_is_client == true) ? "client": "server",
   923 		(m_is_client == true) ? "client": "server",
   878 		(complete_to_lower_layer == true) ? "true": "false"));
   924 		(complete_to_lower_layer == true) ? "true": "false"));
   879 
   925 
   880 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::complete_remove_eap_session()");
   926 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::complete_remove_eap_session()");
   881 
   927 
   882 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   928 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
   883 
   929 
   884 	eap_status_e status(eap_status_process_general_error);
   930 	eap_status_e status(eap_status_process_general_error);
   885 
   931 
   989 	EAP_UNREFERENCED_PARAMETER(data);
  1035 	EAP_UNREFERENCED_PARAMETER(data);
   990 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1036 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   991 
  1037 
   992 	EAP_TRACE_DEBUG(
  1038 	EAP_TRACE_DEBUG(
   993 		m_am_tools,
  1039 		m_am_tools,
   994 		EAP_TRACE_FLAGS_MESSAGE_DATA,
  1040 		TRACE_FLAGS_DEFAULT,
   995 		(EAPL("TIMER: %s: [0x%08x]->eap_core_server_message_if_c::timer_expired(id 0x%02x, data 0x%08x).\n"),
  1041 		(EAPL("TIMER: %s: [0x%08x]->eap_core_server_message_if_c::timer_expired(id 0x%02x, data 0x%08x).\n"),
   996 		 (m_is_client == true) ? "client": "server",
  1042 		 (m_is_client == true) ? "client": "server",
   997 		 this,
  1043 		 this,
   998 		 id,
  1044 		 id,
   999 		 data));
  1045 		 data));
  1000 
  1046 
  1001 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::timer_expired()");
  1047 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::timer_expired()");
  1002 
  1048 
  1003 
  1049 
  1004 	return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
  1050 	return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
  1005 }
  1051 }
  1006 
  1052 
  1014 	EAP_UNREFERENCED_PARAMETER(data);
  1060 	EAP_UNREFERENCED_PARAMETER(data);
  1015 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1061 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1016 
  1062 
  1017 	EAP_TRACE_DEBUG(
  1063 	EAP_TRACE_DEBUG(
  1018 		m_am_tools,
  1064 		m_am_tools,
  1019 		EAP_TRACE_FLAGS_MESSAGE_DATA,
  1065 		TRACE_FLAGS_DEFAULT,
  1020 		(EAPL("TIMER: %s: [0x%08x]->eap_core_server_message_if_c::timer_delete_data(id 0x%02x, data 0x%08x).\n"),
  1066 		(EAPL("TIMER: %s: [0x%08x]->eap_core_server_message_if_c::timer_delete_data(id 0x%02x, data 0x%08x).\n"),
  1021 		(m_is_client == true) ? "client": "server",
  1067 		(m_is_client == true) ? "client": "server",
  1022 		this, id, data));
  1068 		this, id, data));
  1023 
  1069 
  1024 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::timer_delete_data()");
  1070 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::timer_delete_data()");
  1025 
  1071 
  1026 	return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
  1072 	return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
  1027 }
  1073 }
  1028 
  1074 
  1029 //--------------------------------------------------
  1075 //--------------------------------------------------
  1033 {
  1079 {
  1034 	eap_status_e status(eap_status_process_general_error);
  1080 	eap_status_e status(eap_status_process_general_error);
  1035 
  1081 
  1036 	EAP_TRACE_DEBUG(
  1082 	EAP_TRACE_DEBUG(
  1037 		m_am_tools, 
  1083 		m_am_tools, 
  1038 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1084 		TRACE_FLAGS_DEFAULT, 
  1039 		(EAPL("%s: eap_core_server_message_if_c::state_notification()\n"),
  1085 		(EAPL("%s: eap_core_server_message_if_c::state_notification()\n"),
  1040 		 (m_is_client == true) ? "client": "server"));
  1086 		 (m_is_client == true) ? "client": "server"));
  1041 
  1087 
  1042 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::state_notification()");
  1088 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::state_notification()");
  1043 
  1089 
  1044 	{
  1090 	{
  1045 		// Creates message data composed of Attribute-Value Pairs.
  1091 		// Creates message data composed of Attribute-Value Pairs.
  1046 		eap_process_tlv_message_data_c message(m_am_tools);
  1092 		eap_process_tlv_message_data_c message(m_am_tools);
  1047 
  1093 
  1109 {
  1155 {
  1110 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1156 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1111 
  1157 
  1112 	EAP_TRACE_DEBUG(
  1158 	EAP_TRACE_DEBUG(
  1113 		m_am_tools,
  1159 		m_am_tools,
  1114 		EAP_TRACE_FLAGS_MESSAGE_DATA,
  1160 		TRACE_FLAGS_DEFAULT,
  1115 		(EAPL("%s: eap_core_server_message_if_c::restart_authentication()\n"),
  1161 		(EAPL("%s: eap_core_server_message_if_c::restart_authentication()\n"),
  1116 		(m_is_client == true) ? "client": "server"));
  1162 		(m_is_client == true) ? "client": "server"));
  1117 
  1163 
  1118 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::restart_authentication()");
  1164 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::restart_authentication()");
  1119 
  1165 
  1120 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
  1166 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
  1121 
  1167 
  1122 	eap_status_e status(eap_status_process_general_error);
  1168 	eap_status_e status(eap_status_process_general_error);
  1123 
  1169 
  1261 {
  1307 {
  1262 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1308 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1263 
  1309 
  1264 	EAP_TRACE_DEBUG(
  1310 	EAP_TRACE_DEBUG(
  1265 		m_am_tools, 
  1311 		m_am_tools, 
  1266 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1312 		TRACE_FLAGS_DEFAULT, 
  1267 		(EAPL("%s: eap_core_server_message_if_c::add_rogue_ap(): Does nothing.\n"),
  1313 		(EAPL("%s: eap_core_server_message_if_c::add_rogue_ap(): Does nothing.\n"),
  1268 		 (m_is_client == true) ? "client": "server"));
  1314 		 (m_is_client == true) ? "client": "server"));
  1269 
  1315 
  1270 	eap_status_e status(eap_status_ok);
  1316 	eap_status_e status(eap_status_ok);
  1271 
  1317 
  1294 {
  1340 {
  1295 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1341 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1296 
  1342 
  1297 	EAP_TRACE_DEBUG(
  1343 	EAP_TRACE_DEBUG(
  1298 		m_am_tools, 
  1344 		m_am_tools, 
  1299 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1345 		TRACE_FLAGS_DEFAULT, 
  1300 		(EAPL("%s: eap_core_server_message_if_c::create_eap_session()\n"),
  1346 		(EAPL("%s: eap_core_server_message_if_c::create_eap_session()\n"),
  1301 		 (m_is_client == true) ? "client": "server"));
  1347 		 (m_is_client == true) ? "client": "server"));
  1302 
  1348 
  1303 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::create_eap_session()");
  1349 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::create_eap_session()");
  1304 
  1350 
  1305 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1351 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1306 
  1352 
  1307 	eap_status_e status(eap_status_ok);
  1353 	eap_status_e status(eap_status_ok);
  1308 
  1354 
  1346 {
  1392 {
  1347 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1393 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1348 
  1394 
  1349 	EAP_TRACE_DEBUG(
  1395 	EAP_TRACE_DEBUG(
  1350 		m_am_tools, 
  1396 		m_am_tools, 
  1351 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1397 		TRACE_FLAGS_DEFAULT, 
  1352 		(EAPL("%s: eap_core_server_message_if_c::remove_eap_session()\n"),
  1398 		(EAPL("%s: eap_core_server_message_if_c::remove_eap_session()\n"),
  1353 		 (m_is_client == true) ? "client": "server"));
  1399 		 (m_is_client == true) ? "client": "server"));
  1354 
  1400 
  1355 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::remove_eap_session()");
  1401 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::remove_eap_session()");
  1356 
  1402 
  1357 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1403 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1358 
  1404 
  1359 	eap_status_e status(eap_status_ok);
  1405 	eap_status_e status(eap_status_ok);
  1360 
  1406 
  1420 {
  1466 {
  1421 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1467 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1422 
  1468 
  1423 	EAP_TRACE_DEBUG(
  1469 	EAP_TRACE_DEBUG(
  1424 		m_am_tools, 
  1470 		m_am_tools, 
  1425 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1471 		TRACE_FLAGS_DEFAULT, 
  1426 		(EAPL("%s: eap_core_server_message_if_c::send_eap_identity_request()\n"),
  1472 		(EAPL("%s: eap_core_server_message_if_c::send_eap_identity_request()\n"),
  1427 		 (m_is_client == true) ? "client": "server"));
  1473 		 (m_is_client == true) ? "client": "server"));
  1428 
  1474 
  1429 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::send_eap_identity_request()");
  1475 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::send_eap_identity_request()");
  1430 
  1476 
  1431 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1477 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1432 
  1478 
  1433 	eap_status_e status(eap_status_ok);
  1479 	eap_status_e status(eap_status_ok);
  1434 
  1480 
  1472 {
  1518 {
  1473 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1519 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1474 
  1520 
  1475 	EAP_TRACE_DEBUG(
  1521 	EAP_TRACE_DEBUG(
  1476 		m_am_tools, 
  1522 		m_am_tools, 
  1477 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1523 		TRACE_FLAGS_DEFAULT, 
  1478 		(EAPL("%s: eap_core_server_message_if_c::packet_process()\n"),
  1524 		(EAPL("%s: eap_core_server_message_if_c::packet_process()\n"),
  1479 		 (m_is_client == true) ? "client": "server"));
  1525 		 (m_is_client == true) ? "client": "server"));
  1480 
  1526 
  1481 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::packet_process()");
  1527 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::packet_process()");
  1482 
  1528 
  1483 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1529 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1484 
  1530 
  1485 	eap_status_e status(eap_status_ok);
  1531 	eap_status_e status(eap_status_ok);
  1486 
  1532 
  1549 {
  1595 {
  1550 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1596 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1551 
  1597 
  1552 	EAP_TRACE_DEBUG(
  1598 	EAP_TRACE_DEBUG(
  1553 		m_am_tools, 
  1599 		m_am_tools, 
  1554 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1600 		TRACE_FLAGS_DEFAULT, 
  1555 		(EAPL("%s: eap_core_server_message_if_c::eap_acknowledge()\n"),
  1601 		(EAPL("%s: eap_core_server_message_if_c::eap_acknowledge()\n"),
  1556 		 (m_is_client == true) ? "client": "server"));
  1602 		 (m_is_client == true) ? "client": "server"));
  1557 
  1603 
  1558 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::eap_acknowledge()");
  1604 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::eap_acknowledge()");
  1559 
  1605 
  1560 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1606 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1561 
  1607 
  1562 	eap_status_e status(eap_status_ok);
  1608 	eap_status_e status(eap_status_ok);
  1563 
  1609 
  1601 {
  1647 {
  1602 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1648 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1603 
  1649 
  1604 	EAP_TRACE_DEBUG(
  1650 	EAP_TRACE_DEBUG(
  1605 		m_am_tools, 
  1651 		m_am_tools, 
  1606 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1652 		TRACE_FLAGS_DEFAULT, 
  1607 		(EAPL("%s: eap_core_server_message_if_c::eap_mtu()\n"),
  1653 		(EAPL("%s: eap_core_server_message_if_c::eap_mtu()\n"),
  1608 		 (m_is_client == true) ? "client": "server"));
  1654 		 (m_is_client == true) ? "client": "server"));
  1609 
  1655 
  1610 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::eap_mtu()");
  1656 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::eap_mtu()");
  1611 
  1657 
  1612 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1658 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1613 
  1659 
  1614 	eap_status_e status(eap_status_ok);
  1660 	eap_status_e status(eap_status_ok);
  1615 
  1661 
  1645 {
  1691 {
  1646 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1692 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1647 
  1693 
  1648 	EAP_TRACE_DEBUG(
  1694 	EAP_TRACE_DEBUG(
  1649 		m_am_tools, 
  1695 		m_am_tools, 
  1650 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1696 		TRACE_FLAGS_DEFAULT, 
  1651 		(EAPL("%s: eap_core_server_message_if_c::get_802_11_authentication_mode()\n"),
  1697 		(EAPL("%s: eap_core_server_message_if_c::get_802_11_authentication_mode()\n"),
  1652 		 (m_is_client == true) ? "client": "server"));
  1698 		 (m_is_client == true) ? "client": "server"));
  1653 
  1699 
  1654 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::get_802_11_authentication_mode()");
  1700 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::get_802_11_authentication_mode()");
  1655 
  1701 
  1656 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1702 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1657 
  1703 
  1658 	eap_status_e status(eap_status_ok);
  1704 	eap_status_e status(eap_status_ok);
  1659 
  1705 
  1702 	{
  1748 	{
  1703 		EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  1749 		EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  1704 		return EAP_STATUS_RETURN(m_am_tools, status);
  1750 		return EAP_STATUS_RETURN(m_am_tools, status);
  1705 	}
  1751 	}
  1706 
  1752 
       
  1753     EAP_TRACE_DATA_DEBUG(
       
  1754         m_am_tools,
       
  1755         TRACE_FLAGS_DEFAULT,
       
  1756         (EAPL("new SSID"),
       
  1757         SSID.get_data(),
       
  1758         SSID.get_data_length()));
       
  1759 
  1707 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1760 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1708 
  1761 
  1709 	++parameter_index;
  1762 	++parameter_index;
  1710 
  1763 
  1711 	eap_variable_data_c preshared_key(m_am_tools);
  1764 	eap_variable_data_c preshared_key(m_am_tools);
  1715 	{
  1768 	{
  1716 		EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  1769 		EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  1717 		return EAP_STATUS_RETURN(m_am_tools, status);
  1770 		return EAP_STATUS_RETURN(m_am_tools, status);
  1718 	}
  1771 	}
  1719 
  1772 
       
  1773     EAP_TRACE_DATA_DEBUG(
       
  1774         m_am_tools,
       
  1775         TRACE_FLAGS_DEFAULT,
       
  1776         (EAPL("new preshared_key"),
       
  1777         preshared_key.get_data(),
       
  1778         preshared_key.get_data_length()));
       
  1779 
  1720 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1780 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1721 
  1781 
  1722 	if (authentication_type == eapol_key_authentication_type_WPS)
  1782 	if (authentication_type == eapol_key_authentication_type_WPS)
  1723 	{
  1783 	{
  1724 		// Save SSID and pre-shared key for WPS to memory store.
  1784 		// Saves SSID and pre-shared key for WPS to memory store.
       
  1785 
       
  1786 		EAP_TRACE_DEBUG(
       
  1787 			m_am_tools, 
       
  1788 			TRACE_FLAGS_DEFAULT, 
       
  1789 			(EAPL("%s: eap_core_server_message_if_c::get_802_11_authentication_mode(): Saves SSID and pre-shared key for WPS to memory store.\n"),
       
  1790 			 (m_is_client == true) ? "client": "server"));
       
  1791 
  1725 		eap_variable_data_c memory_store_key(m_am_tools);
  1792 		eap_variable_data_c memory_store_key(m_am_tools);
  1726 
  1793 
  1727 		eap_status_e status = memory_store_key.set_copy_of_buffer(
  1794 		eap_status_e status = memory_store_key.set_copy_of_buffer(
  1728 			EAP_WPS_CONFIGURATION_MEMORY_STORE_KEY,
  1795 			EAP_WPS_CONFIGURATION_MEMORY_STORE_KEY,
  1729 			sizeof(EAP_WPS_CONFIGURATION_MEMORY_STORE_KEY));
  1796 			sizeof(EAP_WPS_CONFIGURATION_MEMORY_STORE_KEY));
  1818 {
  1885 {
  1819 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1886 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1820 
  1887 
  1821 	EAP_TRACE_DEBUG(
  1888 	EAP_TRACE_DEBUG(
  1822 		m_am_tools, 
  1889 		m_am_tools, 
  1823 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1890 		TRACE_FLAGS_DEFAULT, 
  1824 		(EAPL("%s: eap_core_server_message_if_c::set_eap_database_reference_values()\n"),
  1891 		(EAPL("%s: eap_core_server_message_if_c::set_eap_database_reference_values()\n"),
  1825 		 (m_is_client == true) ? "client": "server"));
  1892 		 (m_is_client == true) ? "client": "server"));
  1826 
  1893 
  1827 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::set_eap_database_reference_values()");
  1894 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::set_eap_database_reference_values()");
  1828 
  1895 
  1829 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1896 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1830 
  1897 
  1831 	eap_status_e status(eap_status_ok);
  1898 	eap_status_e status(eap_status_ok);
  1832 
  1899 
  1876 {
  1943 {
  1877 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1944 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  1878 
  1945 
  1879 	EAP_TRACE_DEBUG(
  1946 	EAP_TRACE_DEBUG(
  1880 		m_am_tools, 
  1947 		m_am_tools, 
  1881 		EAP_TRACE_FLAGS_MESSAGE_DATA, 
  1948 		TRACE_FLAGS_DEFAULT, 
  1882 		(EAPL("%s: eap_core_server_message_if_c::save_simple_config_session()\n"),
  1949 		(EAPL("%s: eap_core_server_message_if_c::save_simple_config_session()\n"),
  1883 		 (m_is_client == true) ? "client": "server"));
  1950 		 (m_is_client == true) ? "client": "server"));
  1884 
  1951 
  1885 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, EAP_TRACE_FLAGS_MESSAGE_DATA, "returns: eap_core_server_message_if_c::save_simple_config_session()");
  1952 	EAP_TRACE_RETURN_STRING_FLAGS(m_am_tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::save_simple_config_session()");
  1886 
  1953 
  1887 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1954 	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1888 
  1955 
  1889 	// Message is formatted as:
  1956 	// Message is formatted as:
  1890 	// 0                   1                   2                   3   
  1957 	// 0                   1                   2                   3   
  2029 eap_am_message_if_c * eap_am_message_if_c::new_eap_am_server_message_if_c(
  2096 eap_am_message_if_c * eap_am_message_if_c::new_eap_am_server_message_if_c(
  2030 	abs_eap_am_tools_c * const tools,
  2097 	abs_eap_am_tools_c * const tools,
  2031 	const bool is_client_when_true,
  2098 	const bool is_client_when_true,
  2032 	const u32_t MTU)
  2099 	const u32_t MTU)
  2033 {
  2100 {
       
  2101 	EAP_TRACE_DEBUG(
       
  2102 		tools, 
       
  2103 		TRACE_FLAGS_DEFAULT, 
       
  2104 		(EAPL("eap_core_server_message_if_c::new_eap_am_server_message_if_c()\n")));
       
  2105 
       
  2106 	EAP_TRACE_RETURN_STRING_FLAGS(tools, TRACE_FLAGS_DEFAULT, "returns: eap_core_server_message_if_c::new_eap_am_server_message_if_c()");
       
  2107 
  2034 	eap_am_message_if_c * server = new eap_core_server_message_if_c(
  2108 	eap_am_message_if_c * server = new eap_core_server_message_if_c(
  2035 		tools,
  2109 		tools,
  2036 		is_client_when_true,
  2110 		is_client_when_true,
  2037 		MTU);
  2111 		MTU);
  2038 
  2112