ruleset: properly handle zone names starting with a digit
authorJo-Philipp Wich <jo@mein.io>
Wed, 5 Oct 2022 21:50:18 +0000 (23:50 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 5 Oct 2022 21:50:18 +0000 (23:50 +0200)
When forming the device and subnet define name, prepend zone name with
an underscore in case it starts with a digit in order to avoid generating
invalid syntax.

Ref: https://github.com/openwrt/openwrt/issues/10693
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
root/usr/share/firewall4/templates/ruleset.uc

index eaa1f0449520d14b41aeca0391f1a3f1912c1f72..2e33d5de152e058b0de88ce8bddabe4905e4b3ff 100644 (file)
@@ -73,8 +73,8 @@ table inet fw4 {
        #
 
 {% for (let zone in fw4.zones()): %}
-       define {{ zone.name }}_devices = {{ fw4.set(zone.match_devices, true) }}
-       define {{ zone.name }}_subnets = {{ fw4.set(zone.match_subnets, true) }}
+       define {{ replace(zone.name, /^[0-9]/, '_$&') }}_devices = {{ fw4.set(zone.match_devices, true) }}
+       define {{ replace(zone.name, /^[0-9]/, '_$&') }}_subnets = {{ fw4.set(zone.match_subnets, true) }}
 
 {% endfor %}