mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-07 11:30:37 +00:00
hostapd: add ubus link-measurements notifications
Notify external ubus subscribers of received link-measurement reports. Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
parent
965aa33a18
commit
f6445cfa1a
@ -423,6 +423,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -352,6 +355,9 @@ void hostapd_handle_radio_measurement(st
|
||||||
|
mgmt->u.action.u.rrm.action, MAC2STR(mgmt->sa));
|
||||||
|
|
||||||
|
switch (mgmt->u.action.u.rrm.action) {
|
||||||
|
+ case WLAN_RRM_LINK_MEASUREMENT_REPORT:
|
||||||
|
+ hostapd_ubus_handle_link_measurement(hapd, buf, len);
|
||||||
|
+ break;
|
||||||
|
case WLAN_RRM_RADIO_MEASUREMENT_REPORT:
|
||||||
|
hostapd_handle_radio_msmt_report(hapd, buf, len);
|
||||||
|
break;
|
||||||
--- a/src/ap/vlan_init.c
|
--- a/src/ap/vlan_init.c
|
||||||
+++ b/src/ap/vlan_init.c
|
+++ b/src/ap/vlan_init.c
|
||||||
@@ -22,6 +22,7 @@
|
@@ -22,6 +22,7 @@
|
||||||
|
@ -1412,6 +1412,34 @@ hostapd_rrm_lm_req(struct ubus_context *ctx, struct ubus_object *obj,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void hostapd_ubus_handle_link_measurement(struct hostapd_data *hapd, const u8 *data, size_t len)
|
||||||
|
{
|
||||||
|
const struct ieee80211_mgmt *mgmt = (const struct ieee80211_mgmt *) data;
|
||||||
|
const u8 *pos, *end;
|
||||||
|
u8 token;
|
||||||
|
|
||||||
|
end = data + len;
|
||||||
|
token = mgmt->u.action.u.rrm.dialog_token;
|
||||||
|
pos = mgmt->u.action.u.rrm.variable;
|
||||||
|
|
||||||
|
if (end - pos < 8)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!hapd->ubus.obj.has_subscribers)
|
||||||
|
return;
|
||||||
|
|
||||||
|
blob_buf_init(&b, 0);
|
||||||
|
blobmsg_add_macaddr(&b, "address", mgmt->sa);
|
||||||
|
blobmsg_add_u16(&b, "dialog-token", token);
|
||||||
|
blobmsg_add_u16(&b, "rx-antenna-id", pos[4]);
|
||||||
|
blobmsg_add_u16(&b, "tx-antenna-id", pos[5]);
|
||||||
|
blobmsg_add_u16(&b, "rcpi", pos[6]);
|
||||||
|
blobmsg_add_u16(&b, "rsni", pos[7]);
|
||||||
|
|
||||||
|
ubus_notify(ctx, &hapd->ubus.obj, "link-measurement-report", b.head, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_WNM_AP
|
#ifdef CONFIG_WNM_AP
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -47,6 +47,7 @@ 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);
|
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);
|
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(struct hostapd_data *hapd, const char *type, const u8 *mac);
|
||||||
void hostapd_ubus_notify_beacon_report(struct hostapd_data *hapd,
|
void hostapd_ubus_notify_beacon_report(struct hostapd_data *hapd,
|
||||||
const u8 *addr, u8 token, u8 rep_mode,
|
const u8 *addr, u8 token, u8 rep_mode,
|
||||||
@ -98,6 +99,10 @@ static inline int hostapd_ubus_handle_event(struct hostapd_data *hapd, struct ho
|
|||||||
return 0;
|
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(struct hostapd_data *hapd, const char *type, const u8 *mac)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user