diff --git a/net/haproxy/pkg-descr b/net/haproxy/pkg-descr
index 6ea53de08..31a2faff2 100644
--- a/net/haproxy/pkg-descr
+++ b/net/haproxy/pkg-descr
@@ -9,7 +9,8 @@ Plugin Changelog
4.0
Added:
-* add new option "Gradual connection close time" (close-spread-time) (#3026)
+* add new service option "Gradual connection close time" (close-spread-time) (#3026)
+* add new frontend option "shards" (#3026)
Changed:
* upgrade to HAProxy 2.6 release series (#3026)
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
index 9d776f2ff..2a4c492a5 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
@@ -297,6 +297,13 @@
Choose CPU affinity rules.
true
+
+ frontend.tuning_shards
+
+ text
+
+ true
+
header
diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
index 340264d97..baf4277b3 100644
--- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
+++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
@@ -655,6 +655,12 @@
Y
N
+
+ 2
+ 1000
+ Please specify a value between 2 and 1000.
+ N
+
0
Y
diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
index f465e6bf5..441e12ce2 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -1383,6 +1383,10 @@ frontend {{frontend.name}}
{% endif %}
{% endfor %}
{% endif %}
+{# # shards / multiple listeners on the same IP:port #}
+{% if frontend.tuning_shards|default('') != '' %}
+{% do adv_options.append('shards ' ~ frontend.tuning_shards) %}
+{% endif %}
{# # bind/listen configuration #}
{% if frontend.bind|default("") != "" %}
{% for bind in frontend.bind.split(",") %}