Interworking: Add Advertisement Protocol element
For now, assume that ANQP will always be enabled with Interworking. This may be made separately configurable in the future.
This commit is contained in:
parent
3c11382b6c
commit
c7c178e15e
4 changed files with 23 additions and 0 deletions
|
@ -59,6 +59,7 @@ int hostapd_build_ap_extra_ies(struct hostapd_data *hapd,
|
||||||
wpabuf_put_data(assocresp, buf, pos - buf);
|
wpabuf_put_data(assocresp, buf, pos - buf);
|
||||||
}
|
}
|
||||||
pos = hostapd_eid_interworking(hapd, pos);
|
pos = hostapd_eid_interworking(hapd, pos);
|
||||||
|
pos = hostapd_eid_adv_proto(hapd, pos);
|
||||||
if (pos != buf) {
|
if (pos != buf) {
|
||||||
if (wpabuf_resize(&beacon, pos - buf) != 0)
|
if (wpabuf_resize(&beacon, pos - buf) != 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
|
@ -358,6 +358,7 @@ void handle_probe_req(struct hostapd_data *hapd,
|
||||||
pos = hostapd_eid_ext_capab(hapd, pos);
|
pos = hostapd_eid_ext_capab(hapd, pos);
|
||||||
|
|
||||||
pos = hostapd_eid_interworking(hapd, pos);
|
pos = hostapd_eid_interworking(hapd, pos);
|
||||||
|
pos = hostapd_eid_adv_proto(hapd, pos);
|
||||||
|
|
||||||
/* Wi-Fi Alliance WMM */
|
/* Wi-Fi Alliance WMM */
|
||||||
pos = hostapd_eid_wmm(hapd, pos);
|
pos = hostapd_eid_wmm(hapd, pos);
|
||||||
|
@ -493,6 +494,7 @@ void ieee802_11_set_beacon(struct hostapd_data *hapd)
|
||||||
tailpos = hostapd_eid_ext_capab(hapd, tailpos);
|
tailpos = hostapd_eid_ext_capab(hapd, tailpos);
|
||||||
|
|
||||||
tailpos = hostapd_eid_interworking(hapd, tailpos);
|
tailpos = hostapd_eid_interworking(hapd, tailpos);
|
||||||
|
tailpos = hostapd_eid_adv_proto(hapd, tailpos);
|
||||||
|
|
||||||
/* Wi-Fi Alliance WMM */
|
/* Wi-Fi Alliance WMM */
|
||||||
tailpos = hostapd_eid_wmm(hapd, tailpos);
|
tailpos = hostapd_eid_wmm(hapd, tailpos);
|
||||||
|
|
|
@ -70,5 +70,6 @@ void ieee802_11_sa_query_action(struct hostapd_data *hapd,
|
||||||
const u8 *sa, const u8 action_type,
|
const u8 *sa, const u8 action_type,
|
||||||
const u8 *trans_id);
|
const u8 *trans_id);
|
||||||
u8 * hostapd_eid_interworking(struct hostapd_data *hapd, u8 *eid);
|
u8 * hostapd_eid_interworking(struct hostapd_data *hapd, u8 *eid);
|
||||||
|
u8 * hostapd_eid_adv_proto(struct hostapd_data *hapd, u8 *eid);
|
||||||
|
|
||||||
#endif /* IEEE802_11_H */
|
#endif /* IEEE802_11_H */
|
||||||
|
|
|
@ -243,3 +243,22 @@ u8 * hostapd_eid_interworking(struct hostapd_data *hapd, u8 *eid)
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
u8 * hostapd_eid_adv_proto(struct hostapd_data *hapd, u8 *eid)
|
||||||
|
{
|
||||||
|
u8 *pos = eid;
|
||||||
|
#ifdef CONFIG_INTERWORKING
|
||||||
|
|
||||||
|
/* TODO: Separate configuration for ANQP? */
|
||||||
|
if (!hapd->conf->interworking)
|
||||||
|
return eid;
|
||||||
|
|
||||||
|
*pos++ = WLAN_EID_ADV_PROTO;
|
||||||
|
*pos++ = 2;
|
||||||
|
*pos++ = 0; /* Query Response Length Limit | PAME-BI */
|
||||||
|
*pos++ = ACCESS_NETWORK_QUERY_PROTOCOL;
|
||||||
|
#endif /* CONFIG_INTERWORKING */
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue