From 2a63a80791f1ab4481da7c67b70680f34703f3a2 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 15 Oct 2025 11:30:26 +0200 Subject: [PATCH] fw-addr-lists: masks in array --- fw-addr-lists.rsc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/fw-addr-lists.rsc b/fw-addr-lists.rsc index bef4616c..8fc4f318 100644 --- a/fw-addr-lists.rsc +++ b/fw-addr-lists.rsc @@ -56,6 +56,18 @@ } :local ListComment ("managed by " . $ScriptName); + :local Maskv4 ({}); + :for I from=0 to=32 do={ + :local List ("mask-" . $I); + /ip/firewall/address-list/add dynamic=yes timeout=1s list=$List address=("255.255.255.255/" . $I); + :set ($Maskv4->$I) [ /ip/firewall/address-list/get [ find where dynamic=yes list=$List ] address ]; + } + :local Maskv6 ({}); + :for I from=0 to=128 do={ + :local List ("mask-" . $I); + /ipv6/firewall/address-list/add dynamic=yes timeout=1s list=$List address=("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/" . $I); + :set ($Maskv4->$I) [ /ipv6/firewall/address-list/get [ find where dynamic=yes list=$List ] address ]; + } :foreach FwListName,FwList in=$FwAddrLists do={ :local CntAdd 0; @@ -114,15 +126,13 @@ :do { :local Branch; :if ($Address ~ "^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}(/[0-9]{1,2})?\$") do={ - /ip/firewall/address-list/add dynamic=yes list=$Address address=$Address timeout=1s; - :set Address [ /ip/firewall/address-list/get [ find where dynamic=yes list=$Address ] address ]; + :set Address :set Branch [ $GetBranch $Address ]; :set ($IPv4Addresses->$Branch->$Address) $TimeOut; :error true; } :if ($Address ~ "^[0-9a-zA-Z]*:[0-9a-zA-Z:\\.]+(/[0-9]{1,3})?\$") do={ - /ipv6/firewall/address-list/add dynamic=yes list=$Address address=$Address timeout=1s; - :set Address [ /ipv6/firewall/address-list/get [ find where dynamic=yes list=$Address ] address ]; + :set Address :set Branch [ $GetBranch $Address ]; :set ($IPv6Addresses->$Branch->$Address) $TimeOut; :error true;