2 * hostapd / ubus support
3 * Copyright (c) 2013, Felix Fietkau <nbd@nbd.name>
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
8 #ifndef __HOSTAPD_UBUS_H
9 #define __HOSTAPD_UBUS_H
13 enum hostapd_ubus_event_type
{
14 HOSTAPD_UBUS_PROBE_REQ
,
15 HOSTAPD_UBUS_AUTH_REQ
,
16 HOSTAPD_UBUS_ASSOC_REQ
,
20 struct hostapd_ubus_request
{
21 enum hostapd_ubus_event_type type
;
22 const struct ieee80211_mgmt
*mgmt_frame
;
23 const struct ieee802_11_elems
*elems
;
24 int ssi_signal
; /* dBm */
30 struct hapd_interfaces
;
31 struct rrm_measurement_beacon_report
;
36 #include <libubox/avl.h>
39 struct hostapd_ubus_bss
{
40 struct ubus_object obj
;
41 struct avl_tree banned
;
45 void hostapd_ubus_add_iface(struct hostapd_iface
*iface
);
46 void hostapd_ubus_free_iface(struct hostapd_iface
*iface
);
47 void hostapd_ubus_add_bss(struct hostapd_data
*hapd
);
48 void hostapd_ubus_free_bss(struct hostapd_data
*hapd
);
49 void hostapd_ubus_add_vlan(struct hostapd_data
*hapd
, struct hostapd_vlan
*vlan
);
50 void hostapd_ubus_remove_vlan(struct hostapd_data
*hapd
, struct hostapd_vlan
*vlan
);
52 int hostapd_ubus_handle_event(struct hostapd_data
*hapd
, struct hostapd_ubus_request
*req
);
53 void hostapd_ubus_handle_link_measurement(struct hostapd_data
*hapd
, const u8
*data
, size_t len
);
54 void hostapd_ubus_notify(struct hostapd_data
*hapd
, const char *type
, const u8
*mac
);
55 void hostapd_ubus_notify_beacon_report(struct hostapd_data
*hapd
,
56 const u8
*addr
, u8 token
, u8 rep_mode
,
57 struct rrm_measurement_beacon_report
*rep
,
59 void hostapd_ubus_notify_radar_detected(struct hostapd_iface
*iface
, int frequency
,
60 int chan_width
, int cf1
, int cf2
);
62 void hostapd_ubus_notify_bss_transition_response(
63 struct hostapd_data
*hapd
, const u8
*addr
, u8 dialog_token
, u8 status_code
,
64 u8 bss_termination_delay
, const u8
*target_bssid
,
65 const u8
*candidate_list
, u16 candidate_list_len
);
66 void hostapd_ubus_add(struct hapd_interfaces
*interfaces
);
67 void hostapd_ubus_free(struct hapd_interfaces
*interfaces
);
68 int hostapd_ubus_notify_bss_transition_query(
69 struct hostapd_data
*hapd
, const u8
*addr
, u8 dialog_token
, u8 reason
,
70 const u8
*candidate_list
, u16 candidate_list_len
);
71 void hostapd_ubus_notify_authorized(struct hostapd_data
*hapd
, struct sta_info
*sta
,
72 const char *auth_alg
);
76 struct hostapd_ubus_bss
{};
78 static inline void hostapd_ubus_add_iface(struct hostapd_iface
*iface
)
82 static inline void hostapd_ubus_free_iface(struct hostapd_iface
*iface
)
86 static inline void hostapd_ubus_add_bss(struct hostapd_data
*hapd
)
90 static inline void hostapd_ubus_free_bss(struct hostapd_data
*hapd
)
94 static inline void hostapd_ubus_add_vlan(struct hostapd_data
*hapd
, struct hostapd_vlan
*vlan
)
98 static inline void hostapd_ubus_remove_vlan(struct hostapd_data
*hapd
, struct hostapd_vlan
*vlan
)
102 static inline int hostapd_ubus_handle_event(struct hostapd_data
*hapd
, struct hostapd_ubus_request
*req
)
107 static inline void hostapd_ubus_handle_link_measurement(struct hostapd_data
*hapd
, const u8
*data
, size_t len
)
111 static inline void hostapd_ubus_notify(struct hostapd_data
*hapd
, const char *type
, const u8
*mac
)
115 static inline void hostapd_ubus_notify_beacon_report(struct hostapd_data
*hapd
,
116 const u8
*addr
, u8 token
,
118 struct rrm_measurement_beacon_report
*rep
,
122 static inline void hostapd_ubus_notify_radar_detected(struct hostapd_iface
*iface
, int frequency
,
123 int chan_width
, int cf1
, int cf2
)
127 static inline void hostapd_ubus_notify_bss_transition_response(
128 struct hostapd_data
*hapd
, const u8
*addr
, u8 dialog_token
, u8 status_code
,
129 u8 bss_termination_delay
, const u8
*target_bssid
,
130 const u8
*candidate_list
, u16 candidate_list_len
)
134 static inline void hostapd_ubus_add(struct hapd_interfaces
*interfaces
)
138 static inline void hostapd_ubus_free(struct hapd_interfaces
*interfaces
)
142 static inline int hostapd_ubus_notify_bss_transition_query(
143 struct hostapd_data
*hapd
, const u8
*addr
, u8 dialog_token
, u8 reason
,
144 const u8
*candidate_list
, u16 candidate_list_len
)
150 hostapd_ubus_notify_authorized(struct hostapd_data
*hapd
, struct sta_info
*sta
,
151 const char *auth_alg
)