Skip to content
Snippets Groups Projects
Commit d849f9cf authored by Filip Matusiak's avatar Filip Matusiak
Browse files

Notify client steer request event on UBUS

parent 8621ea8a
No related branches found
No related tags found
1 merge request!219Add new event notifications for steering
...@@ -484,6 +484,41 @@ void cntlr_update_sta_steer_counters(struct controller *c, ...@@ -484,6 +484,41 @@ void cntlr_update_sta_steer_counters(struct controller *c,
mapsta->num_steer_hist += 1; mapsta->num_steer_hist += 1;
} }
void cntlr_notify_client_steer_req_evt(struct controller *c,
uint8_t *bssid, uint32_t sta_nr, uint8_t stas[][6],
uint32_t bssid_nr, uint8_t target_bssid[][6])
{
char ev_data[1024] = {0};
snprintf(ev_data, sizeof(ev_data),
"{\"bssid\":\""MACFMT"\"",
MAC2STR(bssid));
if (sta_nr) {
char mac[64] = {0};
strncat(ev_data, ",\"sta_mac\":", sizeof(ev_data) - strlen(ev_data));
snprintf(mac, sizeof(mac), "\""MACFMT"\"", MAC2STR(stas[0]));
strncat(ev_data, mac, sizeof(ev_data) - strlen(ev_data));
// TODO: use blob_buf directly to provide further STA MACs
}
if (bssid_nr) {
char mac[64] = {0};
strncat(ev_data, ",\"target_bssid\":", sizeof(ev_data) - strlen(ev_data));
snprintf(mac, sizeof(mac), "\""MACFMT"\"", MAC2STR(target_bssid[0]));
strncat(ev_data, mac, sizeof(ev_data) - strlen(ev_data));
// TODO: use blob_buf directly to provide further target MACs
}
strncat(ev_data, "}", sizeof(ev_data) - strlen(ev_data));
cntlr_notify_event(c, "client_steer_request", ev_data);
}
#if 0 #if 0
static int invoke_disconnect_sta(struct node *n, struct netif_iface *p, static int invoke_disconnect_sta(struct node *n, struct netif_iface *p,
uint8_t *sta_mac) uint8_t *sta_mac)
... ...
......
...@@ -386,6 +386,9 @@ struct netif_iface *cntlr_iterate_fbss(struct controller *c, uint8_t *mac); ...@@ -386,6 +386,9 @@ struct netif_iface *cntlr_iterate_fbss(struct controller *c, uint8_t *mac);
void cntlr_update_sta_steer_counters(struct controller *c, uint8_t *sta_mac, void cntlr_update_sta_steer_counters(struct controller *c, uint8_t *sta_mac,
uint8_t *src_bssid, uint8_t *dst_bssid, uint8_t *src_bssid, uint8_t *dst_bssid,
uint32_t mode, enum steer_trigger trigger); uint32_t mode, enum steer_trigger trigger);
void cntlr_notify_client_steer_req_evt(struct controller *c,
uint8_t *bssid, uint32_t sta_nr, uint8_t stas[][6],
uint32_t bssid_nr, uint8_t target_bssid[][6]);
struct steer_control_config *get_steer_control_config(struct controller *c); struct steer_control_config *get_steer_control_config(struct controller *c);
struct sta *cntlr_add_sta(struct controller *c, uint8_t *macaddr); struct sta *cntlr_add_sta(struct controller *c, uint8_t *macaddr);
struct sta *cntlr_find_sta(struct controller *c, uint8_t *mac); struct sta *cntlr_find_sta(struct controller *c, uint8_t *mac);
... ...
......
...@@ -1023,6 +1023,8 @@ int cntlr_send_client_steer_request(struct controller *c, ...@@ -1023,6 +1023,8 @@ int cntlr_send_client_steer_request(struct controller *c,
if (!cmdu_data) if (!cmdu_data)
return -1; return -1;
cntlr_notify_client_steer_req_evt(c, bssid, sta_nr, stas, bssid_nr, target_bssid);
send_cmdu(c, cmdu_data); send_cmdu(c, cmdu_data);
cmdu_free(cmdu_data); cmdu_free(cmdu_data);
... ...
......
...@@ -1344,6 +1344,9 @@ static int cntlr_client_steering(struct ubus_context *ctx, struct ubus_object *o ...@@ -1344,6 +1344,9 @@ static int cntlr_client_steering(struct ubus_context *ctx, struct ubus_object *o
cntlr_update_sta_steering_stats(c, bss_id, sta_nr, sta_id, cntlr_update_sta_steering_stats(c, bss_id, sta_nr, sta_id,
bssid_nr, target_bbsid); bssid_nr, target_bbsid);
cntlr_notify_client_steer_req_evt(c, bss_id, sta_nr, sta_id,
bssid_nr, target_bbsid);
cmdu_put_eom(cmdu); cmdu_put_eom(cmdu);
send_cmdu(c, cmdu); send_cmdu(c, cmdu);
cmdu_free(cmdu); cmdu_free(cmdu);
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment