From 6d3223164d85f83b7568e0859e4cdcbbb7136f6c Mon Sep 17 00:00:00 2001
From: sbwml <admin@cooluc.com>
Date: Wed, 18 Dec 2024 23:38:26 +0800
Subject: [PATCH] luci-app-firewall: add fullcone6 option for nftables based
 fullcone

Signed-off-by: sbwml <admin@cooluc.com>
---
 .../resources/view/firewall/zones.js          | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
index 3fe1065..37dfaf2 100644
--- a/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
+++ b/applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
@@ -77,6 +77,25 @@ return view.extend({
 				uci.set('firewall', section_id, 'fullcone', value === '0' ? null : '1');
 				uci.set('firewall', section_id, 'brcmfullcone', value === '2' ? '1' : null);
 			};
+
+			/* nft-fullcone 6 */
+			o = s.option(form.RichListValue, "fullcone6", _("Full Cone NAT6"));
+			o.value('0', _("Disable"));
+			o.value('1', _("Enable"));
+			o.optional = false;
+			o.depends('fullcone_type', '1');
+			o.load = function (section_id) {
+				var fullcone6 = uci.get('firewall', section_id, 'fullcone6');
+				if (fullcone6 === '1') {
+					return '1';
+				} else {
+					return '0';
+				}
+			};
+			o.write = function(section_id, value) {
+				uci.set('firewall', section_id, 'fullcone6', value === '1' ? '1' : '0');
+				uci.set('firewall', '@zone[1]', 'fullcone6', value === '1' ? '1' : '0');
+			};
 		}
 
 		if (L.hasSystemFeature('ipv6')) {
-- 
2.43.5

