11f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt/*
21f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * Generic advertisement service (GAS) query
31f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * Copyright (c) 2009, Atheros Communications
41f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt * Copyright (c) 2011, Qualcomm Atheros
51f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt *
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
7c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
81f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt */
91f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
101f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#ifndef GAS_QUERY_H
111f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#define GAS_QUERY_H
121f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
131f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtstruct gas_query;
141f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
151f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#ifdef CONFIG_GAS
161f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
171f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtstruct gas_query * gas_query_init(struct wpa_supplicant *wpa_s);
181f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid gas_query_deinit(struct gas_query *gas);
191f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtint gas_query_rx(struct gas_query *gas, const u8 *da, const u8 *sa,
201846323989242844f0e857458a8939fa5836429cDmitry Shmidt		 const u8 *bssid, u8 categ, const u8 *data, size_t len,
211846323989242844f0e857458a8939fa5836429cDmitry Shmidt		 int freq);
221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
23a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt/**
24a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt * enum gas_query_result - GAS query result
25a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt */
261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtenum gas_query_result {
271f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	GAS_QUERY_SUCCESS,
281f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	GAS_QUERY_FAILURE,
291f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	GAS_QUERY_TIMEOUT,
301f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	GAS_QUERY_PEER_ERROR,
311f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	GAS_QUERY_INTERNAL_ERROR,
321f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	GAS_QUERY_CANCELLED,
331f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	GAS_QUERY_DELETED_AT_DEINIT
341f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt};
351f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
361f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtint gas_query_req(struct gas_query *gas, const u8 *dst, int freq,
371f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt		  struct wpabuf *req,
381f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt		  void (*cb)(void *ctx, const u8 *dst, u8 dialog_token,
391f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt			     enum gas_query_result result,
401f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt			     const struct wpabuf *adv_proto,
411f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt			     const struct wpabuf *resp, u16 status_code),
421f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt		  void *ctx);
431f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtvoid gas_query_cancel(struct gas_query *gas, const u8 *dst, u8 dialog_token);
441f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
451f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#else /* CONFIG_GAS */
461f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
471f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtstatic inline struct gas_query * gas_query_init(struct wpa_supplicant *wpa_s)
481f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{
491f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt	return (void *) 1;
501f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt}
511f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
521f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtstatic inline void gas_query_deinit(struct gas_query *gas)
531f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt{
541f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt}
551f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
561f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#endif /* CONFIG_GAS */
571f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
581f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt
591f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt#endif /* GAS_QUERY_H */
60