From d603ecd10a3790b684de17084e163caa95cd1f93 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 2 Aug 2024 12:41:00 +0200 Subject: [PATCH] ratelimit: apply updated ratelimit to associated stations Fixes: WIFI-13453 Fixes: WIFI-13840 Signed-off-by: John Crispin --- .../ratelimit/files/etc/init.d/ratelimit | 1 + .../ratelimit/files/usr/bin/ratelimit | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/feeds/ucentral/ratelimit/files/etc/init.d/ratelimit b/feeds/ucentral/ratelimit/files/etc/init.d/ratelimit index a502942ad..9f3754ac0 100755 --- a/feeds/ucentral/ratelimit/files/etc/init.d/ratelimit +++ b/feeds/ucentral/ratelimit/files/etc/init.d/ratelimit @@ -18,6 +18,7 @@ reload_service() { ubus call ratelimit flush config_load ratelimit config_foreach add_rate rate + ubus call ratelimit reload } service_triggers() { diff --git a/feeds/ucentral/ratelimit/files/usr/bin/ratelimit b/feeds/ucentral/ratelimit/files/usr/bin/ratelimit index 8246fcbf6..d50273016 100755 --- a/feeds/ucentral/ratelimit/files/usr/bin/ratelimit +++ b/feeds/ucentral/ratelimit/files/usr/bin/ratelimit @@ -326,6 +326,33 @@ function run_service() { args: { device:"", } + }, + reload: { + call: function(req) { + let list = uctx.list(); + for (let obj in list) { + if (!wildcard(obj, 'hostapd.wlan*')) + continue; + let iface = split(obj, '.')[1]; + let device = devices[iface]; + if (!device) + continue; + let status = uctx.call(obj, 'get_status'); + if (!status?.ssid) + continue; + if (!defaults[status?.ssid]) + continue; + let data = { + rate_ingress: defaults[status?.ssid][0], + rate_egress: defaults[status?.ssid][1] + }; + for (let k, client in device.clients) + set_client(device, client, data); + } + return 0; + }, + args: { + } } });