diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php index 60ce0808d..7d0ffa117 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php @@ -1,7 +1,7 @@ * @@ -329,4 +329,19 @@ class DiagnosticsController extends ApiControllerBase { return $this->bfdTreeFetch('counters'); } + + public function bfdstaticrouteAction(): array + { + $records = []; + $payload = json_decode((new Backend())->configdpRun('quagga diagnostics bfd_staticroute json'), true) ?? []; + if (!empty($payload['path-list'])) { + foreach ($payload['path-list'] as $proto => $values) { + foreach ($values as $record) { + $record['proto'] = $proto; + $records[] = $record; + } + } + } + return $this->searchRecordsetBase($records); + } } diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php index 7cb40b232..125be3477 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php @@ -1,6 +1,7 @@ All rights reserved. @@ -123,6 +124,12 @@ class DiagnosticsController extends \OPNsense\Base\IndexController 'tabhead' => gettext('Summary'), 'type' => 'bfdsummary' ], + [ + 'name' => 'staticroute', + 'endpoint' => '/api/quagga/diagnostics/bfdstaticroute', + 'tabhead' => gettext('Static Route'), + 'type' => 'bfdstaticroute' + ], [ 'name' => 'neighbors', 'endpoint' => '/api/quagga/diagnostics/bfdneighbors', diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditSTATICRoute.xml b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditSTATICRoute.xml index aae3f26c7..786d69359 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditSTATICRoute.xml +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditSTATICRoute.xml @@ -27,4 +27,14 @@ dropdown Select an interface where this settings apply to. + + route.bfd + + checkbox + Mark the route as dependent on the BFD neighbor session with the next hop. + + boolean + boolean + + diff --git a/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.xml b/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.xml index 8610f0c90..7f5fdb49b 100644 --- a/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.xml +++ b/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.xml @@ -28,6 +28,10 @@ /^(?!group).*$/ + + 0 + N + diff --git a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/diagnostics.volt b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/diagnostics.volt index c6dbe668f..3792e3f82 100644 --- a/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/diagnostics.volt +++ b/net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/diagnostics.volt @@ -1,6 +1,6 @@ {# -OPNsense® is Copyright © 2014 – 2023 by Deciso B.V. +OPNsense® is Copyright © 2014 – 2026 by Deciso B.V. Copyright (C) 2023 Marc Bartelt Copyright (C) 2017 Fabian Franz Copyright (C) 2017 Michael Muenz @@ -101,6 +101,7 @@ POSSIBILITY OF SUCH DAMAGE. {% case 'ospfv3databasetable' %} {% case 'ospfneighbors' %} {% case 'bfdsummary' %} + {% case 'bfdstaticroute' %} if (all_grids["{{ tab['name'] }}"] === undefined) { /** * initialize bootgrid table for {{ tab['tabhead'] }} @@ -406,6 +407,22 @@ POSSIBILITY OF SUCH DAMAGE. {% break %} + {% case 'bfdstaticroute' %} +
+ + + + + + + + + + + +
{{ lang._('Protocol') }}{{ lang._('Vrf') }}{{ lang._('Peer') }}{{ lang._('Installed') }}
+
+ {% break %} {% case 'tree' %}