ipv6-update: create a dynamic address-list entry only

This should make sure that the script runs once after reboot, even if
the prefix does not change.

An existing static entry needs to be removed to make this work!

https://github.com/eworm-de/routeros-scripts/issues/85
This commit is contained in:
Christian Hesse 2024-10-22 22:35:14 +02:00
parent d022c87651
commit e803f8b3c0
2 changed files with 10 additions and 6 deletions

View file

@ -45,13 +45,17 @@ Installing [ppp-on-up](ppp-on-up.md) may solve this.
Configuration Configuration
------------- -------------
An address list entry is updated with current prefix and can be used in As an address-list entry is mandatory a dynamic one is created automatically.
firewall rules, comment has to be "`ipv6-pool-`" and actual pool name: It is updated with current prefix and can be used in firewall rules.
Alternatively a static address-list entry can be used, where comment has to
be "`ipv6-pool-`" and actual pool name. Use what ever list is desired, and
create it with:
/ipv6/firewall/address-list/add address=2003:cf:2f0f:de00::/56 comment=ipv6-pool-isp list=extern; /ipv6/firewall/address-list/add address=2003:cf:2f0f:de00::/56 comment=ipv6-pool-isp list=extern;
As this entry is mandatory it is created automatically if it does not exist, If the dynamic entry exists already you need to remove it before creating
with the comment also set for list. the static one..
Address list entries for specific interfaces can be updated as well. The Address list entries for specific interfaces can be updated as well. The
interface needs to get its address from pool `isp` and the address list entry interface needs to get its address from pool `isp` and the address list entry

View file

@ -37,8 +37,8 @@
:local Pool [ /ipv6/pool/get [ find where prefix=$PdPrefix ] name ]; :local Pool [ /ipv6/pool/get [ find where prefix=$PdPrefix ] name ];
:if ([ :len [ /ipv6/firewall/address-list/find where comment=("ipv6-pool-" . $Pool) ] ] = 0) do={ :if ([ :len [ /ipv6/firewall/address-list/find where comment=("ipv6-pool-" . $Pool) ] ] = 0) do={
/ipv6/firewall/address-list/add list=("ipv6-pool-" . $Pool) address=:: comment=("ipv6-pool-" . $Pool); /ipv6/firewall/address-list/add list=("ipv6-pool-" . $Pool) address=:: comment=("ipv6-pool-" . $Pool) dynamic=yes;
$LogPrint warning $ScriptName ("Added ipv6 address list entry for ipv6-pool-" . $Pool); $LogPrint warning $ScriptName ("Added dynamic ipv6 address list entry for ipv6-pool-" . $Pool);
} }
:local AddrList [ /ipv6/firewall/address-list/find where comment=("ipv6-pool-" . $Pool) ]; :local AddrList [ /ipv6/firewall/address-list/find where comment=("ipv6-pool-" . $Pool) ];
:local OldPrefix [ /ipv6/firewall/address-list/get ($AddrList->0) address ]; :local OldPrefix [ /ipv6/firewall/address-list/get ($AddrList->0) address ];