policy: count kick total
[project/usteer.git] / ubus.c
diff --git a/ubus.c b/ubus.c
index 7b8472370fc221bfc9bf3dc27df701168139deb5..92442b3da6df8be50484d7ff7500f642bf184d37 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -293,6 +293,7 @@ void usteer_dump_node(struct blob_buf *buf, struct usteer_node *node)
 
        c = blobmsg_open_table(buf, usteer_node_name(node));
        blobmsg_printf(buf, "bssid", MAC_ADDR_FMT, MAC_ADDR_DATA(node->bssid));
+       blobmsg_add_string(buf, "ssid", node->ssid);
        blobmsg_add_u32(buf, "freq", node->freq);
        blobmsg_add_u32(buf, "n_assoc", node->n_assoc);
        blobmsg_add_u32(buf, "noise", node->noise);
@@ -403,6 +404,7 @@ usteer_ubus_get_connected_clients(struct ubus_context *ctx, struct ubus_object *
                        blobmsg_add_u32(&b, "signal", si->signal);
                        blobmsg_add_u64(&b, "created", si->created);
                        blobmsg_add_u64(&b, "seen", si->seen);
+                       blobmsg_add_u64(&b, "connected_since", si->connected_since);
                        blobmsg_add_u64(&b, "last_connected", si->last_connected);
 
                        t = blobmsg_open_table(&b, "snr-kick");
@@ -442,6 +444,9 @@ usteer_ubus_get_connected_clients(struct ubus_context *ctx, struct ubus_object *
                        /* BSS-Transition support */
                        blobmsg_add_u8(&b, "bss-transition-management", si->bss_transition);
 
+                       /* MBO support */
+                       blobmsg_add_u8(&b, "multi-band-operation", si->mbo);
+
                        /* Measurements */
                        a = blobmsg_open_array(&b, "measurements");
                        list_for_each_entry(mr, &si->sta->measurements, sta_list) {
@@ -449,6 +454,7 @@ usteer_ubus_get_connected_clients(struct ubus_context *ctx, struct ubus_object *
                                blobmsg_add_string(&b, "node", usteer_node_name(mr->node));
                                blobmsg_add_u32(&b, "rcpi", mr->rcpi);
                                blobmsg_add_u32(&b, "rsni", mr->rsni);
+                               blobmsg_add_u32(&b, "rssi", usteer_measurement_get_rssi(mr));
                                blobmsg_add_u64(&b, "timestamp", mr->timestamp);
                                blobmsg_close_table(&b, t);
                        }
@@ -700,17 +706,6 @@ int usteer_ubus_band_steering_request(struct sta_info *si)
        return ubus_invoke(ubus_ctx, ln->obj_id, "bss_transition_request", b.head, NULL, 0, 100);
 }
 
-int usteer_ubus_notify_client_disassoc(struct sta_info *si)
-{
-       struct usteer_local_node *ln = container_of(si->node, struct usteer_local_node, node);
-
-       blob_buf_init(&b, 0);
-       blobmsg_printf(&b, "addr", MAC_ADDR_FMT, MAC_ADDR_DATA(si->sta->addr));
-       blobmsg_add_u32(&b, "duration", config.roam_kick_delay / usteer_local_node_get_beacon_interval(ln));
-       usteer_ubus_disassoc_add_neighbors(si);
-       return ubus_invoke(ubus_ctx, ln->obj_id, "wnm_disassoc_imminent", b.head, NULL, 0, 100);
-}
-
 int usteer_ubus_trigger_link_measurement(struct sta_info *si)
 {
        struct usteer_local_node *ln = container_of(si->node, struct usteer_local_node, node);
@@ -756,6 +751,7 @@ void usteer_ubus_kick_client(struct sta_info *si)
        blobmsg_add_u8(&b, "deauth", 1);
        ubus_invoke(ubus_ctx, ln->obj_id, "del_client", b.head, NULL, 0, 100);
        usteer_sta_disconnected(si);
+       si->kick_count++;
        si->roam_kick = current_time;
 }