eapol/eapol_framework/eapol_common/include/ethernet_core.h
changeset 49 43351a4f2da3
parent 26 9abfd4f00d37
equal deleted inserted replaced
47:712b4ffd76bb 49:43351a4f2da3
    22 #if !defined(_ETHERNET_CORE_H_)
    22 #if !defined(_ETHERNET_CORE_H_)
    23 #define _ETHERNET_CORE_H_
    23 #define _ETHERNET_CORE_H_
    24 
    24 
    25 #include "eap_tools.h"
    25 #include "eap_tools.h"
    26 #include "eap_am_export.h"
    26 #include "eap_am_export.h"
       
    27 // Start: added by script change_export_macros.sh.
       
    28 #if defined(EAP_NO_EXPORT_ETHERNET_CORE_H)
       
    29 	#define EAP_CLASS_VISIBILITY_ETHERNET_CORE_H EAP_NONSHARABLE 
       
    30 	#define EAP_FUNC_VISIBILITY_ETHERNET_CORE_H 
       
    31 	#define EAP_C_FUNC_VISIBILITY_ETHERNET_CORE_H 
       
    32 	#define EAP_FUNC_EXPORT_ETHERNET_CORE_H 
       
    33 	#define EAP_C_FUNC_EXPORT_ETHERNET_CORE_H 
       
    34 #elif defined(EAP_EXPORT_ETHERNET_CORE_H)
       
    35 	#define EAP_CLASS_VISIBILITY_ETHERNET_CORE_H EAP_EXPORT 
       
    36 	#define EAP_FUNC_VISIBILITY_ETHERNET_CORE_H EAP_FUNC_EXPORT 
       
    37 	#define EAP_C_FUNC_VISIBILITY_ETHERNET_CORE_H EAP_C_FUNC_EXPORT 
       
    38 	#define EAP_FUNC_EXPORT_ETHERNET_CORE_H EAP_FUNC_EXPORT 
       
    39 	#define EAP_C_FUNC_EXPORT_ETHERNET_CORE_H EAP_C_FUNC_EXPORT 
       
    40 #else
       
    41 	#define EAP_CLASS_VISIBILITY_ETHERNET_CORE_H EAP_IMPORT 
       
    42 	#define EAP_FUNC_VISIBILITY_ETHERNET_CORE_H EAP_FUNC_IMPORT 
       
    43 	#define EAP_C_FUNC_VISIBILITY_ETHERNET_CORE_H EAP_C_FUNC_IMPORT 
       
    44 	#define EAP_FUNC_EXPORT_ETHERNET_CORE_H 
       
    45 	#define EAP_C_FUNC_EXPORT_ETHERNET_CORE_H 
       
    46 #endif
       
    47 // End: added by script change_export_macros.sh.
    27 #include "abs_ethernet_core.h"
    48 #include "abs_ethernet_core.h"
    28 #include "abs_eapol_core.h"
    49 #include "abs_eapol_core.h"
    29 #include "eapol_core.h"
    50 #include "eapol_core.h"
    30 #include "eap_base_type.h"
    51 #include "eap_base_type.h"
    31 #include "eap_variable_data.h"
    52 #include "eap_variable_data.h"
    34 #include "eapol_rsna_key_header.h"
    55 #include "eapol_rsna_key_header.h"
    35 #include "eap_database_reference_if.h"
    56 #include "eap_database_reference_if.h"
    36 
    57 
    37 
    58 
    38 /// This class defines the ethernet protocol layer.
    59 /// This class defines the ethernet protocol layer.
    39 class EAP_EXPORT ethernet_core_c
    60 class EAP_CLASS_VISIBILITY_ETHERNET_CORE_H ethernet_core_c
    40 : public abs_eapol_core_c
    61 : public abs_eapol_core_c
    41 , public abs_eap_stack_interface_c
    62 , public abs_eap_stack_interface_c
    42 , public eap_database_reference_if_c
    63 , public eap_database_reference_if_c
    43 {
    64 {
    44 private:
    65 private:
    63 	//--------------------------------------------------
    84 	//--------------------------------------------------
    64 public:
    85 public:
    65 	//--------------------------------------------------
    86 	//--------------------------------------------------
    66 
    87 
    67 	// 
    88 	// 
    68 	EAP_FUNC_IMPORT virtual ~ethernet_core_c();
    89 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H virtual ~ethernet_core_c();
    69 
    90 
    70 	// 
    91 	// 
    71 	EAP_FUNC_IMPORT ethernet_core_c(
    92 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H ethernet_core_c(
    72 		abs_eap_am_tools_c * const m_am_tools,
    93 		abs_eap_am_tools_c * const m_am_tools,
    73 		abs_ethernet_core_c * const partner,
    94 		abs_ethernet_core_c * const partner,
    74 		const bool is_client_when_true);
    95 		const bool is_client_when_true);
    75 
    96 
    76 	EAP_FUNC_IMPORT eap_status_e cancel_all_authentication_sessions();
    97 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e cancel_all_authentication_sessions();
    77 
    98 
    78 	//
    99 	//
    79 	EAP_FUNC_IMPORT eap_base_type_c * load_type(const eap_type_value_e type);
   100 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_base_type_c * load_type(const eap_type_value_e type);
    80 
   101 
    81 	// This is documented in abs_eap_stack_interface_c::packet_process().
   102 	// This is documented in abs_eap_stack_interface_c::packet_process().
    82 	EAP_FUNC_IMPORT eap_status_e packet_process(
   103 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e packet_process(
    83 		const eap_am_network_id_c * const receive_network_id,
   104 		const eap_am_network_id_c * const receive_network_id,
    84 		eap_general_header_base_c * const packet_data,
   105 		eap_general_header_base_c * const packet_data,
    85 		const u32_t packet_length); 
   106 		const u32_t packet_length); 
    86 
   107 
    87 	//
   108 	//
    88 	EAP_FUNC_IMPORT eap_status_e packet_send(
   109 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e packet_send(
    89 		const eap_am_network_id_c * const send_network_id,
   110 		const eap_am_network_id_c * const send_network_id,
    90 		eap_buf_chain_wr_c * const sent_packet,
   111 		eap_buf_chain_wr_c * const sent_packet,
    91 		const u32_t header_offset,
   112 		const u32_t header_offset,
    92 		const u32_t data_length,
   113 		const u32_t data_length,
    93 		const u32_t buffer_length); 
   114 		const u32_t buffer_length); 
    94 
   115 
    95 	//
   116 	//
    96 	EAP_FUNC_IMPORT u32_t get_header_offset(
   117 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H u32_t get_header_offset(
    97 		u32_t * const MTU,
   118 		u32_t * const MTU,
    98 		u32_t * const trailer_length);
   119 		u32_t * const trailer_length);
    99 
   120 
   100 	//
   121 	//
   101 	EAP_FUNC_IMPORT eap_status_e eap_acknowledge(const eap_am_network_id_c * const receive_network_id); 
   122 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e eap_acknowledge(const eap_am_network_id_c * const receive_network_id); 
   102 
   123 
   103 	//
   124 	//
   104 	EAP_FUNC_IMPORT eap_status_e load_module(
   125 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e load_module(
   105 		const eap_type_value_e type,
   126 		const eap_type_value_e type,
   106 		const eap_type_value_e /* tunneling_type */,
   127 		const eap_type_value_e /* tunneling_type */,
   107 		abs_eap_base_type_c * const partner,
   128 		abs_eap_base_type_c * const partner,
   108 		eap_base_type_c ** const eap_type,
   129 		eap_base_type_c ** const eap_type,
   109 		const bool is_client_when_true,
   130 		const bool is_client_when_true,
   110 		const eap_am_network_id_c * const receive_network_id);
   131 		const eap_am_network_id_c * const receive_network_id);
   111 
   132 
   112 	//
   133 	//
   113 	EAP_FUNC_IMPORT eap_status_e unload_module(const eap_type_value_e type); 
   134 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e unload_module(const eap_type_value_e type); 
   114 
   135 
   115 	/**
   136 	/**
   116 	 * This function checks whether PMKSA is cached to each eap_am_network_id_c object.
   137 	 * This function checks whether PMKSA is cached to each eap_am_network_id_c object.
   117 	 * Function removes eap_am_network_id_c object from bssid_sta_receive_network_ids if there are
   138 	 * Function removes eap_am_network_id_c object from bssid_sta_receive_network_ids if there are
   118 	 * no cached PMKSA for removes eap_am_network_id_c object.
   139 	 * no cached PMKSA for removes eap_am_network_id_c object.
   119 	 * All eap_am_network_id_c objects that exist in bssid_sta_receive_network_ids
   140 	 * All eap_am_network_id_c objects that exist in bssid_sta_receive_network_ids
   120 	 * after function returns have PMKSA cached and read_reassociation_parameters() can be called
   141 	 * after function returns have PMKSA cached and read_reassociation_parameters() can be called
   121 	 * with those eap_am_network_id_c objects.
   142 	 * with those eap_am_network_id_c objects.
   122 	 */
   143 	 */
   123 	EAP_FUNC_IMPORT eap_status_e check_pmksa_cache(
   144 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e check_pmksa_cache(
   124 		eap_array_c<eap_am_network_id_c> * const bssid_sta_receive_network_ids,
   145 		eap_array_c<eap_am_network_id_c> * const bssid_sta_receive_network_ids,
   125 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
   146 		const eapol_key_authentication_type_e selected_eapol_key_authentication_type,
   126 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   147 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   127 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
   148 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
   128 
   149 
   130 	 * This function removes PMKSA from cache.
   151 	 * This function removes PMKSA from cache.
   131 	 * @param receive_network_id carries the MAC addresses.
   152 	 * @param receive_network_id carries the MAC addresses.
   132 	 * MAC address of Authenticator should be in source address.
   153 	 * MAC address of Authenticator should be in source address.
   133 	 * MAC address of Supplicant should be in destination address.
   154 	 * MAC address of Supplicant should be in destination address.
   134 	 */
   155 	 */
   135 	EAP_FUNC_IMPORT eap_status_e remove_pmksa_from_cache(
   156 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e remove_pmksa_from_cache(
   136 		const eap_am_network_id_c * const receive_network_id);
   157 		const eap_am_network_id_c * const receive_network_id);
   137 
   158 
   138 	/**
   159 	/**
   139 	 * This function starts the EAP-authentication.
   160 	 * This function starts the EAP-authentication.
   140 	 * The first parameter includes the network addresses of the protocol
   161 	 * The first parameter includes the network addresses of the protocol
   143 	 * eapol_ethernet_type_e::eapol_ethernet_type_pae.
   164 	 * eapol_ethernet_type_e::eapol_ethernet_type_pae.
   144 	 * Value eapol_ethernet_type_e::eapol_ethernet_type_pae starts normal EA-authentication.
   165 	 * Value eapol_ethernet_type_e::eapol_ethernet_type_pae starts normal EA-authentication.
   145 	 * The second parameter is_client_when_true tells whether this stack
   166 	 * The second parameter is_client_when_true tells whether this stack
   146 	 * is client (true) or server (false).
   167 	 * is client (true) or server (false).
   147 	 */ 
   168 	 */ 
   148 	EAP_FUNC_IMPORT eap_status_e start_authentication(
   169 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e start_authentication(
   149 		const eap_am_network_id_c * const receive_network_id,
   170 		const eap_am_network_id_c * const receive_network_id,
   150 		const bool is_client_when_true);
   171 		const bool is_client_when_true);
   151 
   172 
   152 	/**
   173 	/**
   153 	 * This function starts the preauthentication.
   174 	 * This function starts the preauthentication.
   157 	 * eapol_ethernet_type_e::eapol_ethernet_type_preauthentication.
   178 	 * eapol_ethernet_type_e::eapol_ethernet_type_preauthentication.
   158 	 * Value eapol_ethernet_type_e::eapol_ethernet_type_preauthentication is used 802.11i preauthentication.
   179 	 * Value eapol_ethernet_type_e::eapol_ethernet_type_preauthentication is used 802.11i preauthentication.
   159 	 * The adaptation module calls the start_preauthentication() function
   180 	 * The adaptation module calls the start_preauthentication() function
   160 	 * when preauthentication is needed with another AP.
   181 	 * when preauthentication is needed with another AP.
   161 	 */
   182 	 */
   162 	EAP_FUNC_IMPORT eap_status_e start_preauthentication(
   183 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e start_preauthentication(
   163 		const eap_am_network_id_c * const receive_network_id,
   184 		const eap_am_network_id_c * const receive_network_id,
   164 		const eapol_key_authentication_type_e authentication_type);
   185 		const eapol_key_authentication_type_e authentication_type);
   165 
   186 
   166 	EAP_FUNC_IMPORT eap_status_e read_reassociation_parameters(
   187 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e read_reassociation_parameters(
   167 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
   188 		const eap_am_network_id_c * const old_receive_network_id, ///< source includes remote address, destination includes local address.
   168 		const eap_am_network_id_c * const new_receive_network_id, ///< source includes remote address, destination includes local address.
   189 		const eap_am_network_id_c * const new_receive_network_id, ///< source includes remote address, destination includes local address.
   169 		const eapol_key_authentication_type_e authentication_type,
   190 		const eapol_key_authentication_type_e authentication_type,
   170 		eap_variable_data_c * const PMKID,
   191 		eap_variable_data_c * const PMKID,
   171 		const eap_variable_data_c * const received_WPA_ie,
   192 		const eap_variable_data_c * const received_WPA_ie,
   172 		const eap_variable_data_c * const sent_WPA_ie);
   193 		const eap_variable_data_c * const sent_WPA_ie);
   173 
   194 
   174 	EAP_FUNC_IMPORT eap_status_e start_reassociation(
   195 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e start_reassociation(
   175 		const eap_am_network_id_c * const receive_network_id,
   196 		const eap_am_network_id_c * const receive_network_id,
   176 		const eapol_key_authentication_type_e authentication_type,
   197 		const eapol_key_authentication_type_e authentication_type,
   177 		const eap_variable_data_c * const PMKID);
   198 		const eap_variable_data_c * const PMKID);
   178 
   199 
   179 	EAP_FUNC_IMPORT eap_status_e complete_reassociation(
   200 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e complete_reassociation(
   180 		const eapol_wlan_authentication_state_e reassociation_result,
   201 		const eapol_wlan_authentication_state_e reassociation_result,
   181 		const eap_am_network_id_c * const receive_network_id,
   202 		const eap_am_network_id_c * const receive_network_id,
   182 		const eapol_key_authentication_type_e authentication_type,
   203 		const eapol_key_authentication_type_e authentication_type,
   183 		const eap_variable_data_c * const received_WPA_IE, // WLM must give only the WPA IE to EAPOL
   204 		const eap_variable_data_c * const received_WPA_IE, // WLM must give only the WPA IE to EAPOL
   184 		const eap_variable_data_c * const sent_WPA_IE,
   205 		const eap_variable_data_c * const sent_WPA_IE,
   185 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   206 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e pairwise_key_cipher_suite,
   186 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
   207 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e group_key_cipher_suite);
   187 
   208 
   188 	EAP_FUNC_IMPORT eap_status_e start_WPXM_reassociation(
   209 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e start_WPXM_reassociation(
   189 		const eap_am_network_id_c * const receive_network_id,
   210 		const eap_am_network_id_c * const receive_network_id,
   190 		const eapol_key_authentication_type_e authentication_type,
   211 		const eapol_key_authentication_type_e authentication_type,
   191 		eap_variable_data_c * const send_reassociation_request_ie);
   212 		eap_variable_data_c * const send_reassociation_request_ie);
   192 
   213 
   193 	EAP_FUNC_IMPORT eap_status_e complete_WPXM_reassociation(
   214 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e complete_WPXM_reassociation(
   194 		const eapol_wlan_authentication_state_e reassociation_result,
   215 		const eapol_wlan_authentication_state_e reassociation_result,
   195 		const eap_am_network_id_c * const receive_network_id,
   216 		const eap_am_network_id_c * const receive_network_id,
   196 		const eapol_key_authentication_type_e authentication_type,
   217 		const eapol_key_authentication_type_e authentication_type,
   197 		const eap_variable_data_c * const received_reassociation_ie);
   218 		const eap_variable_data_c * const received_reassociation_ie);
   198 
   219 
   199 	EAP_FUNC_IMPORT eap_status_e send_logoff(
   220 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e send_logoff(
   200 		const eap_am_network_id_c * const receive_network_id);
   221 		const eap_am_network_id_c * const receive_network_id);
   201 
   222 
   202 	// This is documented in abs_eap_stack_interface_c::set_is_valid().
   223 	// This is documented in abs_eap_stack_interface_c::set_is_valid().
   203 	EAP_FUNC_IMPORT void set_is_valid();
   224 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H void set_is_valid();
   204 
   225 
   205 	// This is documented in abs_eap_stack_interface_c::get_is_valid().
   226 	// This is documented in abs_eap_stack_interface_c::get_is_valid().
   206 	EAP_FUNC_IMPORT bool get_is_valid();
   227 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H bool get_is_valid();
   207 
   228 
   208 	// This is documented in abs_eap_stack_interface_c::configure().
   229 	// This is documented in abs_eap_stack_interface_c::configure().
   209 	EAP_FUNC_IMPORT eap_status_e configure();
   230 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e configure();
   210 
   231 
   211 	// This is documented in abs_eap_stack_interface_c::shutdown().
   232 	// This is documented in abs_eap_stack_interface_c::shutdown().
   212 	EAP_FUNC_IMPORT eap_status_e shutdown();
   233 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e shutdown();
   213 
   234 
   214 	EAP_FUNC_IMPORT eap_status_e packet_data_session_key(
   235 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e packet_data_session_key(
   215 		const eap_am_network_id_c * const send_network_id,
   236 		const eap_am_network_id_c * const send_network_id,
   216 		const eapol_session_key_c * const key);
   237 		const eapol_session_key_c * const key);
   217 
   238 
   218 	EAP_FUNC_IMPORT eap_status_e read_configure(
   239 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e read_configure(
   219 		const eap_configuration_field_c * const field,
   240 		const eap_configuration_field_c * const field,
   220 		eap_variable_data_c * const data);
   241 		eap_variable_data_c * const data);
   221 
   242 
   222 	EAP_FUNC_IMPORT eap_status_e write_configure(
   243 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e write_configure(
   223 		const eap_configuration_field_c * const field,
   244 		const eap_configuration_field_c * const field,
   224 		eap_variable_data_c * const data);
   245 		eap_variable_data_c * const data);
   225 
   246 
   226 	// See abs_eap_base_type_c::state_notification().
   247 	// See abs_eap_base_type_c::state_notification().
   227 	EAP_FUNC_IMPORT void state_notification(
   248 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H void state_notification(
   228 		const abs_eap_state_notification_c * const state);
   249 		const abs_eap_state_notification_c * const state);
   229 
   250 
   230 
   251 
   231 	//
   252 	//
   232 	EAP_FUNC_IMPORT eap_status_e set_timer(
   253 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e set_timer(
   233 		abs_eap_base_timer_c * const p_initializer, 
   254 		abs_eap_base_timer_c * const p_initializer, 
   234 		const u32_t p_id, 
   255 		const u32_t p_id, 
   235 		void * const p_data,
   256 		void * const p_data,
   236 		const u32_t p_time_ms);
   257 		const u32_t p_time_ms);
   237 
   258 
   238 	EAP_FUNC_IMPORT eap_status_e cancel_timer(
   259 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e cancel_timer(
   239 		abs_eap_base_timer_c * const p_initializer, 
   260 		abs_eap_base_timer_c * const p_initializer, 
   240 		const u32_t p_id);
   261 		const u32_t p_id);
   241 
   262 
   242 	//
   263 	//
   243 	EAP_FUNC_IMPORT eap_status_e cancel_all_timers();
   264 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e cancel_all_timers();
   244 
   265 
   245 	//
   266 	//
   246 	EAP_FUNC_IMPORT eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   267 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   247 
   268 
   248 	// See abs_eap_core_c::get_eap_type_list().
   269 	// See abs_eap_core_c::get_eap_type_list().
   249 	EAP_FUNC_IMPORT eap_status_e get_eap_type_list(
   270 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e get_eap_type_list(
   250 		eap_array_c<eap_type_value_e> * const eap_type_list);
   271 		eap_array_c<eap_type_value_e> * const eap_type_list);
   251 
   272 
   252 	/**
   273 	/**
   253 	 * Function creates a state for later use. This is for optimazing 4-Way Handshake.
   274 	 * Function creates a state for later use. This is for optimazing 4-Way Handshake.
   254 	 * @param receive_network_id carries the MAC addresses.
   275 	 * @param receive_network_id carries the MAC addresses.
   255 	 * MAC address of Authenticator should be in source address. MAC address of 
   276 	 * MAC address of Authenticator should be in source address. MAC address of 
   256 	 * Supplicant should be in destination address.
   277 	 * Supplicant should be in destination address.
   257 	 * @param authentication_type is the selected authentication type.
   278 	 * @param authentication_type is the selected authentication type.
   258 	 */
   279 	 */
   259 	EAP_FUNC_IMPORT eap_status_e create_state(
   280 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e create_state(
   260 		const eap_am_network_id_c * const receive_network_id,
   281 		const eap_am_network_id_c * const receive_network_id,
   261 		const eapol_key_authentication_type_e authentication_type
   282 		const eapol_key_authentication_type_e authentication_type
   262 		);
   283 		);
   263 
   284 
   264 
   285 
   269 	 * @param authenticator_RSNA_IE is RSN IE of authenticator. Authenticator sends this in Beacon or Probe message.
   290 	 * @param authenticator_RSNA_IE is RSN IE of authenticator. Authenticator sends this in Beacon or Probe message.
   270 	 * @param supplicant_RSNA_IE is RSN IE of supplicant. Supplicant sends this in (re)association request message.
   291 	 * @param supplicant_RSNA_IE is RSN IE of supplicant. Supplicant sends this in (re)association request message.
   271 	 * @param eapol_pairwise_cipher is the selected pairwise cipher.
   292 	 * @param eapol_pairwise_cipher is the selected pairwise cipher.
   272 	 * @param eapol_group_cipher is the selected group cipher.
   293 	 * @param eapol_group_cipher is the selected group cipher.
   273 	 */
   294 	 */
   274 	EAP_FUNC_IMPORT eap_status_e association(
   295 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e association(
   275 		const eap_am_network_id_c * const receive_network_id,
   296 		const eap_am_network_id_c * const receive_network_id,
   276 		const eapol_key_authentication_type_e authentication_type,
   297 		const eapol_key_authentication_type_e authentication_type,
   277 		const eap_variable_data_c * const authenticator_RSNA_IE,
   298 		const eap_variable_data_c * const authenticator_RSNA_IE,
   278 		const eap_variable_data_c * const supplicant_RSNA_IE,
   299 		const eap_variable_data_c * const supplicant_RSNA_IE,
   279 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e eapol_pairwise_cipher,
   300 		const eapol_RSNA_key_header_c::eapol_RSNA_cipher_e eapol_pairwise_cipher,
   283 	/**
   304 	/**
   284 	 * This function need to be called when client STA disassociates from AP.
   305 	 * This function need to be called when client STA disassociates from AP.
   285 	 * @param receive_network_id carries the MAC addresses.
   306 	 * @param receive_network_id carries the MAC addresses.
   286 	 * MAC address of Authenticator should be in source address. MAC address of Supplicant should be in destination address.
   307 	 * MAC address of Authenticator should be in source address. MAC address of Supplicant should be in destination address.
   287 	 */
   308 	 */
   288 	EAP_FUNC_IMPORT eap_status_e disassociation(
   309 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e disassociation(
   289 		const bool complete_to_lower_layer,
   310 		const bool complete_to_lower_layer,
   290 		const eap_am_network_id_c * const receive_network_id
   311 		const eap_am_network_id_c * const receive_network_id
   291 		);
   312 		);
   292 
   313 
   293 	/// @see abs_eap_core_c::add_rogue_ap().
   314 	/// @see abs_eap_core_c::add_rogue_ap().
   294 	EAP_FUNC_IMPORT eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   315 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   295 
   316 
   296 	EAP_FUNC_IMPORT eap_status_e tkip_mic_failure(
   317 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e tkip_mic_failure(
   297 		const eap_am_network_id_c * const receive_network_id,
   318 		const eap_am_network_id_c * const receive_network_id,
   298 		const bool fatal_failure_when_true,
   319 		const bool fatal_failure_when_true,
   299 		const eapol_RSNA_key_header_c::eapol_tkip_mic_failure_type_e tkip_mic_failure_type);
   320 		const eapol_RSNA_key_header_c::eapol_tkip_mic_failure_type_e tkip_mic_failure_type);
   300 
   321 
   301 	EAP_FUNC_IMPORT eap_status_e complete_check_pmksa_cache(
   322 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e complete_check_pmksa_cache(
   302 		EAP_TEMPLATE_CONST eap_array_c<eap_am_network_id_c> * const bssid_sta_receive_network_ids);
   323 		EAP_TEMPLATE_CONST eap_array_c<eap_am_network_id_c> * const bssid_sta_receive_network_ids);
   303 
   324 
   304 #if defined(USE_EAP_SIMPLE_CONFIG)
   325 #if defined(USE_EAP_SIMPLE_CONFIG)
   305 
   326 
   306 	EAP_FUNC_IMPORT eap_status_e save_simple_config_session(
   327 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e save_simple_config_session(
   307 		const simple_config_state_e state,
   328 		const simple_config_state_e state,
   308 		EAP_TEMPLATE_CONST eap_array_c<simple_config_credential_c> * const credential_array,
   329 		EAP_TEMPLATE_CONST eap_array_c<simple_config_credential_c> * const credential_array,
   309 		const eap_variable_data_c * const new_password,
   330 		const eap_variable_data_c * const new_password,
   310 		const simple_config_Device_Password_ID_e Device_Password_ID,
   331 		const simple_config_Device_Password_ID_e Device_Password_ID,
   311 		const simple_config_payloads_c * const other_configuration);
   332 		const simple_config_payloads_c * const other_configuration);
   312 
   333 
   313 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
   334 #endif // #if defined(USE_EAP_SIMPLE_CONFIG)
   314 
   335 
   315 	EAP_FUNC_IMPORT eap_status_e set_eap_database_reference_values(
   336 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e set_eap_database_reference_values(
   316 		const eap_variable_data_c * const reference);
   337 		const eap_variable_data_c * const reference);
   317 
   338 
   318 	EAP_FUNC_IMPORT eap_status_e get_802_11_authentication_mode(
   339 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e get_802_11_authentication_mode(
   319 		const eap_am_network_id_c * const receive_network_id,
   340 		const eap_am_network_id_c * const receive_network_id,
   320 		const eapol_key_authentication_type_e authentication_type,
   341 		const eapol_key_authentication_type_e authentication_type,
   321 		const eap_variable_data_c * const SSID,
   342 		const eap_variable_data_c * const SSID,
   322 		const eap_variable_data_c * const preshared_key);
   343 		const eap_variable_data_c * const preshared_key);
   323 
   344 
   324 	EAP_FUNC_IMPORT eap_status_e complete_get_802_11_authentication_mode(
   345 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e complete_get_802_11_authentication_mode(
   325 		const eap_status_e completion_status,
   346 		const eap_status_e completion_status,
   326 		const eap_am_network_id_c * const receive_network_id,
   347 		const eap_am_network_id_c * const receive_network_id,
   327 		const eapol_key_802_11_authentication_mode_e mode);
   348 		const eapol_key_802_11_authentication_mode_e mode);
   328 
   349 
   329 	EAP_FUNC_IMPORT eap_status_e complete_disassociation(
   350 	EAP_FUNC_VISIBILITY_ETHERNET_CORE_H eap_status_e complete_disassociation(
   330 		const bool complete_to_lower_layer,
   351 		const bool complete_to_lower_layer,
   331 		const eap_am_network_id_c * const receive_network_id);
   352 		const eap_am_network_id_c * const receive_network_id);
   332 
   353 
   333 	//--------------------------------------------------
   354 	//--------------------------------------------------
   334 }; // class ethernet_core_c
   355 }; // class ethernet_core_c