From 570b4bfe6f0af576cd192dfef098fe5f8eabb1df Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20H=C3=A4rdeman?= Date: Sun, 30 Nov 2025 19:43:29 +0100 Subject: [PATCH] rpcd-mod-luci: report the interface for leases MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This adds support to rpcd-mod-luci's ubus interface to report also which interface a given lease corresponds to, which will make it possible to expose that information in LuCI. Signed-off-by: David Härdeman --- libs/rpcd-mod-luci/src/luci.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index f5527a8a94..2abb5a81ff 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -353,6 +353,7 @@ struct lease_entry { char buf[512]; int32_t expire; struct ether_addr mac; + char *iface; char *hostname; char *duid; char *iaid; @@ -486,8 +487,13 @@ lease_next(void) ea = NULL; if (lease_state.files[lease_state.off].odhcpd) { - strtok(e.buf, " \t\n"); /* # */ - strtok(NULL, " \t\n"); /* iface */ + p = strtok(e.buf, " \t\n"); /* # */ + if (!p || strcmp(p, "#")) + continue; + + e.iface = strtok(NULL, " \t\n"); /* iface */ + if (!e.iface) + continue; e.duid = strtok(NULL, " \t\n"); /* duid or MAC */ if (!e.duid) @@ -1859,6 +1865,9 @@ rpc_luci_get_duid_hints(struct ubus_context *ctx, struct ubus_object *obj, o = blobmsg_open_table(&blob, key); + if (lease->iface) + blobmsg_add_string(&blob, "interface", lease->iface); + blobmsg_add_string(&blob, "duid", lease->duid); if (lease->iaid) @@ -1972,6 +1981,9 @@ rpc_luci_get_dhcp_leases(struct ubus_context *ctx, struct ubus_object *obj, else blobmsg_add_u32(&blob, "expires", lease->expire); + if (lease->iface) + blobmsg_add_string(&blob, "interface", lease->iface); + if (lease->hostname) blobmsg_add_string(&blob, "hostname", lease->hostname); -- 2.30.2