The new gas_request and gas_response_get commands can be used to request arbitary GAS queries to be performed. These can be used with ANQP or with other (including vendor specific) advertisement protocols. gas_request <BSSID> <AdvProtoID> [Query] gas_response_get <addr> <dialog token> [offset,length] For example, ANQP query for Capability list in interactive wpa_cli session: > gas_request 02:00:00:00:01:00 00 000102000101 <3>GAS-RESPONSE-INFO addr=02:00:00:00:01:00 dialog_token=0 status_code=0 resp_len=32 > gas_response_get 02:00:00:00:01:00 00 01011c00010102010501070108010c01dddd0c00506f9a110200020304050607 > gas_response_get 02:00:00:00:01:00 00 0,10 01011c00010102010501 > gas_response_get 02:00:00:00:01:00 00 10,10 070108010c01dddd0c00 > gas_response_get 02:00:00:00:01:00 00 20,10 506f9a11020002030405 > gas_response_get 02:00:00:00:01:00 00 30,2 0607 It should be noted that the maximum length of the response buffer is currently 4096 bytes which allows about 2000 bytes of the response data to be fetched with a single gas_response_get command. If the response is longer, it can be fetched in pieces as shown in the example above. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
28 lines
985 B
C
28 lines
985 B
C
/*
|
|
* Interworking (IEEE 802.11u)
|
|
* Copyright (c) 2011-2012, Qualcomm Atheros
|
|
*
|
|
* This software may be distributed under the terms of the BSD license.
|
|
* See README for more details.
|
|
*/
|
|
|
|
#ifndef INTERWORKING_H
|
|
#define INTERWORKING_H
|
|
|
|
enum gas_query_result;
|
|
|
|
int anqp_send_req(struct wpa_supplicant *wpa_s, const u8 *dst,
|
|
u16 info_ids[], size_t num_ids);
|
|
void anqp_resp_cb(void *ctx, const u8 *dst, u8 dialog_token,
|
|
enum gas_query_result result,
|
|
const struct wpabuf *adv_proto,
|
|
const struct wpabuf *resp, u16 status_code);
|
|
int gas_send_request(struct wpa_supplicant *wpa_s, const u8 *dst,
|
|
const struct wpabuf *adv_proto,
|
|
const struct wpabuf *query);
|
|
int interworking_fetch_anqp(struct wpa_supplicant *wpa_s);
|
|
void interworking_stop_fetch_anqp(struct wpa_supplicant *wpa_s);
|
|
int interworking_select(struct wpa_supplicant *wpa_s, int auto_select);
|
|
int interworking_connect(struct wpa_supplicant *wpa_s, struct wpa_bss *bss);
|
|
|
|
#endif /* INTERWORKING_H */
|