/** * eap_sim_db_deinit - Deinitialize EAP-SIM DB/authentication gw interface * @priv: Private data pointer from eap_sim_db_init() */ void eap_sim_db_deinit(void *priv) { struct eap_sim_db_data *data = priv; struct eap_sim_pseudonym *p, *prev; struct eap_sim_reauth *r, *prevr; struct eap_sim_db_pending *pending, *prev_pending; eap_sim_db_close_socket(data); VM_FREE(data->fname); p = data->pseudonyms; while (p) { prev = p; p = p->next; eap_sim_db_free_pseudonym(prev); } r = data->reauths; while (r) { prevr = r; r = r->next; eap_sim_db_free_reauth(prevr); } pending = data->pending; while (pending) { prev_pending = pending; pending = pending->next; VM_FREE(prev_pending); } VM_FREE(data); }
/** * eap_sim_db_deinit - Deinitialize EAP-SIM DB/authentication gw interface * @priv: Private data pointer from eap_sim_db_init() */ void eap_sim_db_deinit(void *priv) { struct eap_sim_db_data *data = priv; struct eap_sim_pseudonym *p, *prev; struct eap_sim_reauth *r, *prevr; struct eap_sim_db_pending *pending, *prev_pending; #ifdef CONFIG_SQLITE if (data->sqlite_db) { sqlite3_close(data->sqlite_db); data->sqlite_db = NULL; } #endif /* CONFIG_SQLITE */ eap_sim_db_close_socket(data); os_free(data->fname); p = data->pseudonyms; while (p) { prev = p; p = p->next; eap_sim_db_free_pseudonym(prev); } r = data->reauths; while (r) { prevr = r; r = r->next; eap_sim_db_free_reauth(prevr); } pending = data->pending; while (pending) { prev_pending = pending; pending = pending->next; eap_sim_db_free_pending(data, prev_pending); } os_free(data); }