From 1058b814dd087054fd151c2329fa26e5aaaab7a7 Mon Sep 17 00:00:00 2001 From: Jakob Olsson <jakob.olsson@iopsys.eu> Date: Wed, 9 Mar 2022 15:19:20 +0100 Subject: [PATCH] add timer debugging and dynamic upgrade ubus methods --- src/agent_ubus.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/agent_ubus.c b/src/agent_ubus.c index edb6895e5..62a89c873 100644 --- a/src/agent_ubus.c +++ b/src/agent_ubus.c @@ -895,6 +895,39 @@ static int cmd(struct ubus_context *ctx, struct ubus_object *obj, return UBUS_STATUS_OK; } +static int agent_timers(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + struct blob_buf bb; + struct agent *a = container_of(obj, struct agent, obj); + + memset(&bb, 0, sizeof(bb)); + blob_buf_init(&bb, 0); + blobmsg_add_u32(&bb, "autoconfig_trigger", uloop_timeout_remaining(&a->autocfg_dispatcher)); + blobmsg_add_u32(&bb, "dynamic_backhaul_upgrade", uloop_timeout_remaining(&a->upgrade_backhaul_scheduler)); + blobmsg_add_u32(&bb, "disconnect_timer", uloop_timeout_remaining(&a->disconnect_timer)); + blobmsg_add_u32(&bb, "disable_unconnected_bstas_scheduler", uloop_timeout_remaining(&a->disable_unconnected_bstas_scheduler)); + blobmsg_add_u32(&bb, "onboarding_scheduler", uloop_timeout_remaining(&a->onboarding_scheduler)); + ubus_send_reply(ctx, req, bb.head); + blob_buf_free(&bb); + + return UBUS_STATUS_OK; +} + +static int agent_trigger_dynamic_upgrade(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + struct blob_buf bb; + struct agent *a = container_of(obj, struct agent, obj); + + if (uloop_timeout_remaining(&a->upgrade_backhaul_scheduler) > 0) + uloop_timeout_set(&a->upgrade_backhaul_scheduler, 0); + + return UBUS_STATUS_OK; +} + static int agent_status(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) @@ -1188,6 +1221,8 @@ int agent_publish_object(struct agent *a, const char *objname) #ifdef AGENT_SYNC_DYNAMIC_CNTLR_CONFIG UBUS_METHOD_NOARG("sync", sync_dyn_controller_config), #endif + UBUS_METHOD_NOARG("timers", agent_timers), + UBUS_METHOD_NOARG("dynamic_backhaul_upgrade", agent_trigger_dynamic_upgrade), }; int num_methods = ARRAY_SIZE(m); struct ubus_object_type *obj_type; -- GitLab