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.interfacedropdown
- 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 @@
text10
- 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 @@
4096Maximum 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/ndpproxyNDP 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') %}