While trying out the eap_sim_db functionality of eap2 module, for the purpose of retrieving authentication information from external sources, I found that the it works in a somewhat asynchronous manner, specifically when a call to eap_sim_db_get_gsm_triplet() is made via eap2 module, the functions returns PENDING to the caller. And this is in the code :- /* ..... * When using an external server for GSM triplets, this function can always * start a request and return EAP_SIM_DB_PENDING immediately if authentication * triplets are not available. Once the triplets are received, callback * function registered with eap_sim_db_init() is called to notify EAP state * machine to reprocess the message. This eap_sim_db_get_gsm_triplets() * function will then be called again and the newly received triplets will then * be given to the caller. When hard-coding the data to return immediately, I notice that the authentication from radius client will succeed. But when using this asynchronous behaviour, authentication will not succeed. By the way, I am using eapol_test for the testing. Should I just make it synchronous ( ie block until the gsm data comes back ) or there is a way to accomodate this inside freeradius ? Best regards.