From d43b14ef9bb0c76fb5907fe487c2ffa10e477e48 Mon Sep 17 00:00:00 2001 From: Monviech <79600909+Monviech@users.noreply.github.com> Date: Wed, 4 Feb 2026 14:13:25 +0100 Subject: [PATCH] Firewall: Rules [new]: Exclude loopback from interface selectpicker (#9723) --- .../OPNsense/Firewall/Api/FilterController.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php b/src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php index 2e73d15fcb..862bff60cd 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php @@ -30,10 +30,11 @@ namespace OPNsense\Firewall\Api; use OPNsense\Base\UserException; use OPNsense\Core\Config; use OPNsense\Core\Backend; +use OPNsense\Firewall\Alias; use OPNsense\Firewall\Category; +use OPNsense\Firewall\Filter; use OPNsense\Firewall\Group; use OPNsense\Firewall\Util; -use OPNsense\Firewall\Alias; class FilterController extends FilterBaseController { @@ -402,7 +403,7 @@ class FilterController extends FilterBaseController // Count rules per interface $ruleCounts = []; - foreach ((new \OPNsense\Firewall\Filter())->rules->rule->iterateItems() as $rule) { + foreach ((new Filter())->rules->rule->iterateItems() as $rule) { $interfaces = $rule->interface->getValues(); if (!$rule->interfacenot->isEmpty() || count($interfaces) !== 1) { @@ -427,7 +428,7 @@ class FilterController extends FilterBaseController $result['floating']['items'][] = $makeItem('__floating', gettext('Floating'), $ruleCounts['floating'] ?? 0, 'floating'); // Groups - foreach ((new \OPNsense\Firewall\Group())->ifgroupentry->iterateItems() as $groupItem) { + foreach ((new Group())->ifgroupentry->iterateItems() as $groupItem) { $name = $groupItem->ifname->getValue(); $descr = $groupItem->descr->getValue(); $descr = empty($descr) ? $name : "{$descr} ($name)"; @@ -437,8 +438,9 @@ class FilterController extends FilterBaseController // Interfaces $groupKeys = array_column($result['groups']['items'], 'value'); - foreach (\OPNsense\Core\Config::getInstance()->object()->interfaces->children() as $key => $intf) { - if (!in_array($key, $groupKeys)) { + foreach (Config::getInstance()->object()->interfaces->children() as $key => $intf) { + // XXX: Loopback excluded since no rules should be on there + if (!in_array($key, array_merge($groupKeys, ['lo0']))) { $descr = !empty($intf->descr) ? (string)$intf->descr : strtoupper($key); $result['interfaces']['items'][] = $makeItem($key, $descr, $ruleCounts[$key] ?? 0, 'interface'); }