eapol/eapol_framework/eapol_common/core/eap_core.cpp
changeset 33 938269283a16
parent 2 1c7bc153c08e
child 34 ad1f037f1ac2
equal deleted inserted replaced
22:093cf0757204 33:938269283a16
    14 * Description:  EAP and WLAN authentication protocols.
    14 * Description:  EAP and WLAN authentication protocols.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 /*
    18 /*
    19 * %version: 63 %
    19 * %version: 58.1.11 %
    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
   381 
   381 
   382 	// Normally we will remove session after authentication ends.
   382 	// Normally we will remove session after authentication ends.
   383 	// Remove session only if the stack is not already being deleted
   383 	// Remove session only if the stack is not already being deleted
   384 	if (m_shutdown_was_called == false)
   384 	if (m_shutdown_was_called == false)
   385 	{
   385 	{
   386 		#if defined(USE_EAPOL_KEY_STATE) && defined(USE_EAP_CORE_RESTART_AUTHENTICATION)
   386 		#if defined(USE_EAP_CORE_SIMULATOR_VERSION)
   387 			#error ERROR: USE_EAPOL_KEY_STATE and USE_EAP_CORE_RESTART_AUTHENTICATION cannot be used same time.
       
   388 		#endif //#if defined(USE_EAPOL_KEY_STATE) && defined(USE_EAP_CORE_RESTART_AUTHENTICATION)
       
   389 
       
   390 		#if defined(USE_EAP_CORE_SIMULATOR_VERSION) && defined(USE_EAP_CORE_RESTART_AUTHENTICATION)
       
   391 
       
   392 			// Simulator reuses current session.
       
   393 			status = restart_authentication(
       
   394 				state->get_send_network_id(),
       
   395 				m_is_client);
       
   396 			if (status != eap_status_ok)
       
   397 			{
       
   398 				EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
       
   399 				return EAP_STATUS_RETURN(m_am_tools, status);
       
   400 			}
       
   401 
       
   402 		#elif defined(USE_EAP_CORE_SIMULATOR_VERSION) && defined(USE_EAPOL_KEY_STATE)
       
   403 
   387 
   404 			EAP_TRACE_DEBUG(
   388 			EAP_TRACE_DEBUG(
   405 				m_am_tools,
   389 				m_am_tools,
   406 				TRACE_FLAGS_DEFAULT,
   390 				TRACE_FLAGS_DEFAULT,
   407 				(EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ")
   391 				(EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ")
   408 				 EAPL("Protocol layer %d, EAP type 0x%02x, State transition from ")
   392 				 EAPL("Protocol layer %d, EAP-type 0x%02x, State transition from ")
   409 				 EAPL("%d=%s to %d=%s, client %d.\n"),
   393 				 EAPL("%d=%s to %d=%s, client %d.\n"),
   410 				 (m_is_client == true) ? "client": "server",
   394 				 (m_is_client == true) ? "client": "server",
   411 				 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
   395 				 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
   412 				 state->get_protocol_layer(), 
   396 				 state->get_protocol_layer(), 
   413 				 state->get_protocol(), 
   397 				 state->get_protocol(), 
   431 	{
   415 	{
   432 		EAP_TRACE_DEBUG(
   416 		EAP_TRACE_DEBUG(
   433 			m_am_tools,
   417 			m_am_tools,
   434 			TRACE_FLAGS_DEFAULT,
   418 			TRACE_FLAGS_DEFAULT,
   435 			(EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ")
   419 			(EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ")
   436 			 EAPL("Protocol layer %d, EAP type 0x%02x, State transition from ")
   420 			 EAPL("Protocol layer %d, EAP-type 0x%02x, State transition from ")
   437 			 EAPL("%d=%s to %d=%s, client %d when shutdown was called.\n"),
   421 			 EAPL("%d=%s to %d=%s, client %d when shutdown was called.\n"),
   438 			 (m_is_client == true) ? "client": "server",
   422 			 (m_is_client == true) ? "client": "server",
   439 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
   423 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
   440 			 state->get_protocol_layer(), 
   424 			 state->get_protocol_layer(), 
   441 			 state->get_protocol(), 
   425 			 state->get_protocol(), 
   458 	const abs_eap_state_notification_c * const state)
   442 	const abs_eap_state_notification_c * const state)
   459 {
   443 {
   460 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   444 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   461 
   445 
   462 	eap_status_string_c status_string;
   446 	eap_status_string_c status_string;
   463 	eap_header_string_c eap_string;
       
   464 	EAP_UNREFERENCED_PARAMETER(status_string); // in release
   447 	EAP_UNREFERENCED_PARAMETER(status_string); // in release
   465 	EAP_UNREFERENCED_PARAMETER(eap_string); // in release
       
   466 
   448 
   467 	EAP_TRACE_DEBUG(
   449 	EAP_TRACE_DEBUG(
   468 		m_am_tools, 
   450 		m_am_tools, 
   469 		TRACE_FLAGS_DEFAULT, 
   451 		TRACE_FLAGS_DEFAULT, 
   470 		(EAPL("eap_core_c::state_notification(), %s, %s, protocol_layer %d=%s, protocol %d=%s, EAP-type 0x%08x=%s.\n"),
   452 		(EAPL("eap_core_c::state_notification(), %s, %s, protocol_layer %d=%s, protocol %d=%s, EAP-type 0xfe%06x%08x=%s.\n"),
   471 		(m_is_client == true) ? "client": "server",
   453 		(m_is_client == true) ? "client": "server",
   472 		(m_is_tunneled_eap == true) ? "tunneled": "outer most",
   454 		(m_is_tunneled_eap == true) ? "tunneled": "outer most",
   473 		state->get_protocol_layer(),
   455 		state->get_protocol_layer(),
   474 		state->get_protocol_layer_string(),
   456 		state->get_protocol_layer_string(),
   475 		state->get_protocol(),
   457 		state->get_protocol(),
   476 		state->get_protocol_string(),
   458 		state->get_protocol_string(),
   477 		convert_eap_type_to_u32_t(state->get_eap_type()),
   459 		state->get_eap_type().get_vendor_id(),
   478 		eap_string.get_eap_type_string(state->get_eap_type())));
   460 		state->get_eap_type().get_vendor_type(),
       
   461 		eap_header_string_c::get_eap_type_string(state->get_eap_type())));
   479 
   462 
   480 	EAP_TRACE_DEBUG(
   463 	EAP_TRACE_DEBUG(
   481 		m_am_tools, 
   464 		m_am_tools, 
   482 		TRACE_FLAGS_DEFAULT, 
   465 		TRACE_FLAGS_DEFAULT, 
   483 		(EAPL("eap_core_c::state_notification(), %s, %s, current_state %d=%s, error %d=%s.\n"),
   466 		(EAPL("eap_core_c::state_notification(), %s, %s, current_state %d=%s, error %d=%s.\n"),
   504 	{
   487 	{
   505 		EAP_TRACE_DEBUG(
   488 		EAP_TRACE_DEBUG(
   506 			m_am_tools,
   489 			m_am_tools,
   507 			TRACE_FLAGS_DEFAULT,
   490 			TRACE_FLAGS_DEFAULT,
   508 			(EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ")
   491 			(EAPL("eap_core_c::state_notification(): %s, %s, Ignored notification: ")
   509 			 EAPL("Protocol layer %d, non-active EAP type 0x%02x, current EAP type 0x%08x, State transition from ")
   492 			 EAPL("Protocol layer %d, non-active EAP-type 0x%02x, current EAP type 0x%08x, State transition from ")
   510 			 EAPL("%d=%s to %d=%s, client %d\n"),
   493 			 EAPL("%d=%s to %d=%s, client %d\n"),
   511 			 (m_is_client == true) ? "client": "server",
   494 			 (m_is_client == true) ? "client": "server",
   512 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
   495 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
   513 			state->get_protocol_layer(),
   496 			state->get_protocol_layer(),
   514 			state->get_protocol(),
   497 			state->get_protocol(),
   789 
   772 
   790 EAP_FUNC_EXPORT eap_status_e eap_core_c::cancel_session_timeout()
   773 EAP_FUNC_EXPORT eap_status_e eap_core_c::cancel_session_timeout()
   791 {
   774 {
   792 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   775 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
   793 
   776 
   794 	eap_status_e status = m_partner->cancel_timer(
   777 	eap_status_e status(eap_status_ok);
   795 		this,
   778 
   796 		EAP_CORE_SESSION_TIMEOUT_ID);
   779 	if (m_am_tools != 0)
       
   780 	{
       
   781 		status = m_partner->cancel_timer(
       
   782 			this,
       
   783 			EAP_CORE_SESSION_TIMEOUT_ID);
       
   784 	}
   797 	
   785 	
   798 	EAP_UNREFERENCED_PARAMETER(status); // in release
   786 	EAP_UNREFERENCED_PARAMETER(status); // in release
   799 	
   787 	
   800 	EAP_TRACE_DEBUG(
   788 	EAP_TRACE_DEBUG(
   801 		m_am_tools, 
   789 		m_am_tools, 
  1310 			EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  1298 			EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  1311 			return EAP_STATUS_RETURN(m_am_tools, eap_status_drop_packet_quietly);
  1299 			return EAP_STATUS_RETURN(m_am_tools, eap_status_drop_packet_quietly);
  1312 		}
  1300 		}
  1313 	}
  1301 	}
  1314 #endif //#if defined(USE_EAP_CORE_SERVER)
  1302 #endif //#if defined(USE_EAP_CORE_SERVER)
  1315 	else if ((eap.get_code() == eap_code_request
  1303 	else if (((eap.get_code() == eap_code_request
  1316 				|| eap.get_code() == eap_code_response)
  1304 				|| eap.get_code() == eap_code_response)
  1317 			&& eap.get_type() == used_eap_type
  1305 			  && eap.get_type() == used_eap_type)
  1318 		|| eap.get_code() == eap_code_success
  1306 		|| eap.get_code() == eap_code_success
  1319 		|| eap.get_code() == eap_code_failure)
  1307 		|| eap.get_code() == eap_code_failure)
  1320 	{
  1308 	{
  1321 		// Client and server handles this packet.
  1309 		// Client and server handles this packet.
  1322 		// Packet is EAP-Request, EAP-Response, EAP-Success or EAP-Failure.
  1310 		// Packet is EAP-Request, EAP-Response, EAP-Success or EAP-Failure.
  1522 
  1510 
  1523 
  1511 
  1524 #if defined (_DEBUG)
  1512 #if defined (_DEBUG)
  1525 	if (m_retransmission != 0)
  1513 	if (m_retransmission != 0)
  1526 	{
  1514 	{
  1527 		eap_header_string_c eap_string;
       
  1528 
       
  1529 		EAP_TRACE_DEBUG(
  1515 		EAP_TRACE_DEBUG(
  1530 			m_am_tools, 
  1516 			m_am_tools, 
  1531 			TRACE_FLAGS_DEFAULT, 
  1517 			TRACE_FLAGS_DEFAULT, 
  1532 			(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"),
  1518 			(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"),
  1533 			 (m_is_client_role == true) ? "client": "server",
  1519 			 (m_is_client_role == true) ? "client": "server",
  1534 			 m_retransmission->get_retransmission_counter(),
  1520 			 m_retransmission->get_retransmission_counter(),
  1535 			 eap_string.get_eap_type_string(m_retransmission->get_eap_type()),
  1521 			 eap_header_string_c::get_eap_type_string(m_retransmission->get_eap_type()),
  1536 			 m_retransmission->get_eap_identifier(),
  1522 			 m_retransmission->get_eap_identifier(),
  1537 			 eap_string.get_eap_type_string(eap.get_type()),
  1523 			 eap_header_string_c::get_eap_type_string(eap.get_type()),
  1538 			 eap.get_identifier(),
  1524 			 eap.get_identifier(),
  1539 			 this));
  1525 			 this));
  1540 	}
  1526 	}
  1541 	else
  1527 	else
  1542 	{
  1528 	{
  2221 			(EAPL("TIMER: %s: %s, EAP_CORE_TIMER_RETRANSMISSION_ID cancelled.\n"),
  2207 			(EAPL("TIMER: %s: %s, EAP_CORE_TIMER_RETRANSMISSION_ID cancelled.\n"),
  2222 			 (m_is_client_role == true ? "client": "server"),
  2208 			 (m_is_client_role == true ? "client": "server"),
  2223 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most"
  2209 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most"
  2224 			 ));
  2210 			 ));
  2225 
  2211 
  2226 		if (m_is_client_role == false)
  2212 		if (m_is_client_role == false
       
  2213 			&& m_partner != 0)
  2227 		{
  2214 		{
  2228 			// Only EAP-server uses timer to re-transmits EAP-packets.
  2215 			// Only EAP-server uses timer to re-transmits EAP-packets.
  2229 			m_partner->cancel_timer(this, EAP_CORE_TIMER_RETRANSMISSION_ID);
  2216 			m_partner->cancel_timer(this, EAP_CORE_TIMER_RETRANSMISSION_ID);
  2230 		}
  2217 		}
  2231 
  2218 
  2402 		(EAPL("TIMER: %s: %s, EAP_CORE_FAILURE_RECEIVED_ID cancelled.\n"),
  2389 		(EAPL("TIMER: %s: %s, EAP_CORE_FAILURE_RECEIVED_ID cancelled.\n"),
  2403 		 (m_is_client_role == true ? "client": "server"),
  2390 		 (m_is_client_role == true ? "client": "server"),
  2404 		 (m_is_tunneled_eap == true) ? "tunneled": "outer most"
  2391 		 (m_is_tunneled_eap == true) ? "tunneled": "outer most"
  2405 		 ));
  2392 		 ));
  2406 
  2393 
  2407 	return m_partner->cancel_timer(
  2394 	eap_status_e status(eap_status_ok);
  2408 		this,
  2395 
  2409 		EAP_CORE_FAILURE_RECEIVED_ID);
  2396 	if (m_am_tools != 0)
       
  2397 	{
       
  2398 		status = m_partner->cancel_timer(
       
  2399 			this,
       
  2400 			EAP_CORE_FAILURE_RECEIVED_ID);
       
  2401 	}
       
  2402 	
       
  2403 	return EAP_STATUS_RETURN(m_am_tools, status);
  2410 }
  2404 }
  2411 
  2405 
  2412 //--------------------------------------------------
  2406 //--------------------------------------------------
  2413 
  2407 
  2414 #if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
  2408 #if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
  2472 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most"
  2466 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most"
  2473 			 ));
  2467 			 ));
  2474 
  2468 
  2475 		m_wait_eap_request_type_timeout_set = false;
  2469 		m_wait_eap_request_type_timeout_set = false;
  2476 
  2470 
  2477 		return m_partner->cancel_timer(
  2471 		eap_status_e status(eap_status_ok);
  2478 			this,
  2472 
  2479 			EAP_CORE_WAIT_EAP_REQUEST_TYPE_ID);
  2473 		if (m_am_tools != 0)
       
  2474 		{
       
  2475 			m_partner->cancel_timer(
       
  2476 				this,
       
  2477 				EAP_CORE_WAIT_EAP_REQUEST_TYPE_ID);
       
  2478 		}
       
  2479 
       
  2480 		return EAP_STATUS_RETURN(m_am_tools, status);
  2480 	}
  2481 	}
  2481 	else
  2482 	else
  2482 	{
  2483 	{
  2483 		return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
  2484 		return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
  2484 	}
  2485 	}
  3012 		m_remove_session_timeout = 0ul;
  3013 		m_remove_session_timeout = 0ul;
  3013 	}
  3014 	}
  3014 
  3015 
  3015 	//----------------------------------------------------------
  3016 	//----------------------------------------------------------
  3016 
  3017 
  3017 #if defined(USE_EAP_EXPANDED_TYPES)
       
  3018 	{
  3018 	{
  3019 		eap_variable_data_c use_eap_expanded_type(m_am_tools);
  3019 		eap_variable_data_c use_eap_expanded_type(m_am_tools);
  3020 
  3020 
  3021 		status = m_partner->read_configure(
  3021 		status = m_partner->read_configure(
  3022 			cf_str_EAP_CORE_use_eap_expanded_type.get_field(),
  3022 			cf_str_EAP_CORE_use_eap_expanded_type.get_field(),
  3038 					m_use_eap_expanded_type = false;
  3038 					m_use_eap_expanded_type = false;
  3039 				}
  3039 				}
  3040 			}
  3040 			}
  3041 		}
  3041 		}
  3042 	}
  3042 	}
  3043 #endif //#if defined(USE_EAP_EXPANDED_TYPES)
       
  3044 
  3043 
  3045 	//----------------------------------------------------------
  3044 	//----------------------------------------------------------
  3046 
  3045 
  3047 #if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
  3046 #if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
  3048 	{
  3047 	{
  5401 	else
  5400 	else
  5402 	{
  5401 	{
  5403 		EAP_TRACE_DEBUG(
  5402 		EAP_TRACE_DEBUG(
  5404 			m_am_tools,
  5403 			m_am_tools,
  5405 			TRACE_FLAGS_DEFAULT,
  5404 			TRACE_FLAGS_DEFAULT,
  5406 			(EAPL("WARNING: %s, %s, EAP-identity is unknown: current EAP-type 0x%08x\n"),
  5405 			(EAPL("WARNING: %s, %s, EAP-identity is unknown: current EAP-type 0xfe%06x%08x=%s\n"),
  5407 			 (m_is_client == true) ? "client": "server",
  5406 			 (m_is_client == true) ? "client": "server",
  5408 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
  5407 			 (m_is_tunneled_eap == true) ? "tunneled": "outer most",
  5409 			 convert_eap_type_to_u32_t(m_current_eap_type)));
  5408 			 m_current_eap_type.get_vendor_id(),
       
  5409 			 m_current_eap_type.get_vendor_type(),
       
  5410 			 eap_header_string_c::get_eap_type_string(m_current_eap_type)));
  5410 	}
  5411 	}
  5411 
  5412 
  5412 	EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  5413 	EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  5413 	return EAP_STATUS_RETURN_WARNING(m_am_tools, status);
  5414 	return EAP_STATUS_RETURN_WARNING(m_am_tools, status);
  5414 }
  5415 }
  5486 	return EAP_STATUS_RETURN(m_am_tools, status);
  5487 	return EAP_STATUS_RETURN(m_am_tools, status);
  5487 }
  5488 }
  5488 
  5489 
  5489 //--------------------------------------------------
  5490 //--------------------------------------------------
  5490 
  5491 
  5491 //
  5492 EAP_FUNC_EXPORT eap_status_e eap_core_c::set_authentication_role(const bool when_true_set_client)
  5492 EAP_FUNC_EXPORT eap_status_e eap_core_c::cancel_all_timers()
       
  5493 {
  5493 {
  5494 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  5494 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
  5495 
  5495 
  5496 	EAP_ASSERT(m_am_tools->get_global_mutex()->get_is_reserved() == true);
  5496 	cancel_retransmission();
  5497 
  5497 
  5498 	const eap_status_e status = m_partner->cancel_all_timers();
  5498 	cancel_eap_failure_timeout();
       
  5499 
       
  5500 	m_is_client_role = when_true_set_client;
       
  5501 
       
  5502 	EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
       
  5503 	return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
       
  5504 }
       
  5505 
       
  5506 //--------------------------------------------------
       
  5507 
       
  5508 EAP_FUNC_EXPORT eap_status_e eap_core_c::add_rogue_ap(
       
  5509 	eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list)
       
  5510 {
       
  5511 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
       
  5512 
       
  5513 	const eap_status_e status = m_partner->add_rogue_ap(rogue_ap_list);
  5499 
  5514 
  5500 	EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  5515 	EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
  5501 	return EAP_STATUS_RETURN(m_am_tools, status);
  5516 	return EAP_STATUS_RETURN(m_am_tools, status);
  5502 }
  5517 }
  5503 
  5518 
  5504 //--------------------------------------------------
  5519 //--------------------------------------------------
  5505 
  5520 
  5506 EAP_FUNC_EXPORT eap_status_e eap_core_c::set_authentication_role(const bool when_true_set_client)
       
  5507 {
       
  5508 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
       
  5509 
       
  5510 	cancel_retransmission();
       
  5511 
       
  5512 	cancel_eap_failure_timeout();
       
  5513 
       
  5514 	m_is_client_role = when_true_set_client;
       
  5515 
       
  5516 	EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
       
  5517 	return EAP_STATUS_RETURN(m_am_tools, eap_status_ok);
       
  5518 }
       
  5519 
       
  5520 //--------------------------------------------------
       
  5521 
       
  5522 EAP_FUNC_EXPORT eap_status_e eap_core_c::add_rogue_ap(
       
  5523 	eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list)
       
  5524 {
       
  5525 	EAP_TRACE_BEGIN(m_am_tools, TRACE_FLAGS_DEFAULT);
       
  5526 
       
  5527 	const eap_status_e status = m_partner->add_rogue_ap(rogue_ap_list);
       
  5528 
       
  5529 	EAP_TRACE_END(m_am_tools, TRACE_FLAGS_DEFAULT);
       
  5530 	return EAP_STATUS_RETURN(m_am_tools, status);
       
  5531 }
       
  5532 
       
  5533 //--------------------------------------------------
       
  5534 
       
  5535 EAP_FUNC_EXPORT bool eap_core_c::get_is_tunneled_eap() const
  5521 EAP_FUNC_EXPORT bool eap_core_c::get_is_tunneled_eap() const
  5536 {
  5522 {
  5537 	return m_is_tunneled_eap;
  5523 	return m_is_tunneled_eap;
  5538 }
  5524 }
  5539 
  5525