eapol/eapol_framework/eapol_common/include/eap_core.h
changeset 52 c23bdf5a328a
parent 33 938269283a16
equal deleted inserted replaced
51:e863583e6720 52:c23bdf5a328a
   126 
   126 
   127 #if !defined(_EAP_CORE_H_)
   127 #if !defined(_EAP_CORE_H_)
   128 #define _EAP_CORE_H_
   128 #define _EAP_CORE_H_
   129 
   129 
   130 #include "eap_am_export.h"
   130 #include "eap_am_export.h"
       
   131 // Start: added by script change_export_macros.sh.
       
   132 #if defined(EAP_NO_EXPORT_EAP_CORE_H)
       
   133 	#define EAP_CLASS_VISIBILITY_EAP_CORE_H EAP_NONSHARABLE 
       
   134 	#define EAP_FUNC_VISIBILITY_EAP_CORE_H 
       
   135 	#define EAP_C_FUNC_VISIBILITY_EAP_CORE_H 
       
   136 	#define EAP_FUNC_EXPORT_EAP_CORE_H 
       
   137 	#define EAP_C_FUNC_EXPORT_EAP_CORE_H 
       
   138 #elif defined(EAP_EXPORT_EAP_CORE_H)
       
   139 	#define EAP_CLASS_VISIBILITY_EAP_CORE_H EAP_EXPORT 
       
   140 	#define EAP_FUNC_VISIBILITY_EAP_CORE_H EAP_FUNC_EXPORT 
       
   141 	#define EAP_C_FUNC_VISIBILITY_EAP_CORE_H EAP_C_FUNC_EXPORT 
       
   142 	#define EAP_FUNC_EXPORT_EAP_CORE_H EAP_FUNC_EXPORT 
       
   143 	#define EAP_C_FUNC_EXPORT_EAP_CORE_H EAP_C_FUNC_EXPORT 
       
   144 #else
       
   145 	#define EAP_CLASS_VISIBILITY_EAP_CORE_H EAP_IMPORT 
       
   146 	#define EAP_FUNC_VISIBILITY_EAP_CORE_H EAP_FUNC_IMPORT 
       
   147 	#define EAP_C_FUNC_VISIBILITY_EAP_CORE_H EAP_C_FUNC_IMPORT 
       
   148 	#define EAP_FUNC_EXPORT_EAP_CORE_H 
       
   149 	#define EAP_C_FUNC_EXPORT_EAP_CORE_H 
       
   150 #endif
       
   151 // End: added by script change_export_macros.sh.
   131 #include "abs_eap_base_type.h"
   152 #include "abs_eap_base_type.h"
   132 #include "eap_core_map.h"
   153 #include "eap_core_map.h"
   133 #include "eap_am_network_id.h"
   154 #include "eap_am_network_id.h"
   134 #include "abs_eap_stack_interface.h"
   155 #include "abs_eap_stack_interface.h"
   135 #include "eap_configuration_field.h"
   156 #include "eap_configuration_field.h"
   354 #endif //#if defined(USE_EAP_CORE_SERVER)
   375 #endif //#if defined(USE_EAP_CORE_SERVER)
   355 
   376 
   356 
   377 
   357 
   378 
   358 /// A eap_core_c class implements the basic functionality of EAP-type.
   379 /// A eap_core_c class implements the basic functionality of EAP-type.
   359 class EAP_EXPORT eap_core_c
   380 class EAP_CLASS_VISIBILITY_EAP_CORE_H eap_core_c
   360 : public abs_eap_core_map_c
   381 : public abs_eap_core_map_c
   361 , public abs_eap_base_type_c
   382 , public abs_eap_base_type_c
   362 , public abs_eap_base_timer_c
   383 , public abs_eap_base_timer_c
   363 , public abs_eap_stack_interface_c
   384 , public abs_eap_stack_interface_c
   364 {
   385 {
   504 
   525 
   505 	/**
   526 	/**
   506 	 * Re-transmission is used to test protocols.
   527 	 * Re-transmission is used to test protocols.
   507 	 * This function resends the packet.
   528 	 * This function resends the packet.
   508 	 */
   529 	 */
   509 	EAP_FUNC_IMPORT eap_status_e resend_packet(
   530 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e resend_packet(
   510 		const eap_am_network_id_c * const send_network_id,
   531 		const eap_am_network_id_c * const send_network_id,
   511 		eap_buf_chain_wr_c * const sent_packet,
   532 		eap_buf_chain_wr_c * const sent_packet,
   512 		const u32_t header_offset,
   533 		const u32_t header_offset,
   513 		const u32_t data_length,
   534 		const u32_t data_length,
   514 		const u32_t buffer_free,
   535 		const u32_t buffer_free,
   517 
   538 
   518 	/** 
   539 	/** 
   519 	 * Re-transmission is used to test protocols.
   540 	 * Re-transmission is used to test protocols.
   520 	 * This function cancels retransmissions.
   541 	 * This function cancels retransmissions.
   521 	 */
   542 	 */
   522 	EAP_FUNC_IMPORT eap_status_e cancel_retransmission();
   543 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e cancel_retransmission();
   523 
   544 
   524 	/**
   545 	/**
   525 	 * Re-transmission is used to test protocols.
   546 	 * Re-transmission is used to test protocols.
   526 	 * This function inits retransmission of sent packet.
   547 	 * This function inits retransmission of sent packet.
   527 	 */
   548 	 */
   528 	EAP_FUNC_IMPORT eap_status_e init_retransmission(
   549 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e init_retransmission(
   529 		const eap_am_network_id_c * const send_network_id,
   550 		const eap_am_network_id_c * const send_network_id,
   530 		eap_buf_chain_wr_c * const sent_packet,
   551 		eap_buf_chain_wr_c * const sent_packet,
   531 		const u32_t header_offset,
   552 		const u32_t header_offset,
   532 		const u32_t data_length,
   553 		const u32_t data_length,
   533 		const eap_code_value_e eap_code,
   554 		const eap_code_value_e eap_code,
   536 		);
   557 		);
   537 
   558 
   538 	/**
   559 	/**
   539 	 * This function cancels previous session timeout and initializes new timeout for the session.
   560 	 * This function cancels previous session timeout and initializes new timeout for the session.
   540 	 */
   561 	 */
   541 	EAP_FUNC_IMPORT eap_status_e initialize_session_timeout(
   562 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e initialize_session_timeout(
   542 		const u32_t session_timeout_ms);
   563 		const u32_t session_timeout_ms);
   543 
   564 
   544 	/**
   565 	/**
   545 	 * This function cancels timeout for a session.
   566 	 * This function cancels timeout for a session.
   546 	 */
   567 	 */
   547 	EAP_FUNC_IMPORT eap_status_e cancel_session_timeout();
   568 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e cancel_session_timeout();
   548 
   569 
   549 	/**
   570 	/**
   550 	 * This function calls shutdown() for one eap_base_type_c object.
   571 	 * This function calls shutdown() for one eap_base_type_c object.
   551 	 */
   572 	 */
   552 	EAP_FUNC_IMPORT static eap_status_e shutdown_operation(
   573 	EAP_FUNC_VISIBILITY_EAP_CORE_H static eap_status_e shutdown_operation(
   553 		eap_base_type_c * const value,
   574 		eap_base_type_c * const value,
   554 		abs_eap_am_tools_c * const m_am_tools);
   575 		abs_eap_am_tools_c * const m_am_tools);
   555 
   576 
   556 	/**
   577 	/**
   557 	 * This function calls reset() for one eap_base_type_c object.
   578 	 * This function calls reset() for one eap_base_type_c object.
   558 	 */
   579 	 */
   559 	EAP_FUNC_IMPORT static eap_status_e reset_operation(
   580 	EAP_FUNC_VISIBILITY_EAP_CORE_H static eap_status_e reset_operation(
   560 		eap_base_type_c * const handler,
   581 		eap_base_type_c * const handler,
   561 		abs_eap_am_tools_c * const m_am_tools);
   582 		abs_eap_am_tools_c * const m_am_tools);
   562 
   583 
   563 	EAP_FUNC_IMPORT eap_status_e client_proposes_eap_types(
   584 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e client_proposes_eap_types(
   564 		const eap_am_network_id_c * const receive_network_id,
   585 		const eap_am_network_id_c * const receive_network_id,
   565 		const u8_t eap_identifier);
   586 		const u8_t eap_identifier);
   566 
   587 
   567 	/**
   588 	/**
   568 	 * This function processes EAP-packet with known EAP-type.
   589 	 * This function processes EAP-packet with known EAP-type.
   569 	 */
   590 	 */
   570 	EAP_FUNC_IMPORT eap_status_e packet_process_type(
   591 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e packet_process_type(
   571 		const eap_type_value_e used_eap_type,
   592 		const eap_type_value_e used_eap_type,
   572 		const eap_am_network_id_c * const receive_network_id,
   593 		const eap_am_network_id_c * const receive_network_id,
   573 		eap_general_header_base_c * const packet_data,
   594 		eap_general_header_base_c * const packet_data,
   574 		const u32_t packet_length);
   595 		const u32_t packet_length);
   575 
   596 
   576 #if defined(USE_EAP_CORE_SERVER)
   597 #if defined(USE_EAP_CORE_SERVER)
   577 	/**
   598 	/**
   578 	 * This function re-starts authentication with new EAP-type.
   599 	 * This function re-starts authentication with new EAP-type.
   579 	 * Only server calls this function.
   600 	 * Only server calls this function.
   580 	 */
   601 	 */
   581 	EAP_FUNC_IMPORT eap_status_e restart_with_new_type(
   602 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e restart_with_new_type(
   582 		const eap_type_value_e used_eap_type,
   603 		const eap_type_value_e used_eap_type,
   583 		const eap_am_network_id_c * const receive_network_id,
   604 		const eap_am_network_id_c * const receive_network_id,
   584 		const u8_t eap_identifier);
   605 		const u8_t eap_identifier);
   585 #endif //#if defined(USE_EAP_CORE_SERVER)
   606 #endif //#if defined(USE_EAP_CORE_SERVER)
   586 
   607 
   587 #if defined(USE_EAP_CORE_SERVER)
   608 #if defined(USE_EAP_CORE_SERVER)
   588 	EAP_FUNC_IMPORT eap_status_e handle_eap_identity_response(
   609 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e handle_eap_identity_response(
   589 		eap_base_type_c * const handler,
   610 		eap_base_type_c * const handler,
   590 		const eap_type_value_e used_eap_type,
   611 		const eap_type_value_e used_eap_type,
   591 		const eap_am_network_id_c * const receive_network_id,
   612 		const eap_am_network_id_c * const receive_network_id,
   592 		eap_header_wr_c * const eap,
   613 		eap_header_wr_c * const eap,
   593 		const u32_t packet_length);
   614 		const u32_t packet_length);
   594 #endif //#if defined(USE_EAP_CORE_SERVER)
   615 #endif //#if defined(USE_EAP_CORE_SERVER)
   595 
   616 
   596 	/**
   617 	/**
   597 	 * This function handles EAP-Request/Identity.
   618 	 * This function handles EAP-Request/Identity.
   598 	 */
   619 	 */
   599 	EAP_FUNC_IMPORT eap_status_e handle_eap_identity_request(
   620 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e handle_eap_identity_request(
   600 		const eap_type_value_e used_eap_type,
   621 		const eap_type_value_e used_eap_type,
   601 		const u8_t eap_identifier,
   622 		const u8_t eap_identifier,
   602 		const eap_am_network_id_c * const receive_network_id);
   623 		const eap_am_network_id_c * const receive_network_id);
   603 
   624 
   604 	/**
   625 	/**
   605 	 * This function creates EAP-Response/Identity.
   626 	 * This function creates EAP-Response/Identity.
   606 	 */
   627 	 */
   607 	EAP_FUNC_IMPORT eap_status_e create_eap_identity_response(
   628 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e create_eap_identity_response(
   608 		eap_buf_chain_wr_c * const response_packet,
   629 		eap_buf_chain_wr_c * const response_packet,
   609 		const eap_variable_data_c * const identity,
   630 		const eap_variable_data_c * const identity,
   610 		const u8_t eap_identifier
   631 		const u8_t eap_identifier
   611 		);
   632 		);
   612 
   633 
   613 	/**
   634 	/**
   614 	 * This function sends EAP-Response/Identity.
   635 	 * This function sends EAP-Response/Identity.
   615 	 */
   636 	 */
   616 	EAP_FUNC_IMPORT eap_status_e send_eap_identity_response(
   637 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e send_eap_identity_response(
   617 		const eap_am_network_id_c * const send_network_id,
   638 		const eap_am_network_id_c * const send_network_id,
   618 		const eap_variable_data_c * const identity,
   639 		const eap_variable_data_c * const identity,
   619 		const u8_t eap_identifier);
   640 		const u8_t eap_identifier);
   620 
   641 
   621 	/**
   642 	/**
   622 	 * This function sends EAP-Response/Notification.
   643 	 * This function sends EAP-Response/Notification.
   623 	 */
   644 	 */
   624 	EAP_FUNC_IMPORT eap_status_e send_eap_notification_response(
   645 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e send_eap_notification_response(
   625 		const eap_am_network_id_c * const send_network_id,
   646 		const eap_am_network_id_c * const send_network_id,
   626 		const u8_t eap_identifier);
   647 		const u8_t eap_identifier);
   627 
   648 
   628 	/**
   649 	/**
   629 	 * This function initializes timeout for received EAP-Failure.
   650 	 * This function initializes timeout for received EAP-Failure.
   630 	 */
   651 	 */
   631 	EAP_FUNC_IMPORT eap_status_e set_eap_failure_timeout();
   652 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e set_eap_failure_timeout();
   632 
   653 
   633 	/**
   654 	/**
   634 	 * This function cancels timeout for received EAP-Failure.
   655 	 * This function cancels timeout for received EAP-Failure.
   635 	 */
   656 	 */
   636 	EAP_FUNC_IMPORT eap_status_e cancel_eap_failure_timeout();
   657 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e cancel_eap_failure_timeout();
   637 
   658 
   638 #if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
   659 #if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
   639 	eap_status_e set_wait_eap_request_type_timeout();
   660 	eap_status_e set_wait_eap_request_type_timeout();
   640 
   661 
   641 	eap_status_e cancel_wait_eap_request_type_timeout();
   662 	eap_status_e cancel_wait_eap_request_type_timeout();
   642 #endif //#if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
   663 #endif //#if defined(USE_EAP_CORE_WAIT_REQUEST_TYPE_TIMER)
   643 
   664 
   644 	EAP_FUNC_IMPORT eap_status_e asynchronous_init_remove_eap_session();
   665 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e asynchronous_init_remove_eap_session();
   645 
   666 
   646 	EAP_FUNC_IMPORT eap_status_e initialize_asynchronous_init_remove_eap_session(
   667 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e initialize_asynchronous_init_remove_eap_session(
   647 		const u32_t remove_session_timeout);
   668 		const u32_t remove_session_timeout);
   648 
   669 
   649 	EAP_FUNC_IMPORT eap_status_e cancel_asynchronous_init_remove_eap_session();
   670 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e cancel_asynchronous_init_remove_eap_session();
   650 
   671 
   651 	eap_status_e init_end_of_session(
   672 	eap_status_e init_end_of_session(
   652 		const abs_eap_state_notification_c * const state);
   673 		const abs_eap_state_notification_c * const state);
   653 
   674 
   654 	eap_status_e set_eap_identity_routing_info_and_nai_decoration(
   675 	eap_status_e set_eap_identity_routing_info_and_nai_decoration(
   663 	//--------------------------------------------------
   684 	//--------------------------------------------------
   664 
   685 
   665 	/**
   686 	/**
   666 	 * The destructor of the eap_core class does nothing special.
   687 	 * The destructor of the eap_core class does nothing special.
   667 	 */
   688 	 */
   668 	EAP_FUNC_IMPORT virtual ~eap_core_c();
   689 	EAP_FUNC_VISIBILITY_EAP_CORE_H virtual ~eap_core_c();
   669 
   690 
   670 	/**
   691 	/**
   671 	 * The constructor initializes member attributes using parameters passed to it.
   692 	 * The constructor initializes member attributes using parameters passed to it.
   672 	 * @param tools is pointer to the tools class. @see abs_eap_am_tools_c.
   693 	 * @param tools is pointer to the tools class. @see abs_eap_am_tools_c.
   673 	 * @param partner is back pointer to object which created this object.
   694 	 * @param partner is back pointer to object which created this object.
   674 	 * @param is_client_when_true indicates whether the network entity should act
   695 	 * @param is_client_when_true indicates whether the network entity should act
   675 	 * @param is_tunneled_eap tells the EAP is run in tunnel (PEAP or other).
   696 	 * @param is_tunneled_eap tells the EAP is run in tunnel (PEAP or other).
   676 	 * as a client (true) or server (false), in terms of EAP-protocol
   697 	 * as a client (true) or server (false), in terms of EAP-protocol
   677 	 * whether this network entity is EAP-supplicant (true) or EAP-authenticator (false).
   698 	 * whether this network entity is EAP-supplicant (true) or EAP-authenticator (false).
   678 	 */
   699 	 */
   679 	EAP_FUNC_IMPORT eap_core_c(
   700 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_core_c(
   680 		abs_eap_am_tools_c * const tools,
   701 		abs_eap_am_tools_c * const tools,
   681 		abs_eap_core_c * const partner,
   702 		abs_eap_core_c * const partner,
   682 		const bool is_client_when_true,
   703 		const bool is_client_when_true,
   683 		const eap_am_network_id_c * const receive_network_id,
   704 		const eap_am_network_id_c * const receive_network_id,
   684 		const bool is_tunneled_eap);
   705 		const bool is_tunneled_eap);
   687 	 * The load_type() function function indicates the lower level to load
   708 	 * The load_type() function function indicates the lower level to load
   688 	 * new module including EAP-type. The type parameter is the requested EAP-type.
   709 	 * new module including EAP-type. The type parameter is the requested EAP-type.
   689 	 * @param type is the identifier of the required EAP type.
   710 	 * @param type is the identifier of the required EAP type.
   690 	 * @return Function returns pointer to the EAP type object.
   711 	 * @return Function returns pointer to the EAP type object.
   691 	 */
   712 	 */
   692 	EAP_FUNC_IMPORT eap_base_type_c * load_type(
   713 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_base_type_c * load_type(
   693 		const eap_type_value_e type,
   714 		const eap_type_value_e type,
   694 		const eap_type_value_e tunneling_type,
   715 		const eap_type_value_e tunneling_type,
   695 		const eap_am_network_id_c * const receive_network_id);
   716 		const eap_am_network_id_c * const receive_network_id);
   696 
   717 
   697 	EAP_FUNC_IMPORT void trace_eap_packet(
   718 	EAP_FUNC_VISIBILITY_EAP_CORE_H void trace_eap_packet(
   698 		eap_const_string prefix,
   719 		eap_const_string prefix,
   699 		const eap_header_wr_c * const eap_header);
   720 		const eap_header_wr_c * const eap_header);
   700 
   721 
   701 	// This is documented in abs_eap_stack_interface_c::packet_process().
   722 	// This is documented in abs_eap_stack_interface_c::packet_process().
   702 	EAP_FUNC_IMPORT eap_status_e packet_process(
   723 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e packet_process(
   703 		const eap_am_network_id_c * const receive_network_id,
   724 		const eap_am_network_id_c * const receive_network_id,
   704 		eap_general_header_base_c * const packet_data,
   725 		eap_general_header_base_c * const packet_data,
   705 		const u32_t packet_length); 
   726 		const u32_t packet_length); 
   706 
   727 
   707 	// This is documented in abs_eap_base_type_c::packet_send().
   728 	// This is documented in abs_eap_base_type_c::packet_send().
   708 	EAP_FUNC_IMPORT eap_status_e packet_send(
   729 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e packet_send(
   709 		const eap_am_network_id_c * const send_network_id,
   730 		const eap_am_network_id_c * const send_network_id,
   710 		eap_buf_chain_wr_c * const sent_packet,
   731 		eap_buf_chain_wr_c * const sent_packet,
   711 		const u32_t header_offset,
   732 		const u32_t header_offset,
   712 		const u32_t data_length,
   733 		const u32_t data_length,
   713 		const u32_t buffer_length); 
   734 		const u32_t buffer_length); 
   714 
   735 
   715 	/**
   736 	/**
   716 	 * The get_partner() function returns pointer to partner class.
   737 	 * The get_partner() function returns pointer to partner class.
   717 	 */
   738 	 */
   718 	EAP_FUNC_IMPORT abs_eap_core_c * get_partner();
   739 	EAP_FUNC_VISIBILITY_EAP_CORE_H abs_eap_core_c * get_partner();
   719 
   740 
   720 	/**
   741 	/**
   721 	 * The set_partner() function sets pointer to partner class.
   742 	 * The set_partner() function sets pointer to partner class.
   722 	 */
   743 	 */
   723 	EAP_FUNC_IMPORT void set_partner(abs_eap_core_c * const partner);
   744 	EAP_FUNC_VISIBILITY_EAP_CORE_H void set_partner(abs_eap_core_c * const partner);
   724 
   745 
   725 	// This is documented in abs_eap_base_type_c::get_header_offset().
   746 	// This is documented in abs_eap_base_type_c::get_header_offset().
   726 	EAP_FUNC_IMPORT u32_t get_header_offset(
   747 	EAP_FUNC_VISIBILITY_EAP_CORE_H u32_t get_header_offset(
   727 		u32_t * const MTU,
   748 		u32_t * const MTU,
   728 		u32_t * const trailer_length);
   749 		u32_t * const trailer_length);
   729 
   750 
   730 	// This is documented in abs_eap_base_type_c::load_module().
   751 	// This is documented in abs_eap_base_type_c::load_module().
   731 	EAP_FUNC_IMPORT eap_status_e load_module(
   752 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e load_module(
   732 		const eap_type_value_e type,
   753 		const eap_type_value_e type,
   733 		const eap_type_value_e /* tunneling_type */,
   754 		const eap_type_value_e /* tunneling_type */,
   734 		abs_eap_base_type_c * const partner,
   755 		abs_eap_base_type_c * const partner,
   735 		eap_base_type_c ** const eap_type,
   756 		eap_base_type_c ** const eap_type,
   736 		const bool is_client_when_true,
   757 		const bool is_client_when_true,
   737 		const eap_am_network_id_c * const receive_network_id);
   758 		const eap_am_network_id_c * const receive_network_id);
   738 
   759 
   739 	// This is documented in abs_eap_base_type_c::unload_module().
   760 	// This is documented in abs_eap_base_type_c::unload_module().
   740 	EAP_FUNC_IMPORT eap_status_e unload_module(
   761 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e unload_module(
   741 		const eap_type_value_e type); 
   762 		const eap_type_value_e type); 
   742 
   763 
   743 	/**
   764 	/**
   744 	 * The adaptation module calls the eap_acknowledge() function after
   765 	 * The adaptation module calls the eap_acknowledge() function after
   745 	 * any Network Protocol packet is received. This is used as a success indication.
   766 	 * any Network Protocol packet is received. This is used as a success indication.
   746 	 * This is described in RFC 2284 "PPP Extensible Authentication Protocol (EAP)".
   767 	 * This is described in RFC 2284 "PPP Extensible Authentication Protocol (EAP)".
   747 	 * Mostly there is only one session in the client.
   768 	 * Mostly there is only one session in the client.
   748 	 * The server does not need eap_acknowledge() function because
   769 	 * The server does not need eap_acknowledge() function because
   749 	 * server (EAP-authenticator) sends the EAP-success message.
   770 	 * server (EAP-authenticator) sends the EAP-success message.
   750 	 */
   771 	 */
   751 	EAP_FUNC_IMPORT eap_status_e eap_acknowledge(
   772 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e eap_acknowledge(
   752 		const eap_am_network_id_c * const receive_network_id); 
   773 		const eap_am_network_id_c * const receive_network_id); 
   753 
   774 
   754 	// This is documented in abs_eap_base_type_c::restart_authentication().
   775 	// This is documented in abs_eap_base_type_c::restart_authentication().
   755 	EAP_FUNC_IMPORT eap_status_e restart_authentication(
   776 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e restart_authentication(
   756 		const eap_am_network_id_c * const send_network_id,
   777 		const eap_am_network_id_c * const send_network_id,
   757 		const bool is_client_when_true);
   778 		const bool is_client_when_true);
   758 
   779 
   759 	/**
   780 	/**
   760 	 * The EAP Core calls the send_eap_nak_response() function
   781 	 * The EAP Core calls the send_eap_nak_response() function
   761 	 * when EAP-authentication with requested EAP type is not possible.
   782 	 * when EAP-authentication with requested EAP type is not possible.
   762 	 * @param receive_network_id includes the addresses (network identity) and packet type.
   783 	 * @param receive_network_id includes the addresses (network identity) and packet type.
   763 	 * @param eap_identifier is the EAP-Identifier to be used with EAP-Nak message.
   784 	 * @param eap_identifier is the EAP-Identifier to be used with EAP-Nak message.
   764 	 * @param preferred_eap_type is the acceptable EAP-Type to be informed with an other peer.
   785 	 * @param preferred_eap_type is the acceptable EAP-Type to be informed with an other peer.
   765 	 */
   786 	 */
   766 	EAP_FUNC_IMPORT eap_status_e send_eap_nak_response(
   787 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e send_eap_nak_response(
   767 		const eap_am_network_id_c * const receive_network_id,
   788 		const eap_am_network_id_c * const receive_network_id,
   768 		const u8_t eap_identifier,
   789 		const u8_t eap_identifier,
   769 		const eap_array_c<eap_type_value_e> * const eap_type_list);
   790 		const eap_array_c<eap_type_value_e> * const eap_type_list);
   770 
   791 
   771 
   792 
   774 	/**
   795 	/**
   775 	 * The EAP Core calls the send_eap_identity_request() function
   796 	 * The EAP Core calls the send_eap_identity_request() function
   776 	 * when EAP-authentication is needed with another peer.
   797 	 * when EAP-authentication is needed with another peer.
   777 	 * @param network_id includes the addresses (network identity) and packet type.
   798 	 * @param network_id includes the addresses (network identity) and packet type.
   778 	 */
   799 	 */
   779 	EAP_FUNC_IMPORT eap_status_e send_eap_identity_request(
   800 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e send_eap_identity_request(
   780 		const eap_am_network_id_c * const network_id);
   801 		const eap_am_network_id_c * const network_id);
   781 
   802 
   782 	/**
   803 	/**
   783 	 * This function sends EAP-Success.
   804 	 * This function sends EAP-Success.
   784 	 */
   805 	 */
   785 	EAP_FUNC_IMPORT eap_status_e send_eap_success(
   806 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e send_eap_success(
   786 		const eap_am_network_id_c * const send_network_id,
   807 		const eap_am_network_id_c * const send_network_id,
   787 		const u8_t eap_identifier);
   808 		const u8_t eap_identifier);
   788 
   809 
   789 	/**
   810 	/**
   790 	 * This function sends EAP-Failure.
   811 	 * This function sends EAP-Failure.
   791 	 */
   812 	 */
   792 	EAP_FUNC_IMPORT eap_status_e send_eap_failure(
   813 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e send_eap_failure(
   793 		const eap_am_network_id_c * const send_network_id,
   814 		const eap_am_network_id_c * const send_network_id,
   794 		const u8_t eap_identifier);
   815 		const u8_t eap_identifier);
   795 
   816 
   796 #endif //#if defined(USE_EAP_CORE_SERVER)
   817 #endif //#if defined(USE_EAP_CORE_SERVER)
   797 
   818 
   798 
   819 
   799 	// This is documented in abs_eap_base_type_c::packet_data_crypto_keys().
   820 	// This is documented in abs_eap_base_type_c::packet_data_crypto_keys().
   800 	EAP_FUNC_IMPORT eap_status_e packet_data_crypto_keys(
   821 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e packet_data_crypto_keys(
   801 		const eap_am_network_id_c * const send_network_id,
   822 		const eap_am_network_id_c * const send_network_id,
   802 		const eap_master_session_key_c * const master_session_key
   823 		const eap_master_session_key_c * const master_session_key
   803 		);
   824 		);
   804 
   825 
   805 	// This is documented in abs_eap_stack_interface_c::configure().
   826 	// This is documented in abs_eap_stack_interface_c::configure().
   806 	EAP_FUNC_IMPORT eap_status_e configure();
   827 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e configure();
   807 
   828 
   808 	// This is documented in abs_eap_stack_interface_c::shutdown().
   829 	// This is documented in abs_eap_stack_interface_c::shutdown().
   809 	EAP_FUNC_IMPORT eap_status_e shutdown();
   830 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e shutdown();
   810 
   831 
   811 	// This is documented in abs_eap_base_type_c::read_configure().
   832 	// This is documented in abs_eap_base_type_c::read_configure().
   812 	EAP_FUNC_IMPORT virtual eap_status_e read_configure(
   833 	EAP_FUNC_VISIBILITY_EAP_CORE_H virtual eap_status_e read_configure(
   813 		const eap_configuration_field_c * const field,
   834 		const eap_configuration_field_c * const field,
   814 		eap_variable_data_c * const data);
   835 		eap_variable_data_c * const data);
   815 
   836 
   816 	// This is documented in abs_eap_base_type_c::write_configure().
   837 	// This is documented in abs_eap_base_type_c::write_configure().
   817 	EAP_FUNC_IMPORT virtual eap_status_e write_configure(
   838 	EAP_FUNC_VISIBILITY_EAP_CORE_H virtual eap_status_e write_configure(
   818 		const eap_configuration_field_c * const field,
   839 		const eap_configuration_field_c * const field,
   819 		eap_variable_data_c * const data);
   840 		eap_variable_data_c * const data);
   820 
   841 
   821 	// This is documented in abs_eap_stack_interface_c::set_is_valid().
   842 	// This is documented in abs_eap_stack_interface_c::set_is_valid().
   822 	EAP_FUNC_IMPORT void set_is_valid();
   843 	EAP_FUNC_VISIBILITY_EAP_CORE_H void set_is_valid();
   823 
   844 
   824 	// This is documented in abs_eap_stack_interface_c::get_is_valid().
   845 	// This is documented in abs_eap_stack_interface_c::get_is_valid().
   825 	EAP_FUNC_IMPORT bool get_is_valid();
   846 	EAP_FUNC_VISIBILITY_EAP_CORE_H bool get_is_valid();
   826 
   847 
   827 	// This is documented in abs_eap_base_type_c::state_notification().
   848 	// This is documented in abs_eap_base_type_c::state_notification().
   828 	EAP_FUNC_IMPORT void state_notification(
   849 	EAP_FUNC_VISIBILITY_EAP_CORE_H void state_notification(
   829 		const abs_eap_state_notification_c * const state);
   850 		const abs_eap_state_notification_c * const state);
   830 
   851 
   831 	// See abs_eap_base_timer_c::timer_expired().
   852 	// See abs_eap_base_timer_c::timer_expired().
   832 	EAP_FUNC_IMPORT eap_status_e timer_expired(
   853 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e timer_expired(
   833 		const u32_t id, void *data);
   854 		const u32_t id, void *data);
   834 
   855 
   835 	// See abs_eap_base_timer_c::timer_delete_data().
   856 	// See abs_eap_base_timer_c::timer_delete_data().
   836 	EAP_FUNC_IMPORT eap_status_e timer_delete_data(
   857 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e timer_delete_data(
   837 		const u32_t id, void *data);
   858 		const u32_t id, void *data);
   838 
   859 
   839 	/**
   860 	/**
   840 	 * eap_core_map_c class increases reference count each time reference to stored object is get.
   861 	 * eap_core_map_c class increases reference count each time reference to stored object is get.
   841 	 * Here is always just one state for one session so no references are used.
   862 	 * Here is always just one state for one session so no references are used.
   842 	 */
   863 	 */
   843 	EAP_FUNC_IMPORT void object_increase_reference_count();
   864 	EAP_FUNC_VISIBILITY_EAP_CORE_H void object_increase_reference_count();
   844 
   865 
   845 	/**
   866 	/**
   846 	 * eap_core_map_c class increases reference count each time reference to stored object is get.
   867 	 * eap_core_map_c class increases reference count each time reference to stored object is get.
   847 	 *  Here is always just one state for one session so no references are used.
   868 	 *  Here is always just one state for one session so no references are used.
   848 	 */
   869 	 */
   849 	EAP_FUNC_IMPORT u32_t object_decrease_reference_count();
   870 	EAP_FUNC_VISIBILITY_EAP_CORE_H u32_t object_decrease_reference_count();
   850 
   871 
   851 	/**
   872 	/**
   852 	 * @{ Add configuration of accepted EAP-types. }
   873 	 * @{ Add configuration of accepted EAP-types. }
   853 	 */
   874 	 */
   854 	// This is documented in abs_eap_base_type_c::check_is_valid_eap_type().
   875 	// This is documented in abs_eap_base_type_c::check_is_valid_eap_type().
   855 	EAP_FUNC_IMPORT eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   876 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   856 
   877 
   857 	// This is commented in abs_eap_base_type_c::get_eap_type_list().
   878 	// This is commented in abs_eap_base_type_c::get_eap_type_list().
   858 	EAP_FUNC_IMPORT eap_status_e get_eap_type_list(
   879 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e get_eap_type_list(
   859 		eap_array_c<eap_type_value_e> * const eap_type_list);
   880 		eap_array_c<eap_type_value_e> * const eap_type_list);
   860 
   881 
   861 	/**
   882 	/**
   862 	 * Gets flag whether this session is marked removed.
   883 	 * Gets flag whether this session is marked removed.
   863 	 * Session is removed later if it is not reused.
   884 	 * Session is removed later if it is not reused.
   864 	 */
   885 	 */
   865 	EAP_FUNC_IMPORT bool get_marked_removed();
   886 	EAP_FUNC_VISIBILITY_EAP_CORE_H bool get_marked_removed();
   866 
   887 
   867 	/**
   888 	/**
   868 	 * Marks this session removed.
   889 	 * Marks this session removed.
   869 	 * Session is removed later if it is not reused.
   890 	 * Session is removed later if it is not reused.
   870 	 */
   891 	 */
   871 	EAP_FUNC_IMPORT void set_marked_removed();
   892 	EAP_FUNC_VISIBILITY_EAP_CORE_H void set_marked_removed();
   872 
   893 
   873 	/**
   894 	/**
   874 	 * Marks this session not removed.
   895 	 * Marks this session not removed.
   875 	 * Session is not removed it is reused.
   896 	 * Session is not removed it is reused.
   876 	 */
   897 	 */
   877 	EAP_FUNC_IMPORT void unset_marked_removed();
   898 	EAP_FUNC_VISIBILITY_EAP_CORE_H void unset_marked_removed();
   878 
   899 
   879 	/**
   900 	/**
   880 	 * Prevents all notifications.
   901 	 * Prevents all notifications.
   881 	 */
   902 	 */
   882 	EAP_FUNC_IMPORT void ignore_notifications();
   903 	EAP_FUNC_VISIBILITY_EAP_CORE_H void ignore_notifications();
   883 
   904 
   884 	/**
   905 	/**
   885 	 * This function must reset the state of object to same as 
   906 	 * This function must reset the state of object to same as 
   886 	 * state was after the configure() function call.
   907 	 * state was after the configure() function call.
   887 	 * If object reset succeeds this function must return eap_status_ok.
   908 	 * If object reset succeeds this function must return eap_status_ok.
   888 	 * If object reset fails this function must return corresponding error status.
   909 	 * If object reset fails this function must return corresponding error status.
   889 	 * @return This function returns the status of reset operation.
   910 	 * @return This function returns the status of reset operation.
   890 	 */
   911 	 */
   891 	EAP_FUNC_IMPORT eap_status_e reset();
   912 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e reset();
   892 
   913 
   893 	// This is documented in abs_eap_base_type_c::complete_eap_identity_query().
   914 	// This is documented in abs_eap_base_type_c::complete_eap_identity_query().
   894 	EAP_FUNC_IMPORT eap_status_e complete_eap_identity_query(
   915 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e complete_eap_identity_query(
   895 		const eap_am_network_id_c * const send_network_id,
   916 		const eap_am_network_id_c * const send_network_id,
   896 		const eap_variable_data_c * const identity,
   917 		const eap_variable_data_c * const identity,
   897 		const u8_t eap_identifier);
   918 		const u8_t eap_identifier);
   898 
   919 
   899 	// This is documented in abs_eap_base_type_c::get_saved_eap_identity().
   920 	// This is documented in abs_eap_base_type_c::get_saved_eap_identity().
   900 	EAP_FUNC_IMPORT eap_status_e get_saved_eap_identity(eap_variable_data_c * const identity);
   921 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e get_saved_eap_identity(eap_variable_data_c * const identity);
   901 
   922 
   902 	// This is documented in abs_eap_base_type_c::set_session_timeout().
   923 	// This is documented in abs_eap_base_type_c::set_session_timeout().
   903 	EAP_FUNC_IMPORT eap_status_e set_session_timeout(
   924 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e set_session_timeout(
   904 		const u32_t session_timeout_ms);
   925 		const u32_t session_timeout_ms);
   905 
   926 
   906 	// This is documented in abs_eap_base_type_c::set_timer().
   927 	// This is documented in abs_eap_base_type_c::set_timer().
   907 	EAP_FUNC_IMPORT eap_status_e set_timer(
   928 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e set_timer(
   908 		abs_eap_base_timer_c * const p_initializer, 
   929 		abs_eap_base_timer_c * const p_initializer, 
   909 		const u32_t p_id, 
   930 		const u32_t p_id, 
   910 		void * const p_data,
   931 		void * const p_data,
   911 		const u32_t p_time_ms);
   932 		const u32_t p_time_ms);
   912 
   933 
   913 	// This is documented in abs_eap_base_type_c::cancel_timer().
   934 	// This is documented in abs_eap_base_type_c::cancel_timer().
   914 	EAP_FUNC_IMPORT eap_status_e cancel_timer(
   935 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e cancel_timer(
   915 		abs_eap_base_timer_c * const p_initializer, 
   936 		abs_eap_base_timer_c * const p_initializer, 
   916 		const u32_t p_id);
   937 		const u32_t p_id);
   917 
   938 
   918 	// This is documented in abs_eap_base_type_c::set_authentication_role().
   939 	// This is documented in abs_eap_base_type_c::set_authentication_role().
   919 	EAP_FUNC_IMPORT eap_status_e set_authentication_role(const bool when_true_set_client);
   940 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e set_authentication_role(const bool when_true_set_client);
   920 
   941 
   921 	// This is documented in abs_eap_base_type_c::add_rogue_ap().
   942 	// This is documented in abs_eap_base_type_c::add_rogue_ap().
   922 	EAP_FUNC_IMPORT eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   943 	EAP_FUNC_VISIBILITY_EAP_CORE_H eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   923 
   944 
   924 	// This is documented in abs_eap_base_type_c::get_is_tunneled().
   945 	// This is documented in abs_eap_base_type_c::get_is_tunneled().
   925 	EAP_FUNC_IMPORT bool get_is_tunneled_eap() const;
   946 	EAP_FUNC_VISIBILITY_EAP_CORE_H bool get_is_tunneled_eap() const;
   926 
   947 
   927 	//--------------------------------------------------
   948 	//--------------------------------------------------
   928 }; // class eap_core_c
   949 }; // class eap_core_c
   929 
   950 
   930 
   951