/** * 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_remove_reauth - EAP-SIM DB: Remove re-authentication entry * @priv: Private data pointer from eap_sim_db_init() * @reauth: Pointer to re-authentication entry from * eap_sim_db_get_reauth_entry() */ void eap_sim_db_remove_reauth(void *priv, struct eap_sim_reauth *reauth) { struct eap_sim_db_data *data = priv; struct eap_sim_reauth *r, *prev = NULL; r = data->reauths; while (r) { if (r == reauth) { if (prev) prev->next = r->next; else data->reauths = r->next; eap_sim_db_free_reauth(r); return; } prev = r; r = r->next; } }
/** * 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); }
/** * eap_sim_db_remove_reauth - EAP-SIM DB: Remove re-authentication entry * @data: Private data pointer from eap_sim_db_init() * @reauth: Pointer to re-authentication entry from * eap_sim_db_get_reauth_entry() */ void eap_sim_db_remove_reauth(struct eap_sim_db_data *data, struct eap_sim_reauth *reauth) { struct eap_sim_reauth *r, *prev = NULL; #ifdef CONFIG_SQLITE if (data->sqlite_db) { db_remove_reauth(data, reauth); return; } #endif /* CONFIG_SQLITE */ r = data->reauths; while (r) { if (r == reauth) { if (prev) prev->next = r->next; else data->reauths = r->next; eap_sim_db_free_reauth(r); return; } prev = r; r = r->next; } }