struct eapol_authenticator * eapol_auth_init(struct eapol_auth_config *conf, struct eapol_auth_cb *cb) { struct eapol_authenticator *eapol; eapol = os_zalloc(sizeof(*eapol)); if (eapol == NULL) return NULL; if (eapol_auth_conf_clone(&eapol->conf, conf) < 0) { os_free(eapol); return NULL; } if (conf->individual_wep_key_len > 0) { /* use key0 in individual key and key1 in broadcast key */ eapol->default_wep_key_idx = 1; } eapol->cb.eapol_send = cb->eapol_send; eapol->cb.aaa_send = cb->aaa_send; eapol->cb.finished = cb->finished; eapol->cb.get_eap_user = cb->get_eap_user; eapol->cb.sta_entry_alive = cb->sta_entry_alive; eapol->cb.logger = cb->logger; eapol->cb.set_port_authorized = cb->set_port_authorized; eapol->cb.abort_auth = cb->abort_auth; eapol->cb.tx_key = cb->tx_key; eapol->cb.eapol_event = cb->eapol_event; return eapol; }
struct eapol_authenticator * eapol_auth_init(struct eapol_auth_config *conf, struct eapol_auth_cb *cb) { struct eapol_authenticator *eapol; struct os_time now; eapol = os_zalloc(sizeof(*eapol)); if (eapol == NULL) return NULL; if (eapol_auth_conf_clone(&eapol->conf, conf) < 0) { os_free(eapol); return NULL; } if (conf->individual_wep_key_len > 0) { /* use key0 in individual key and key1 in broadcast key */ eapol->default_wep_key_idx = 1; } eapol->cb.eapol_send = cb->eapol_send; eapol->cb.aaa_send = cb->aaa_send; eapol->cb.finished = cb->finished; eapol->cb.get_eap_user = cb->get_eap_user; eapol->cb.sta_entry_alive = cb->sta_entry_alive; eapol->cb.logger = cb->logger; eapol->cb.set_port_authorized = cb->set_port_authorized; eapol->cb.abort_auth = cb->abort_auth; eapol->cb.tx_key = cb->tx_key; eapol->cb.eapol_event = cb->eapol_event; eapol->cb.erp_get_key = cb->erp_get_key; eapol->cb.erp_add_key = cb->erp_add_key; /* Acct-Multi-Session-Id should be unique over reboots. If reliable * clock is not available, this could be replaced with reboot counter, * etc. */ os_get_time(&now); eapol->acct_multi_session_id_hi = now.sec; return eapol; }