void hostapd_deinit_wpa(struct hostapd_data *hapd) { rsn_preauth_iface_deinit(hapd); if (hapd->wpa_auth) { wpa_deinit(hapd->wpa_auth); hapd->wpa_auth = NULL; if (hostapd_set_privacy(hapd, 0)) { wpa_printf(MSG_DEBUG, "Could not disable " "PrivacyInvoked for interface %s", hapd->conf->iface); } if (hostapd_set_generic_elem(hapd, (u8 *) "", 0)) { wpa_printf(MSG_DEBUG, "Could not remove generic " "information element from interface %s", hapd->conf->iface); } } ieee802_1x_deinit(hapd); #ifdef CONFIG_IEEE80211R l2_packet_deinit(hapd->l2); #endif /* CONFIG_IEEE80211R */ }
static void deinit(struct wpa *wpa) { wpa_auth_sta_deinit(wpa->auth); wpa_sm_deinit(wpa->supp); wpa_deinit(wpa->auth_group); os_free(wpa->auth_eapol); wpa->auth_eapol = NULL; os_free(wpa->supp_eapol); wpa->supp_eapol = NULL; }
static void hostapd_reload_bss(struct hostapd_data *hapd) { #ifndef CONFIG_NO_RADIUS radius_client_reconfig(hapd->radius, hapd->conf->radius); #endif /* CONFIG_NO_RADIUS */ if (hostapd_setup_wpa_psk(hapd->conf)) { wpa_printf(MSG_ERROR, "Failed to re-configure WPA PSK " "after reloading configuration"); } if (hapd->conf->ieee802_1x || hapd->conf->wpa) hostapd_set_drv_ieee8021x(hapd, hapd->conf->iface, 1); else hostapd_set_drv_ieee8021x(hapd, hapd->conf->iface, 0); if (hapd->conf->wpa && hapd->wpa_auth == NULL) { hostapd_setup_wpa(hapd); if (hapd->wpa_auth) wpa_init_keys(hapd->wpa_auth); } else if (hapd->conf->wpa) { const u8 *wpa_ie; size_t wpa_ie_len; hostapd_reconfig_wpa(hapd); wpa_ie = wpa_auth_get_wpa_ie(hapd->wpa_auth, &wpa_ie_len); if (hostapd_set_generic_elem(hapd, wpa_ie, wpa_ie_len)) wpa_printf(MSG_ERROR, "Failed to configure WPA IE for " "the kernel driver."); } else if (hapd->wpa_auth) { wpa_deinit(hapd->wpa_auth); hapd->wpa_auth = NULL; hostapd_set_privacy(hapd, 0); hostapd_setup_encryption(hapd->conf->iface, hapd); hostapd_set_generic_elem(hapd, (u8 *) "", 0); } ieee802_11_set_beacon(hapd); hostapd_update_wps(hapd); if (hapd->conf->ssid.ssid_set && hostapd_set_ssid(hapd, (u8 *) hapd->conf->ssid.ssid, hapd->conf->ssid.ssid_len)) { wpa_printf(MSG_ERROR, "Could not set SSID for kernel driver"); /* try to continue */ } wpa_printf(MSG_DEBUG, "Reconfigured interface %s", hapd->conf->iface); }
static int __mesh_rsn_auth_init(struct mesh_rsn *rsn, const u8 *addr) { struct wpa_auth_config conf; struct wpa_auth_callbacks cb; u8 seq[6] = {}; wpa_printf(MSG_DEBUG, "AUTH: Initializing group state machine"); os_memset(&conf, 0, sizeof(conf)); conf.wpa = 2; conf.wpa_key_mgmt = WPA_KEY_MGMT_SAE; conf.wpa_pairwise = WPA_CIPHER_CCMP; conf.rsn_pairwise = WPA_CIPHER_CCMP; conf.wpa_group = WPA_CIPHER_CCMP; conf.eapol_version = 0; conf.wpa_group_rekey = -1; os_memset(&cb, 0, sizeof(cb)); cb.ctx = rsn; cb.logger = auth_logger; cb.get_psk = auth_get_psk; cb.set_key = auth_set_key; cb.start_ampe = auth_start_ampe; rsn->auth = wpa_init(addr, &conf, &cb); if (rsn->auth == NULL) { wpa_printf(MSG_DEBUG, "AUTH: wpa_init() failed"); return -1; } /* TODO: support rekeying */ if (random_get_bytes(rsn->mgtk, 16) < 0) { wpa_deinit(rsn->auth); return -1; } /* group mgmt */ wpa_drv_set_key(rsn->wpa_s, WPA_ALG_IGTK, NULL, 4, 1, seq, sizeof(seq), rsn->mgtk, sizeof(rsn->mgtk)); /* group privacy / data frames */ wpa_drv_set_key(rsn->wpa_s, WPA_ALG_CCMP, NULL, 1, 1, seq, sizeof(seq), rsn->mgtk, sizeof(rsn->mgtk)); return 0; }
void ibss_rsn_deinit(struct ibss_rsn *ibss_rsn) { struct ibss_rsn_peer *peer, *prev; if (ibss_rsn == NULL) return; peer = ibss_rsn->peers; while (peer) { prev = peer; peer = peer->next; ibss_rsn_free(prev); } wpa_deinit(ibss_rsn->auth_group); os_free(ibss_rsn); }
static void hostapd_cleanup(hostapd *hapd) { free(hapd->default_wep_key); if (hapd->conf->ieee802_11f) iapp_deinit(hapd); accounting_deinit(hapd); wpa_deinit(hapd); ieee802_1x_deinit(hapd); hostapd_acl_deinit(hapd); radius_client_deinit(hapd); hostapd_wireless_event_deinit(hapd->driver.data); hostapd_driver_deinit(hapd); hostapd_config_free(hapd->conf); hapd->conf = NULL; free(hapd->config_fname); }
static void hostapd_cleanup(struct hostapd_data *hapd) { hostapd_ctrl_iface_deinit(hapd); free(hapd->default_wep_key); hapd->default_wep_key = NULL; iapp_deinit(hapd->iapp); accounting_deinit(hapd); wpa_deinit(hapd); #ifdef SIMPLE_CONFIG wsc_ie_deinit(hapd); #endif ieee802_1x_deinit(hapd); hostapd_acl_deinit(hapd); radius_client_deinit(hapd->radius); hapd->radius = NULL; radius_server_deinit(hapd->radius_srv); hapd->radius_srv = NULL; hostapd_wireless_event_deinit(hapd); if (hapd->driver) hostapd_driver_deinit(hapd); hostapd_config_free(hapd->conf); hapd->conf = NULL; free(hapd->config_fname); #ifdef EAP_TLS_FUNCS if (hapd->ssl_ctx) { tls_deinit(hapd->ssl_ctx); hapd->ssl_ctx = NULL; } #endif /* EAP_TLS_FUNCS */ if (hapd->eap_sim_db_priv) eap_sim_db_deinit(hapd->eap_sim_db_priv); }
static void mesh_rsn_deinit(struct mesh_rsn *rsn) { os_memset(rsn->mgtk, 0, sizeof(rsn->mgtk)); if (rsn->auth) wpa_deinit(rsn->auth); }