static int wps_button_pushed(struct hostapd_data *hapd, void *ctx) { const u8 *p2p_dev_addr = ctx; if (hapd->wps == NULL) return 0; return wps_registrar_button_pushed(hapd->wps->registrar, p2p_dev_addr); }
int wps_er_pbc(struct wps_er *er, const u8 *uuid, const u8 *addr) { int res; struct wps_er_ap *ap; if (er == NULL || er->wps == NULL) return -1; if (wps_registrar_pbc_overlap(er->wps->registrar, NULL, NULL)) { wpa_printf(MSG_DEBUG, "WPS ER: PBC overlap - do not start PBC " "mode"); return -2; } if (uuid) ap = wps_er_ap_get(er, NULL, uuid, NULL); else ap = NULL; if (ap == NULL) { struct wps_er_sta *sta = NULL; dl_list_for_each(ap, &er->ap, struct wps_er_ap, list) { sta = wps_er_sta_get(ap, addr, uuid); if (sta) { uuid = ap->uuid; break; } } if (sta == NULL) return -3; /* Unknown UUID */ } if (ap->ap_settings == NULL) { wpa_printf(MSG_DEBUG, "WPS ER: AP settings not known"); return -4; } er->set_sel_reg_uuid_filter = uuid; res = wps_registrar_button_pushed(er->wps->registrar, NULL); er->set_sel_reg_uuid_filter = NULL; if (res) return -1; return 0; }
int hostapd_wps_button_pushed(struct hostapd_data *hapd) { if (hapd->wps == NULL) return -1; return wps_registrar_button_pushed(hapd->wps->registrar); }
static int wps_button_pushed(struct hostapd_data *hapd, void *ctx) { if (hapd->wps == NULL) return 0; return wps_registrar_button_pushed(hapd->wps->registrar); }