158 lines
4.4 KiB
C
158 lines
4.4 KiB
C
/*
|
|
* hostapd / ubus support
|
|
* Copyright (c) 2013, Felix Fietkau <nbd@nbd.name>
|
|
*
|
|
* This software may be distributed under the terms of the BSD license.
|
|
* See README for more details.
|
|
*/
|
|
#ifndef __HOSTAPD_UBUS_H
|
|
#define __HOSTAPD_UBUS_H
|
|
|
|
#include "sta_info.h"
|
|
|
|
enum hostapd_ubus_event_type {
|
|
HOSTAPD_UBUS_PROBE_REQ,
|
|
HOSTAPD_UBUS_AUTH_REQ,
|
|
HOSTAPD_UBUS_ASSOC_REQ,
|
|
HOSTAPD_UBUS_TYPE_MAX
|
|
};
|
|
|
|
struct hostapd_ubus_request {
|
|
enum hostapd_ubus_event_type type;
|
|
const struct ieee80211_mgmt *mgmt_frame;
|
|
const struct ieee802_11_elems *elems;
|
|
int ssi_signal; /* dBm */
|
|
const u8 *addr;
|
|
};
|
|
|
|
struct hostapd_iface;
|
|
struct hostapd_data;
|
|
struct hapd_interfaces;
|
|
struct rrm_measurement_beacon_report;
|
|
struct sta_info;
|
|
|
|
#ifdef UBUS_SUPPORT
|
|
|
|
#include <libubox/avl.h>
|
|
#include <libubus.h>
|
|
|
|
struct hostapd_ubus_bss {
|
|
struct ubus_object obj;
|
|
struct avl_tree banned;
|
|
int notify_response;
|
|
};
|
|
|
|
void hostapd_ubus_add_iface(struct hostapd_iface *iface);
|
|
void hostapd_ubus_free_iface(struct hostapd_iface *iface);
|
|
void hostapd_ubus_add_bss(struct hostapd_data *hapd);
|
|
void hostapd_ubus_free_bss(struct hostapd_data *hapd);
|
|
void hostapd_ubus_add_vlan(struct hostapd_data *hapd, struct hostapd_vlan *vlan);
|
|
void hostapd_ubus_remove_vlan(struct hostapd_data *hapd, struct hostapd_vlan *vlan);
|
|
|
|
int hostapd_ubus_handle_event(struct hostapd_data *hapd, struct hostapd_ubus_request *req);
|
|
void hostapd_ubus_handle_link_measurement(struct hostapd_data *hapd, const u8 *data, size_t len);
|
|
void hostapd_ubus_notify(struct hostapd_data *hapd, const char *type, const u8 *mac);
|
|
void hostapd_ubus_notify_beacon_report(struct hostapd_data *hapd,
|
|
const u8 *addr, u8 token, u8 rep_mode,
|
|
struct rrm_measurement_beacon_report *rep,
|
|
size_t len);
|
|
void hostapd_ubus_notify_radar_detected(struct hostapd_iface *iface, int frequency,
|
|
int chan_width, int cf1, int cf2);
|
|
|
|
void hostapd_ubus_notify_bss_transition_response(
|
|
struct hostapd_data *hapd, const u8 *addr, u8 dialog_token, u8 status_code,
|
|
u8 bss_termination_delay, const u8 *target_bssid,
|
|
const u8 *candidate_list, u16 candidate_list_len);
|
|
void hostapd_ubus_add(struct hapd_interfaces *interfaces);
|
|
void hostapd_ubus_free(struct hapd_interfaces *interfaces);
|
|
int hostapd_ubus_notify_bss_transition_query(
|
|
struct hostapd_data *hapd, const u8 *addr, u8 dialog_token, u8 reason,
|
|
const u8 *candidate_list, u16 candidate_list_len);
|
|
void hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta,
|
|
const char *auth_alg);
|
|
|
|
#else
|
|
|
|
struct hostapd_ubus_bss {};
|
|
|
|
static inline void hostapd_ubus_add_iface(struct hostapd_iface *iface)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_free_iface(struct hostapd_iface *iface)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_add_bss(struct hostapd_data *hapd)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_free_bss(struct hostapd_data *hapd)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_add_vlan(struct hostapd_data *hapd, struct hostapd_vlan *vlan)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_remove_vlan(struct hostapd_data *hapd, struct hostapd_vlan *vlan)
|
|
{
|
|
}
|
|
|
|
static inline int hostapd_ubus_handle_event(struct hostapd_data *hapd, struct hostapd_ubus_request *req)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void hostapd_ubus_handle_link_measurement(struct hostapd_data *hapd, const u8 *data, size_t len)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_notify(struct hostapd_data *hapd, const char *type, const u8 *mac)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_notify_beacon_report(struct hostapd_data *hapd,
|
|
const u8 *addr, u8 token,
|
|
u8 rep_mode,
|
|
struct rrm_measurement_beacon_report *rep,
|
|
size_t len)
|
|
{
|
|
}
|
|
static inline void hostapd_ubus_notify_radar_detected(struct hostapd_iface *iface, int frequency,
|
|
int chan_width, int cf1, int cf2)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_notify_bss_transition_response(
|
|
struct hostapd_data *hapd, const u8 *addr, u8 dialog_token, u8 status_code,
|
|
u8 bss_termination_delay, const u8 *target_bssid,
|
|
const u8 *candidate_list, u16 candidate_list_len)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_add(struct hapd_interfaces *interfaces)
|
|
{
|
|
}
|
|
|
|
static inline void hostapd_ubus_free(struct hapd_interfaces *interfaces)
|
|
{
|
|
}
|
|
|
|
static inline int hostapd_ubus_notify_bss_transition_query(
|
|
struct hostapd_data *hapd, const u8 *addr, u8 dialog_token, u8 reason,
|
|
const u8 *candidate_list, u16 candidate_list_len)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void
|
|
hostapd_ubus_notify_authorized(struct hostapd_data *hapd, struct sta_info *sta,
|
|
const char *auth_alg)
|
|
{
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|