DPP2: Configurator Connectivity indication
Add a new hostapd configuration parameter dpp_configurator_connectivity=1 to request Configurator connectivity to be advertised for chirping Enrollees. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
562f77144c
commit
6f5bc15bec
6 changed files with 45 additions and 0 deletions
|
@ -4408,6 +4408,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
||||||
} else if (os_strcmp(buf, "dpp_controller") == 0) {
|
} else if (os_strcmp(buf, "dpp_controller") == 0) {
|
||||||
if (hostapd_dpp_controller_parse(bss, pos))
|
if (hostapd_dpp_controller_parse(bss, pos))
|
||||||
return 1;
|
return 1;
|
||||||
|
} else if (os_strcmp(buf, "dpp_configurator_connectivity") == 0) {
|
||||||
|
bss->dpp_configurator_connectivity = atoi(pos);
|
||||||
#endif /* CONFIG_DPP2 */
|
#endif /* CONFIG_DPP2 */
|
||||||
#endif /* CONFIG_DPP */
|
#endif /* CONFIG_DPP */
|
||||||
#ifdef CONFIG_OWE
|
#ifdef CONFIG_OWE
|
||||||
|
|
|
@ -2304,6 +2304,11 @@ own_ip_addr=127.0.0.1
|
||||||
#dpp_csign
|
#dpp_csign
|
||||||
#dpp_controller
|
#dpp_controller
|
||||||
|
|
||||||
|
# Configurator Connectivity indication
|
||||||
|
# 0: no Configurator is currently connected (default)
|
||||||
|
# 1: advertise that a Configurator is available
|
||||||
|
#dpp_configurator_connectivity=0
|
||||||
|
|
||||||
#### TDLS (IEEE 802.11z-2010) #################################################
|
#### TDLS (IEEE 802.11z-2010) #################################################
|
||||||
|
|
||||||
# Prohibit use of TDLS in this BSS
|
# Prohibit use of TDLS in this BSS
|
||||||
|
|
|
@ -740,6 +740,7 @@ struct hostapd_bss_config {
|
||||||
struct wpabuf *dpp_csign;
|
struct wpabuf *dpp_csign;
|
||||||
#ifdef CONFIG_DPP2
|
#ifdef CONFIG_DPP2
|
||||||
struct dpp_controller_conf *dpp_controller;
|
struct dpp_controller_conf *dpp_controller;
|
||||||
|
int dpp_configurator_connectivity;
|
||||||
#endif /* CONFIG_DPP2 */
|
#endif /* CONFIG_DPP2 */
|
||||||
#endif /* CONFIG_DPP */
|
#endif /* CONFIG_DPP */
|
||||||
|
|
||||||
|
|
|
@ -468,6 +468,7 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||||
|
|
||||||
buflen += hostapd_mbo_ie_len(hapd);
|
buflen += hostapd_mbo_ie_len(hapd);
|
||||||
buflen += hostapd_eid_owe_trans_len(hapd);
|
buflen += hostapd_eid_owe_trans_len(hapd);
|
||||||
|
buflen += hostapd_eid_dpp_cc_len(hapd);
|
||||||
|
|
||||||
resp = os_zalloc(buflen);
|
resp = os_zalloc(buflen);
|
||||||
if (resp == NULL)
|
if (resp == NULL)
|
||||||
|
@ -612,6 +613,7 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||||
|
|
||||||
pos = hostapd_eid_mbo(hapd, pos, (u8 *) resp + buflen - pos);
|
pos = hostapd_eid_mbo(hapd, pos, (u8 *) resp + buflen - pos);
|
||||||
pos = hostapd_eid_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
|
pos = hostapd_eid_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
|
||||||
|
pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
|
||||||
|
|
||||||
if (hapd->conf->vendor_elements) {
|
if (hapd->conf->vendor_elements) {
|
||||||
os_memcpy(pos, wpabuf_head(hapd->conf->vendor_elements),
|
os_memcpy(pos, wpabuf_head(hapd->conf->vendor_elements),
|
||||||
|
@ -1164,6 +1166,7 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||||
|
|
||||||
tail_len += hostapd_mbo_ie_len(hapd);
|
tail_len += hostapd_mbo_ie_len(hapd);
|
||||||
tail_len += hostapd_eid_owe_trans_len(hapd);
|
tail_len += hostapd_eid_owe_trans_len(hapd);
|
||||||
|
tail_len += hostapd_eid_dpp_cc_len(hapd);
|
||||||
|
|
||||||
tailpos = tail = os_malloc(tail_len);
|
tailpos = tail = os_malloc(tail_len);
|
||||||
if (head == NULL || tail == NULL) {
|
if (head == NULL || tail == NULL) {
|
||||||
|
@ -1328,6 +1331,7 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||||
tailpos = hostapd_eid_mbo(hapd, tailpos, tail + tail_len - tailpos);
|
tailpos = hostapd_eid_mbo(hapd, tailpos, tail + tail_len - tailpos);
|
||||||
tailpos = hostapd_eid_owe_trans(hapd, tailpos,
|
tailpos = hostapd_eid_owe_trans(hapd, tailpos,
|
||||||
tail + tail_len - tailpos);
|
tail + tail_len - tailpos);
|
||||||
|
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
|
||||||
|
|
||||||
if (hapd->conf->vendor_elements) {
|
if (hapd->conf->vendor_elements) {
|
||||||
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
|
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
|
||||||
|
|
|
@ -183,6 +183,9 @@ void handle_auth_fils(struct hostapd_data *hapd, struct sta_info *sta,
|
||||||
size_t hostapd_eid_owe_trans_len(struct hostapd_data *hapd);
|
size_t hostapd_eid_owe_trans_len(struct hostapd_data *hapd);
|
||||||
u8 * hostapd_eid_owe_trans(struct hostapd_data *hapd, u8 *eid, size_t len);
|
u8 * hostapd_eid_owe_trans(struct hostapd_data *hapd, u8 *eid, size_t len);
|
||||||
|
|
||||||
|
size_t hostapd_eid_dpp_cc_len(struct hostapd_data *hapd);
|
||||||
|
u8 * hostapd_eid_dpp_cc(struct hostapd_data *hapd, u8 *eid, size_t len);
|
||||||
|
|
||||||
int get_tx_parameters(struct sta_info *sta, int ap_max_chanwidth,
|
int get_tx_parameters(struct sta_info *sta, int ap_max_chanwidth,
|
||||||
int ap_seg1_idx, int *bandwidth, int *seg1_idx);
|
int ap_seg1_idx, int *bandwidth, int *seg1_idx);
|
||||||
|
|
||||||
|
|
|
@ -874,6 +874,36 @@ u8 * hostapd_eid_owe_trans(struct hostapd_data *hapd, u8 *eid,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
size_t hostapd_eid_dpp_cc_len(struct hostapd_data *hapd)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_DPP2
|
||||||
|
if (hapd->conf->dpp_configurator_connectivity)
|
||||||
|
return 6;
|
||||||
|
#endif /* CONFIG_DPP2 */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
u8 * hostapd_eid_dpp_cc(struct hostapd_data *hapd, u8 *eid, size_t len)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_DPP2
|
||||||
|
u8 *pos = eid;
|
||||||
|
|
||||||
|
if (!hapd->conf->dpp_configurator_connectivity || len < 6)
|
||||||
|
return pos;
|
||||||
|
|
||||||
|
*pos++ = WLAN_EID_VENDOR_SPECIFIC;
|
||||||
|
*pos++ = 4;
|
||||||
|
WPA_PUT_BE24(pos, OUI_WFA);
|
||||||
|
pos += 3;
|
||||||
|
*pos++ = DPP_CC_OUI_TYPE;
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
#endif /* CONFIG_DPP2 */
|
||||||
|
return eid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ap_copy_sta_supp_op_classes(struct sta_info *sta,
|
void ap_copy_sta_supp_op_classes(struct sta_info *sta,
|
||||||
const u8 *supp_op_classes,
|
const u8 *supp_op_classes,
|
||||||
size_t supp_op_classes_len)
|
size_t supp_op_classes_len)
|
||||||
|
|
Loading…
Add table
Reference in a new issue