From 3cbf27061ad313ab47abf979d4549b1423cf9b6a Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 4 Mar 2024 23:54:24 +0100 Subject: [PATCH] luci-mod-status: fix sporadic logical interfaces resolve failures Correct the incorrect netmask calculation logic leading to incorrect network range comparisons in some cases. Fixes: #6956 Signed-off-by: Jo-Philipp Wich (cherry picked from commit fa6c345e19360439fa5077137d1e927b0cc501d0) --- .../htdocs/luci-static/resources/view/status/routes.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js index 8d7e36f701..dfe19fc70a 100644 --- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js +++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js @@ -13,13 +13,15 @@ var callNetworkInterfaceDump = rpc.declare({ function applyMask(addr, mask, v6) { var words = v6 ? validation.parseIPv6(addr) : validation.parseIPv4(addr); + var bword = v6 ? 0xffff : 0xff; + var bwlen = v6 ? 16 : 8; if (!words || mask < 0 || mask > (v6 ? 128 : 32)) return null; for (var i = 0; i < words.length; i++) { - var b = Math.min(mask, v6 ? 16 : 8); - words[i] &= ((1 << b) - 1); + var b = Math.min(mask, bwlen); + words[i] &= (bword << (bwlen - b)) & bword; mask -= b; } -- 2.30.2