static int
atheros_set_ap_wps_ie(void *priv, const struct wpabuf *beacon,
                      const struct wpabuf *proberesp,
                      const struct wpabuf *assocresp)
{
    atheros_set_wps_ie(priv, assocresp ? wpabuf_head(assocresp) : NULL,
                       assocresp ? wpabuf_len(assocresp) : 0,
                       IEEE80211_APPIE_FRAME_ASSOC_RESP);
    if (atheros_set_wps_ie(priv, beacon ? wpabuf_head(beacon) : NULL,
                           beacon ? wpabuf_len(beacon) : 0,
                           IEEE80211_APPIE_FRAME_BEACON))
        return -1;
    return atheros_set_wps_ie(priv,
                              proberesp ? wpabuf_head(proberesp) : NULL,
                              proberesp ? wpabuf_len(proberesp): 0,
                              IEEE80211_APPIE_FRAME_PROBE_RESP);
}
Exemplo n.º 2
0
static int
atheros_set_ap_wps_ie(void *priv, const struct wpabuf *beacon,
		      const struct wpabuf *proberesp,
		      const struct wpabuf *assocresp)
{
	struct atheros_driver_data *drv = priv;

	wpabuf_free(drv->wps_beacon_ie);
	drv->wps_beacon_ie = beacon ? wpabuf_dup(beacon) : NULL;
	wpabuf_free(drv->wps_probe_resp_ie);
	drv->wps_probe_resp_ie = proberesp ? wpabuf_dup(proberesp) : NULL;

	atheros_set_wps_ie(priv, assocresp ? wpabuf_head(assocresp) : NULL,
			   assocresp ? wpabuf_len(assocresp) : 0,
			   IEEE80211_APPIE_FRAME_ASSOC_RESP);
	if (atheros_set_wps_ie(priv, beacon ? wpabuf_head(beacon) : NULL,
			       beacon ? wpabuf_len(beacon) : 0,
			       IEEE80211_APPIE_FRAME_BEACON))
		return -1;
	return atheros_set_wps_ie(priv,
				  proberesp ? wpabuf_head(proberesp) : NULL,
				  proberesp ? wpabuf_len(proberesp): 0,
				  IEEE80211_APPIE_FRAME_PROBE_RESP);
}