1252190Srpaulo/*
2252190Srpaulo * Generic advertisement service (GAS) query
3252190Srpaulo * Copyright (c) 2009, Atheros Communications
4252190Srpaulo * Copyright (c) 2011, Qualcomm Atheros
5252190Srpaulo *
6252190Srpaulo * This software may be distributed under the terms of the BSD license.
7252190Srpaulo * See README for more details.
8252190Srpaulo */
9252190Srpaulo
10252190Srpaulo#ifndef GAS_QUERY_H
11252190Srpaulo#define GAS_QUERY_H
12252190Srpaulo
13252190Srpaulostruct gas_query;
14252190Srpaulo
15252190Srpaulo#ifdef CONFIG_GAS
16252190Srpaulo
17252190Srpaulostruct gas_query * gas_query_init(struct wpa_supplicant *wpa_s);
18252190Srpaulovoid gas_query_deinit(struct gas_query *gas);
19252190Srpauloint gas_query_rx(struct gas_query *gas, const u8 *da, const u8 *sa,
20252190Srpaulo		 const u8 *bssid, const u8 *data, size_t len, int freq);
21252190Srpaulo
22252190Srpaulo/**
23252190Srpaulo * enum gas_query_result - GAS query result
24252190Srpaulo */
25252190Srpauloenum gas_query_result {
26252190Srpaulo	GAS_QUERY_SUCCESS,
27252190Srpaulo	GAS_QUERY_FAILURE,
28252190Srpaulo	GAS_QUERY_TIMEOUT,
29252190Srpaulo	GAS_QUERY_PEER_ERROR,
30252190Srpaulo	GAS_QUERY_INTERNAL_ERROR,
31252190Srpaulo	GAS_QUERY_CANCELLED,
32252190Srpaulo	GAS_QUERY_DELETED_AT_DEINIT
33252190Srpaulo};
34252190Srpaulo
35252190Srpauloint gas_query_req(struct gas_query *gas, const u8 *dst, int freq,
36252190Srpaulo		  struct wpabuf *req,
37252190Srpaulo		  void (*cb)(void *ctx, const u8 *dst, u8 dialog_token,
38252190Srpaulo			     enum gas_query_result result,
39252190Srpaulo			     const struct wpabuf *adv_proto,
40252190Srpaulo			     const struct wpabuf *resp, u16 status_code),
41252190Srpaulo		  void *ctx);
42252190Srpaulovoid gas_query_cancel(struct gas_query *gas, const u8 *dst, u8 dialog_token);
43252190Srpaulo
44252190Srpaulo#else /* CONFIG_GAS */
45252190Srpaulo
46252190Srpaulostatic inline struct gas_query * gas_query_init(struct wpa_supplicant *wpa_s)
47252190Srpaulo{
48252190Srpaulo	return (void *) 1;
49252190Srpaulo}
50252190Srpaulo
51252190Srpaulostatic inline void gas_query_deinit(struct gas_query *gas)
52252190Srpaulo{
53252190Srpaulo}
54252190Srpaulo
55252190Srpaulo#endif /* CONFIG_GAS */
56252190Srpaulo
57252190Srpaulo
58252190Srpaulo#endif /* GAS_QUERY_H */
59