From 355309551b9dfe218d05d8a1a18756db56470f97 Mon Sep 17 00:00:00 2001 From: Monviech <79600909+Monviech@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:37:42 +0100 Subject: [PATCH] net/frr: Fix STATIC template interface issue, use isEmpty() in validation (#5019) * net/frr: Fix STATIC template interface issue, use isEmpty() in validation * Properly safeguard optional parameters --- .../mvc/app/models/OPNsense/Quagga/STATICd.php | 6 +++--- .../service/templates/OPNsense/Quagga/staticd.conf | 13 ++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.php b/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.php index c336b3ad2..5d9213b73 100644 --- a/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.php +++ b/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.php @@ -48,7 +48,7 @@ class STATICd extends BaseModel continue; } $key = $route->__reference; - if (!empty((string)$route->network) && !empty((string)$route->gateway)) { + if (!$route->network->isEmpty() && !$route->gateway->isEmpty()) { $net_proto = str_contains($route->network, ':') ? 'inet6' : 'inet'; $gw_proto = str_contains($route->gateway, ':') ? 'inet6' : 'inet'; if ($net_proto != $gw_proto) { @@ -57,10 +57,10 @@ class STATICd extends BaseModel ); } } - if (empty((string)$route->gateway) && empty((string)$route->interfacename)) { + if ($route->gateway->isEmpty() && $route->interfacename->isEmpty()) { $messages->appendMessage( new Message( - gettext("When no interface is provided, at least a gateway must be offered"), + gettext("Either an interface or a gateway is required."), $key . ".gateway" ) ); diff --git a/net/frr/src/opnsense/service/templates/OPNsense/Quagga/staticd.conf b/net/frr/src/opnsense/service/templates/OPNsense/Quagga/staticd.conf index fdff7d0f2..43a810beb 100644 --- a/net/frr/src/opnsense/service/templates/OPNsense/Quagga/staticd.conf +++ b/net/frr/src/opnsense/service/templates/OPNsense/Quagga/staticd.conf @@ -2,7 +2,18 @@ {% if not helpers.empty('OPNsense.quagga.static.enabled') %} {% for route in helpers.toList('OPNsense.quagga.static.routes.route') %} {% if route.enabled == '1' %} -{% if ':' in route.network %}ipv6{% else %}ip{% endif %} route {{ route.network }} {{ route.gateway|default('')}} {{ helpers.physical_interface(route.interfacename) }} +{%- if ':' in route.network %} +ipv6 +{%- else %} +ip +{%- endif %} + route {{ route.network }} +{%- if route.gateway %} + {{ route.gateway}} +{%- endif %} +{%- if route.interfacename %} + {{ helpers.physical_interface(route.interfacename) }} +{%- endif +%} {% endif %} {% endfor %} {% endif %}