27acd32659d5465cb78b4b2b9b590bc20257336b
[openwrt/staging/wigyori.git] / package / network / services / hostapd / src / src / ap / ubus.h
1 /*
2 * hostapd / ubus support
3 * Copyright (c) 2013, Felix Fietkau <nbd@nbd.name>
4 *
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
7 */
8 #ifndef __HOSTAPD_UBUS_H
9 #define __HOSTAPD_UBUS_H
10
11 enum hostapd_ubus_event_type {
12 HOSTAPD_UBUS_PROBE_REQ,
13 HOSTAPD_UBUS_AUTH_REQ,
14 HOSTAPD_UBUS_ASSOC_REQ,
15 HOSTAPD_UBUS_TYPE_MAX
16 };
17
18 struct hostapd_ubus_request {
19 enum hostapd_ubus_event_type type;
20 const struct ieee80211_mgmt *mgmt_frame;
21 const struct ieee802_11_elems *elems;
22 int ssi_signal; /* dBm */
23 const u8 *addr;
24 };
25
26 struct hostapd_iface;
27 struct hostapd_data;
28 struct hapd_interfaces;
29
30 #ifdef UBUS_SUPPORT
31
32 #include <libubox/avl.h>
33 #include <libubus.h>
34
35 struct hostapd_ubus_bss {
36 struct ubus_object obj;
37 struct avl_tree banned;
38 int notify_response;
39 };
40
41 void hostapd_ubus_add_iface(struct hostapd_iface *iface);
42 void hostapd_ubus_free_iface(struct hostapd_iface *iface);
43 void hostapd_ubus_add_bss(struct hostapd_data *hapd);
44 void hostapd_ubus_free_bss(struct hostapd_data *hapd);
45
46 int hostapd_ubus_handle_event(struct hostapd_data *hapd, struct hostapd_ubus_request *req);
47 void hostapd_ubus_notify(struct hostapd_data *hapd, const char *type, const u8 *mac);
48
49 void hostapd_ubus_add(struct hapd_interfaces *interfaces);
50 void hostapd_ubus_free(struct hapd_interfaces *interfaces);
51
52 #else
53
54 struct hostapd_ubus_bss {};
55
56 static inline void hostapd_ubus_add_iface(struct hostapd_iface *iface)
57 {
58 }
59
60 static inline void hostapd_ubus_free_iface(struct hostapd_iface *iface)
61 {
62 }
63
64 static inline void hostapd_ubus_add_bss(struct hostapd_data *hapd)
65 {
66 }
67
68 static inline void hostapd_ubus_free_bss(struct hostapd_data *hapd)
69 {
70 }
71
72 static inline int hostapd_ubus_handle_event(struct hostapd_data *hapd, struct hostapd_ubus_request *req)
73 {
74 return 0;
75 }
76
77 static inline void hostapd_ubus_notify(struct hostapd_data *hapd, const char *type, const u8 *mac)
78 {
79 }
80
81 static inline void hostapd_ubus_add(struct hapd_interfaces *interfaces)
82 {
83 }
84
85 static inline void hostapd_ubus_free(struct hapd_interfaces *interfaces)
86 {
87 }
88 #endif
89
90 #endif