eapol/eapol_framework/eapol_common/type/radius/include/eap_radius_session.h
changeset 49 43351a4f2da3
parent 26 9abfd4f00d37
equal deleted inserted replaced
47:712b4ffd76bb 49:43351a4f2da3
    22 #if !defined(_EAP_RADIUS_SESSION_H_)
    22 #if !defined(_EAP_RADIUS_SESSION_H_)
    23 #define _EAP_RADIUS_SESSION_H_
    23 #define _EAP_RADIUS_SESSION_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_EAP_RADIUS_SESSION_H)
       
    29 	#define EAP_CLASS_VISIBILITY_EAP_RADIUS_SESSION_H EAP_NONSHARABLE 
       
    30 	#define EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H 
       
    31 	#define EAP_C_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H 
       
    32 	#define EAP_FUNC_EXPORT_EAP_RADIUS_SESSION_H 
       
    33 	#define EAP_C_FUNC_EXPORT_EAP_RADIUS_SESSION_H 
       
    34 #elif defined(EAP_EXPORT_EAP_RADIUS_SESSION_H)
       
    35 	#define EAP_CLASS_VISIBILITY_EAP_RADIUS_SESSION_H EAP_EXPORT 
       
    36 	#define EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H EAP_FUNC_EXPORT 
       
    37 	#define EAP_C_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H EAP_C_FUNC_EXPORT 
       
    38 	#define EAP_FUNC_EXPORT_EAP_RADIUS_SESSION_H EAP_FUNC_EXPORT 
       
    39 	#define EAP_C_FUNC_EXPORT_EAP_RADIUS_SESSION_H EAP_C_FUNC_EXPORT 
       
    40 #else
       
    41 	#define EAP_CLASS_VISIBILITY_EAP_RADIUS_SESSION_H EAP_IMPORT 
       
    42 	#define EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H EAP_FUNC_IMPORT 
       
    43 	#define EAP_C_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H EAP_C_FUNC_IMPORT 
       
    44 	#define EAP_FUNC_EXPORT_EAP_RADIUS_SESSION_H 
       
    45 	#define EAP_C_FUNC_EXPORT_EAP_RADIUS_SESSION_H 
       
    46 #endif
       
    47 // End: added by script change_export_macros.sh.
    27 #include "abs_eap_core.h"
    48 #include "abs_eap_core.h"
    28 #include "eap_core_map.h"
    49 #include "eap_core_map.h"
    29 #include "abs_eap_stack_interface.h"
    50 #include "abs_eap_stack_interface.h"
    30 #include "eap_core.h"
    51 #include "eap_core.h"
    31 #include "eap_radius_payloads.h"
    52 #include "eap_radius_payloads.h"
    52 const u32_t EAP_RADIUS_SESSION_REMOVE_SESSION_TIMEOUT = 0u;
    73 const u32_t EAP_RADIUS_SESSION_REMOVE_SESSION_TIMEOUT = 0u;
    53 
    74 
    54 
    75 
    55 /// A eap_radius_session_c class implements mapping of EAP authentication sessions.
    76 /// A eap_radius_session_c class implements mapping of EAP authentication sessions.
    56 /// Network identity separates parallel EAP authentication sessions.
    77 /// Network identity separates parallel EAP authentication sessions.
    57 class EAP_EXPORT eap_radius_session_c
    78 class EAP_CLASS_VISIBILITY_EAP_RADIUS_SESSION_H eap_radius_session_c
    58 : public abs_eap_core_c
    79 : public abs_eap_core_c
    59 , public abs_eap_core_map_c
    80 , public abs_eap_core_map_c
    60 , public abs_eap_base_timer_c
    81 , public abs_eap_base_timer_c
    61 , public abs_eap_stack_interface_c
    82 , public abs_eap_stack_interface_c
    62 {
    83 {
   102 
   123 
   103 
   124 
   104 	/**
   125 	/**
   105 	 * Function creates a new session.
   126 	 * Function creates a new session.
   106 	 */
   127 	 */
   107 	EAP_FUNC_IMPORT eap_core_c * create_new_session(
   128 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_core_c * create_new_session(
   108 		const eap_am_network_id_c * const receive_network_id);
   129 		const eap_am_network_id_c * const receive_network_id);
   109 
   130 
   110 	EAP_FUNC_IMPORT static eap_status_e shutdown_operation(
   131 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H static eap_status_e shutdown_operation(
   111 		eap_core_c * const core,
   132 		eap_core_c * const core,
   112 		abs_eap_am_tools_c * const m_am_tools);
   133 		abs_eap_am_tools_c * const m_am_tools);
   113 
   134 
   114 	EAP_FUNC_IMPORT eap_status_e reset();
   135 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e reset();
   115 
   136 
   116 	//--------------------------------------------------
   137 	//--------------------------------------------------
   117 protected:
   138 protected:
   118 	//--------------------------------------------------
   139 	//--------------------------------------------------
   119 
   140 
   122 	//--------------------------------------------------
   143 	//--------------------------------------------------
   123 
   144 
   124 	/**
   145 	/**
   125 	 * The destructor of the eap_core class does nothing special.
   146 	 * The destructor of the eap_core class does nothing special.
   126 	 */
   147 	 */
   127 	EAP_FUNC_IMPORT virtual ~eap_radius_session_c();
   148 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H virtual ~eap_radius_session_c();
   128 
   149 
   129 	/**
   150 	/**
   130 	 * The constructor initializes member attributes using parameters passed to it.
   151 	 * The constructor initializes member attributes using parameters passed to it.
   131 	 * @param tools is pointer to the tools class. @see abs_eap_am_tools_c.
   152 	 * @param tools is pointer to the tools class. @see abs_eap_am_tools_c.
   132 	 * @param partner is back pointer to object which created this object.
   153 	 * @param partner is back pointer to object which created this object.
   133 	 * @param is_client_when_true indicates whether the network entity should act
   154 	 * @param is_client_when_true indicates whether the network entity should act
   134 	 * as a client (true) or server (false), in terms of EAP-protocol
   155 	 * as a client (true) or server (false), in terms of EAP-protocol
   135 	 * whether this network entity is EAP-supplicant (true) or EAP-authenticator (false).
   156 	 * whether this network entity is EAP-supplicant (true) or EAP-authenticator (false).
   136 	 */
   157 	 */
   137 	EAP_FUNC_IMPORT eap_radius_session_c(
   158 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_radius_session_c(
   138 		abs_eap_am_tools_c * const tools,
   159 		abs_eap_am_tools_c * const tools,
   139 		abs_eap_radius_session_c * const partner,
   160 		abs_eap_radius_session_c * const partner,
   140 		const bool is_client_when_true,
   161 		const bool is_client_when_true,
   141 		const eap_radius_variable_data_c * const user_name,
   162 		const eap_radius_variable_data_c * const user_name,
   142 		const eap_radius_variable_data_c * const nas_ip_address);
   163 		const eap_radius_variable_data_c * const nas_ip_address);
   143 
   164 
   144 	EAP_FUNC_IMPORT eap_status_e save_request_data(
   165 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e save_request_data(
   145 		const void * const data,
   166 		const void * const data,
   146 		const u32_t data_length,
   167 		const u32_t data_length,
   147 		const u8_t identifier);
   168 		const u8_t identifier);
   148 
   169 
   149 	EAP_FUNC_IMPORT u8_t get_identifier();
   170 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H u8_t get_identifier();
   150 
   171 
   151 	EAP_FUNC_IMPORT const eap_variable_data_c * get_shared_secret() const;
   172 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H const eap_variable_data_c * get_shared_secret() const;
   152 
   173 
   153 	EAP_FUNC_IMPORT const eap_variable_data_c * get_request_authenticator();
   174 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H const eap_variable_data_c * get_request_authenticator();
   154 
   175 
   155 	EAP_FUNC_IMPORT const eap_radius_variable_data_c * get_user_name();
   176 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H const eap_radius_variable_data_c * get_user_name();
   156 
   177 
   157 	EAP_FUNC_IMPORT eap_state_variable_e get_state();
   178 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_state_variable_e get_state();
   158 
   179 
   159 	EAP_FUNC_IMPORT eap_variable_data_c * get_master_session_key();
   180 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_variable_data_c * get_master_session_key();
   160 
   181 
   161 	// This is documented in abs_eap_stack_interface_c::packet_process().
   182 	// This is documented in abs_eap_stack_interface_c::packet_process().
   162 	EAP_FUNC_IMPORT eap_status_e packet_process(
   183 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e packet_process(
   163 		const eap_am_network_id_c * const receive_network_id,
   184 		const eap_am_network_id_c * const receive_network_id,
   164 		eap_general_header_base_c * const packet_data,
   185 		eap_general_header_base_c * const packet_data,
   165 		const u32_t packet_length); 
   186 		const u32_t packet_length); 
   166 
   187 
   167 	/**
   188 	/**
   171 	 * EAP-packet in correct offset.
   192 	 * EAP-packet in correct offset.
   172 	 * @param header_offset is offset of the EAP-header within the sent_packet.
   193 	 * @param header_offset is offset of the EAP-header within the sent_packet.
   173 	 * @param data_length is length in bytes of the EAP-packet.
   194 	 * @param data_length is length in bytes of the EAP-packet.
   174 	 * @param buffer_length is length in bytes of the whole packet buffer.
   195 	 * @param buffer_length is length in bytes of the whole packet buffer.
   175 	 */
   196 	 */
   176 	EAP_FUNC_IMPORT eap_status_e packet_send(
   197 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e packet_send(
   177 		const eap_am_network_id_c * const send_network_id,
   198 		const eap_am_network_id_c * const send_network_id,
   178 		eap_buf_chain_wr_c * const sent_packet,
   199 		eap_buf_chain_wr_c * const sent_packet,
   179 		const u32_t header_offset,
   200 		const u32_t header_offset,
   180 		const u32_t data_length,
   201 		const u32_t data_length,
   181 		const u32_t buffer_length); 
   202 		const u32_t buffer_length); 
   182 
   203 
   183 	EAP_FUNC_IMPORT void object_increase_reference_count();
   204 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H void object_increase_reference_count();
   184 
   205 
   185 	EAP_FUNC_IMPORT u32_t object_decrease_reference_count();
   206 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H u32_t object_decrease_reference_count();
   186 
   207 
   187 	/**
   208 	/**
   188 	 * The get_partner() function returns pointer to partner class.
   209 	 * The get_partner() function returns pointer to partner class.
   189 	 */
   210 	 */
   190 	EAP_FUNC_IMPORT abs_eap_radius_session_c * get_partner();
   211 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H abs_eap_radius_session_c * get_partner();
   191 
   212 
   192 	/**
   213 	/**
   193 	 * The get_header_offset() function obtains the header offset of EAP-packet.
   214 	 * The get_header_offset() function obtains the header offset of EAP-packet.
   194 	 * @param MTU_length is pointer to variable to store the maximum transfer unit (MTU).
   215 	 * @param MTU_length is pointer to variable to store the maximum transfer unit (MTU).
   195 	 * MTU is the maximum EAP-packet length in bytes
   216 	 * MTU is the maximum EAP-packet length in bytes
   196 	 * @param trailer_length is pointer to the variable to store length
   217 	 * @param trailer_length is pointer to the variable to store length
   197 	 * of trailer needed by lower levels.
   218 	 * of trailer needed by lower levels.
   198 	 * @return Function returns the offset of EAP-header.
   219 	 * @return Function returns the offset of EAP-header.
   199 	 * @see abs_eap_base_type_c::get_header_offset().
   220 	 * @see abs_eap_base_type_c::get_header_offset().
   200 	 */
   221 	 */
   201 	EAP_FUNC_IMPORT u32_t get_header_offset(
   222 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H u32_t get_header_offset(
   202 		u32_t * const MTU,
   223 		u32_t * const MTU,
   203 		u32_t * const trailer_length);
   224 		u32_t * const trailer_length);
   204 
   225 
   205 	/**
   226 	/**
   206 	 * The unload_module() function initializes un-load of desired EAP-type.
   227 	 * The unload_module() function initializes un-load of desired EAP-type.
   207 	 * After the EAP-type is not needed this function should be called.
   228 	 * After the EAP-type is not needed this function should be called.
   208 	 */
   229 	 */
   209 	EAP_FUNC_IMPORT eap_status_e unload_module(
   230 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e unload_module(
   210 		const eap_type_value_e type); 
   231 		const eap_type_value_e type); 
   211 
   232 
   212 	/**
   233 	/**
   213 	 * The adaptation module calls the eap_acknowledge() function after
   234 	 * The adaptation module calls the eap_acknowledge() function after
   214 	 * any Network Protocol packet is received. This is used as a success indication.
   235 	 * any Network Protocol packet is received. This is used as a success indication.
   216 	 * @param connection_handle separates the context of the acknowledged session.
   237 	 * @param connection_handle separates the context of the acknowledged session.
   217 	 * Mostly there is only one session in the client.
   238 	 * Mostly there is only one session in the client.
   218 	 * The server does not need eap_acknowledge() function because
   239 	 * The server does not need eap_acknowledge() function because
   219 	 * server (EAP-authenticator) sends the EAP-success message.
   240 	 * server (EAP-authenticator) sends the EAP-success message.
   220 	 */
   241 	 */
   221 	EAP_FUNC_IMPORT eap_status_e eap_acknowledge(
   242 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e eap_acknowledge(
   222 		const eap_am_network_id_c * const receive_network_id); 
   243 		const eap_am_network_id_c * const receive_network_id); 
   223 
   244 
   224 	/**
   245 	/**
   225 	 * This function restarts authentication using current object.
   246 	 * This function restarts authentication using current object.
   226 	 * This is used for testing.
   247 	 * This is used for testing.
   227 	 */
   248 	 */
   228 	EAP_FUNC_IMPORT eap_status_e restart_authentication(
   249 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e restart_authentication(
   229 		const eap_am_network_id_c * const send_network_id,
   250 		const eap_am_network_id_c * const send_network_id,
   230 		const bool is_client_when_true);
   251 		const bool is_client_when_true);
   231 
   252 
   232 #if defined(USE_EAP_CORE_SERVER)
   253 #if defined(USE_EAP_CORE_SERVER)
   233 	/**
   254 	/**
   234 	 * The EAP Core calls the send_eap_identity_request() function
   255 	 * The EAP Core calls the send_eap_identity_request() function
   235 	 * when EAP-authentication is needed with another peer.
   256 	 * when EAP-authentication is needed with another peer.
   236 	 * @param network_id includes the addresses (network identity) and packet type.
   257 	 * @param network_id includes the addresses (network identity) and packet type.
   237 	 */
   258 	 */
   238 	EAP_FUNC_IMPORT eap_status_e send_eap_identity_request(
   259 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e send_eap_identity_request(
   239 		const eap_am_network_id_c * const network_id);
   260 		const eap_am_network_id_c * const network_id);
   240 #endif //#if defined(USE_EAP_CORE_SERVER)
   261 #endif //#if defined(USE_EAP_CORE_SERVER)
   241 
   262 
   242 	/**
   263 	/**
   243 	 * The EAP Core calls the send_eap_nak_response() function
   264 	 * The EAP Core calls the send_eap_nak_response() function
   244 	 * when EAP-authentication with requested EAP type is not possible.
   265 	 * when EAP-authentication with requested EAP type is not possible.
   245 	 * @param network_id includes the addresses (network identity) and packet type.
   266 	 * @param network_id includes the addresses (network identity) and packet type.
   246 	 * @param eap_identifier is the EAP-Identifier to be used with EAP-Nak message.
   267 	 * @param eap_identifier is the EAP-Identifier to be used with EAP-Nak message.
   247 	 * @param preferred_eap_type is the acceptable EAP-Type to be informed with an other peer.
   268 	 * @param preferred_eap_type is the acceptable EAP-Type to be informed with an other peer.
   248 	 */
   269 	 */
   249 	EAP_FUNC_IMPORT eap_status_e send_eap_nak_response(
   270 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e send_eap_nak_response(
   250 		const eap_am_network_id_c * const receive_network_id,
   271 		const eap_am_network_id_c * const receive_network_id,
   251 		const u8_t eap_identifier,
   272 		const u8_t eap_identifier,
   252 		const eap_type_value_e preferred_eap_type);
   273 		const eap_type_value_e preferred_eap_type);
   253 
   274 
   254 	/**
   275 	/**
   259 	 * @param authentication_key is pointer to the first byte of the authentication key.
   280 	 * @param authentication_key is pointer to the first byte of the authentication key.
   260 	 * @param auth_key_length is count of bytes in the authentication key.
   281 	 * @param auth_key_length is count of bytes in the authentication key.
   261 	 * @param encryption_key is pointer to the first byte of the encryption key.
   282 	 * @param encryption_key is pointer to the first byte of the encryption key.
   262 	 * @param encr_key_length is count of bytes in the encryption key.
   283 	 * @param encr_key_length is count of bytes in the encryption key.
   263 	 */
   284 	 */
   264 	EAP_FUNC_IMPORT eap_status_e packet_data_crypto_keys(
   285 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e packet_data_crypto_keys(
   265 		const eap_am_network_id_c * const send_network_id,
   286 		const eap_am_network_id_c * const send_network_id,
   266 		const eap_master_session_key_c * const master_session_key
   287 		const eap_master_session_key_c * const master_session_key
   267 		);
   288 		);
   268 
   289 
   269 	// This is documented in abs_eap_stack_interface_c::configure().
   290 	// This is documented in abs_eap_stack_interface_c::configure().
   270 	EAP_FUNC_IMPORT eap_status_e configure();
   291 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e configure();
   271 
   292 
   272 	// This is documented in abs_eap_stack_interface_c::shutdown().
   293 	// This is documented in abs_eap_stack_interface_c::shutdown().
   273 	EAP_FUNC_IMPORT eap_status_e shutdown();
   294 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e shutdown();
   274 
   295 
   275 	/**
   296 	/**
   276 	 * The read_configure() function reads the configuration data identified
   297 	 * The read_configure() function reads the configuration data identified
   277 	 * by the field string of field_length bytes length. Adaptation module must direct
   298 	 * by the field string of field_length bytes length. Adaptation module must direct
   278 	 * the query to some persistent store.
   299 	 * the query to some persistent store.
   279 	 * @param field is generic configure string idenfying the required configure data.
   300 	 * @param field is generic configure string idenfying the required configure data.
   280 	 * @param field_length is length of the field string.
   301 	 * @param field_length is length of the field string.
   281 	 * @param data is pointer to existing eap_variable_data object.
   302 	 * @param data is pointer to existing eap_variable_data object.
   282 	 */
   303 	 */
   283 	EAP_FUNC_IMPORT virtual eap_status_e read_configure(
   304 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H virtual eap_status_e read_configure(
   284 		const eap_configuration_field_c * const field,
   305 		const eap_configuration_field_c * const field,
   285 		eap_variable_data_c * const data);
   306 		eap_variable_data_c * const data);
   286 
   307 
   287 	/**
   308 	/**
   288 	 * The write_configure() function writes the configuration data identified
   309 	 * The write_configure() function writes the configuration data identified
   290 	 * the action to some persistent store.
   311 	 * the action to some persistent store.
   291 	 * @param field is generic configure string idenfying the required configure data.
   312 	 * @param field is generic configure string idenfying the required configure data.
   292 	 * @param field_length is length of the field string.
   313 	 * @param field_length is length of the field string.
   293 	 * @param data is pointer to existing eap_variable_data object.
   314 	 * @param data is pointer to existing eap_variable_data object.
   294 	 */
   315 	 */
   295 	EAP_FUNC_IMPORT virtual eap_status_e write_configure(
   316 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H virtual eap_status_e write_configure(
   296 		const eap_configuration_field_c * const field,
   317 		const eap_configuration_field_c * const field,
   297 		eap_variable_data_c * const data);
   318 		eap_variable_data_c * const data);
   298 
   319 
   299 	// This is documented in abs_eap_stack_interface_c::set_is_valid().
   320 	// This is documented in abs_eap_stack_interface_c::set_is_valid().
   300 	EAP_FUNC_IMPORT void set_is_valid();
   321 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H void set_is_valid();
   301 
   322 
   302 	// This is documented in abs_eap_stack_interface_c::get_is_valid().
   323 	// This is documented in abs_eap_stack_interface_c::get_is_valid().
   303 	EAP_FUNC_IMPORT bool get_is_valid();
   324 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H bool get_is_valid();
   304 
   325 
   305 	// See abs_eap_base_type_c::state_notification().
   326 	// See abs_eap_base_type_c::state_notification().
   306 	EAP_FUNC_IMPORT void state_notification(
   327 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H void state_notification(
   307 		const abs_eap_state_notification_c * const state);
   328 		const abs_eap_state_notification_c * const state);
   308 
   329 
   309 	// See abs_eap_base_timer_c::timer_expired().
   330 	// See abs_eap_base_timer_c::timer_expired().
   310 	EAP_FUNC_IMPORT eap_status_e timer_expired(
   331 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e timer_expired(
   311 		const u32_t id, void *data);
   332 		const u32_t id, void *data);
   312 
   333 
   313 	// See abs_eap_base_timer_c::timer_delete_data().
   334 	// See abs_eap_base_timer_c::timer_delete_data().
   314 	EAP_FUNC_IMPORT eap_status_e timer_delete_data(
   335 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e timer_delete_data(
   315 		const u32_t id, void *data);
   336 		const u32_t id, void *data);
   316 
   337 
   317 	/**
   338 	/**
   318 	 * The load_module() function function indicates the lower level to
   339 	 * The load_module() function function indicates the lower level to
   319 	 * load new module of EAP-type.
   340 	 * load new module of EAP-type.
   320 	 * @see abs_eap_core_c::load_module().
   341 	 * @see abs_eap_core_c::load_module().
   321 	 */
   342 	 */
   322 	EAP_FUNC_IMPORT eap_status_e load_module(
   343 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e load_module(
   323 		const eap_type_value_e type,
   344 		const eap_type_value_e type,
   324 		const eap_type_value_e /* tunneling_type */,
   345 		const eap_type_value_e /* tunneling_type */,
   325 		abs_eap_base_type_c * const partner,
   346 		abs_eap_base_type_c * const partner,
   326 		eap_base_type_c ** const eap_type,
   347 		eap_base_type_c ** const eap_type,
   327 		const bool is_client_when_true,
   348 		const bool is_client_when_true,
   330 	/**
   351 	/**
   331 	 * The adaptation module calls the restart_authentication() function
   352 	 * The adaptation module calls the restart_authentication() function
   332 	 * when EAP-authentication is needed with another peer.
   353 	 * when EAP-authentication is needed with another peer.
   333 	 * @see abs_eap_core_c::restart_authentication().
   354 	 * @see abs_eap_core_c::restart_authentication().
   334 	 */
   355 	 */
   335 	EAP_FUNC_IMPORT eap_status_e restart_authentication(
   356 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e restart_authentication(
   336 		const eap_am_network_id_c * const receive_network_id,
   357 		const eap_am_network_id_c * const receive_network_id,
   337 		const bool is_client_when_true,
   358 		const bool is_client_when_true,
   338 		const bool force_clean_restart,
   359 		const bool force_clean_restart,
   339 		const bool from_timer = false);
   360 		const bool from_timer = false);
   340 
   361 
   341 	/**
   362 	/**
   342 	 * This function removes EAP session object synchronously.
   363 	 * This function removes EAP session object synchronously.
   343 	 * @param receive_network_id identifies the removed EAP session.
   364 	 * @param receive_network_id identifies the removed EAP session.
   344 	 */
   365 	 */
   345 	EAP_FUNC_IMPORT eap_status_e remove_eap_session(
   366 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e remove_eap_session(
   346 		const bool complete_to_lower_layer,
   367 		const bool complete_to_lower_layer,
   347 		const eap_am_network_id_c * const receive_network_id);
   368 		const eap_am_network_id_c * const receive_network_id);
   348 
   369 
   349 	/**
   370 	/**
   350 	 * This function removes EAP session object asynchronously.
   371 	 * This function removes EAP session object asynchronously.
   355 
   376 
   356 	/**
   377 	/**
   357 	 * This function tells lower layer to remove EAP session object asynchronously.
   378 	 * This function tells lower layer to remove EAP session object asynchronously.
   358 	 * @param eap_type is pointer to selector that identifies the removed EAP session.
   379 	 * @param eap_type is pointer to selector that identifies the removed EAP session.
   359 	 */
   380 	 */
   360 	EAP_FUNC_IMPORT eap_status_e asynchronous_init_remove_eap_session(
   381 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e asynchronous_init_remove_eap_session(
   361 		const eap_network_id_selector_c * const state_selector);
   382 		const eap_network_id_selector_c * const state_selector);
   362 
   383 
   363 	//
   384 	//
   364 	EAP_FUNC_IMPORT eap_status_e set_timer(
   385 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e set_timer(
   365 		abs_eap_base_timer_c * const p_initializer, 
   386 		abs_eap_base_timer_c * const p_initializer, 
   366 		const u32_t p_id, 
   387 		const u32_t p_id, 
   367 		void * const p_data,
   388 		void * const p_data,
   368 		const u32_t p_time_ms);
   389 		const u32_t p_time_ms);
   369 
   390 
   370 	EAP_FUNC_IMPORT eap_status_e cancel_timer(
   391 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e cancel_timer(
   371 		abs_eap_base_timer_c * const p_initializer, 
   392 		abs_eap_base_timer_c * const p_initializer, 
   372 		const u32_t p_id);
   393 		const u32_t p_id);
   373 
   394 
   374 	//
   395 	//
   375 	EAP_FUNC_IMPORT eap_status_e cancel_all_timers();
   396 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e cancel_all_timers();
   376 
   397 
   377 	//
   398 	//
   378 	EAP_FUNC_IMPORT eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   399 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e check_is_valid_eap_type(const eap_type_value_e eap_type);
   379 
   400 
   380 	/// @see abs_eap_core_c::get_eap_type_list().
   401 	/// @see abs_eap_core_c::get_eap_type_list().
   381 	EAP_FUNC_IMPORT eap_status_e get_eap_type_list(
   402 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e get_eap_type_list(
   382 		eap_array_c<eap_type_value_e> * const eap_type_list);
   403 		eap_array_c<eap_type_value_e> * const eap_type_list);
   383 
   404 
   384 	/// @see abs_eap_core_c::add_rogue_ap().
   405 	/// @see abs_eap_core_c::add_rogue_ap().
   385 	EAP_FUNC_IMPORT eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   406 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e add_rogue_ap(eap_array_c<eap_rogue_ap_entry_c> & rogue_ap_list);
   386 
   407 
   387 	// This is documented in abs_eap_core_c::set_session_timeout().
   408 	// This is documented in abs_eap_core_c::set_session_timeout().
   388 	EAP_FUNC_IMPORT eap_status_e set_session_timeout(
   409 	EAP_FUNC_VISIBILITY_EAP_RADIUS_SESSION_H eap_status_e set_session_timeout(
   389 		const u32_t session_timeout_ms);
   410 		const u32_t session_timeout_ms);
   390 
   411 
   391 	//--------------------------------------------------
   412 	//--------------------------------------------------
   392 }; // class eap_radius_session_c
   413 }; // class eap_radius_session_c
   393 
   414