From 420efa0c47ea7ae94800f2be53fe339dc220901b Mon Sep 17 00:00:00 2001 From: Monviech <79600909+Monviech@users.noreply.github.com> Date: Sat, 13 Dec 2025 14:10:25 +0100 Subject: [PATCH] net/ndp-proxy-go: Add cache file support (#5085) --- net/ndp-proxy-go/pkg-descr | 1 + .../controllers/OPNsense/NdpProxy/forms/dialogAlias.xml | 2 +- .../app/controllers/OPNsense/NdpProxy/forms/general.xml | 8 +++++++- .../mvc/app/models/OPNsense/NdpProxy/NdpProxy.xml | 6 +++++- .../service/templates/OPNsense/NdpProxy/ndp_proxy_go | 3 +++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/net/ndp-proxy-go/pkg-descr b/net/ndp-proxy-go/pkg-descr index 9bd61a764..68c72ebad 100644 --- a/net/ndp-proxy-go/pkg-descr +++ b/net/ndp-proxy-go/pkg-descr @@ -9,6 +9,7 @@ Plugin Changelog 1.2 * Add firewall alias support +* Add cache file support for faster recovery after system reboots 1.1 diff --git a/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/dialogAlias.xml b/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/dialogAlias.xml index 455afc62f..31ac75118 100644 --- a/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/dialogAlias.xml +++ b/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/dialogAlias.xml @@ -3,7 +3,7 @@ alias.interface dropdown - Add IPv6 addresses to the firewall alias that belong to this proxied interface. When choosing any, all IPv6 addresses will be added. + Add IPv6 addresses to the firewall alias that belongs to this proxied interface. When choosing any, all IPv6 addresses will be added. any diff --git a/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/general.xml b/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/general.xml index b7d161623..d496342cd 100644 --- a/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/general.xml +++ b/net/ndp-proxy-go/src/opnsense/mvc/app/controllers/OPNsense/NdpProxy/forms/general.xml @@ -46,7 +46,7 @@ text 10 - Neighbor cache lifetime in minutes. This controls when stale clients and host routes are cleaned up. When using a point-to-point interface as upstream, increasing this lifetime is necessary to not prematurely clean up routes. + Neighbor cache lifetime in minutes. This controls when stale clients, host routes and firewall aliases are cleaned up. When using a point-to-point interface as upstream, increasing this lifetime is necessary to not prematurely clean up routes. ndpproxy.general.cache_max @@ -55,6 +55,12 @@ 4096 Maximum learned neighbors, increase for large networks. + + ndpproxy.general.cache_file + + checkbox + Persist cache to file on service stop and load it on service start. Only neighbors with a valid cache lifetime are loaded. This helps on system reboots to minimize downtime of individual clients. + ndpproxy.general.route_qps diff --git a/net/ndp-proxy-go/src/opnsense/mvc/app/models/OPNsense/NdpProxy/NdpProxy.xml b/net/ndp-proxy-go/src/opnsense/mvc/app/models/OPNsense/NdpProxy/NdpProxy.xml index 4298f1d53..a88c26c5f 100644 --- a/net/ndp-proxy-go/src/opnsense/mvc/app/models/OPNsense/NdpProxy/NdpProxy.xml +++ b/net/ndp-proxy-go/src/opnsense/mvc/app/models/OPNsense/NdpProxy/NdpProxy.xml @@ -1,7 +1,7 @@ //OPNsense/ndpproxy NDP Proxy model - 0.2 + 1.0 @@ -26,6 +26,10 @@ 1 + + 0 + Y + 1 diff --git a/net/ndp-proxy-go/src/opnsense/service/templates/OPNsense/NdpProxy/ndp_proxy_go b/net/ndp-proxy-go/src/opnsense/service/templates/OPNsense/NdpProxy/ndp_proxy_go index 884649915..71acffe93 100644 --- a/net/ndp-proxy-go/src/opnsense/service/templates/OPNsense/NdpProxy/ndp_proxy_go +++ b/net/ndp-proxy-go/src/opnsense/service/templates/OPNsense/NdpProxy/ndp_proxy_go @@ -8,6 +8,9 @@ ndp_proxy_go_upstream="{{ helpers.physical_interface(general.upstream) }}" {% do downstream_interfaces.append(helpers.physical_interface(interface)) %} {% endfor %} ndp_proxy_go_downstream="{{ downstream_interfaces|join(' ') }}" +{% if general.cache_file == "1" %} +ndp_proxy_go_cache_file="/var/db/ndpproxy/cache.json" +{% endif %} {% set flags = [] %} {% if general.debug == "1" %} {% do flags.append('--debug') %}