diff options
Diffstat (limited to 'ipv6-update')
-rw-r--r-- | ipv6-update | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/ipv6-update b/ipv6-update index 869daf3..5d5a3dc 100644 --- a/ipv6-update +++ b/ipv6-update @@ -6,6 +6,8 @@ :local PdPrefix $"pd-prefix"; +:global ParseKeyValueStore; + :if ([ :typeof $PdPrefix ] = "nothing") do={ :log error "This script is supposed to run from ipv6 dhcp-client."; :error "Error: See log for details."; @@ -22,12 +24,10 @@ if ($OldPrefix != $PdPrefix) do={ :log info ("Updating IPv6 address list with new IPv6 prefix " . $PdPrefix); / ipv6 firewall address-list set address=$PdPrefix $AddrList; - :foreach Record in=[ / ip dns static find where comment~("ipv6-pool-" . $Pool) ] do={ - :local Comment [ :toarray [ / ip dns static get $Record comment ] ]; - :local IntName [ :pick ($Comment->1) 10 99 ]; - :local Suffix [ :pick ($Comment->2) 7 99 ]; + :foreach Record in=[ / ip dns static find where comment~("^ipv6-pool-" . $Pool . ",") ] do={ + :local Comment [ $ParseKeyValueStore [ / ip dns static get $Record comment ] ]; - :local Prefix [ / ipv6 address get [ find where interface=$IntName from-pool=$Pool global ] address ]; + :local Prefix [ / ipv6 address get [ find where interface=($Comment->"interface") from-pool=$Pool global ] address ]; :set Prefix [ :pick $Prefix 0 [ :find $Prefix "::/64" ] ]; :if ($Prefix~"^[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:") do={ } else={ :set Prefix ($Prefix . ":"); @@ -38,7 +38,7 @@ if ($OldPrefix != $PdPrefix) do={ :set Name [ / ip dns static get $Record regex ]; } - :log info ("Updating DNS record for " . $Name . " to " . $Prefix . ":" . $Suffix); - / ip dns static set address=($Prefix . ":" . $Suffix) $Record; + :log info ("Updating DNS record for " . $Name . " to " . $Prefix . ":" . ($Comment->"suffix")); + / ip dns static set address=($Prefix . ":" . ($Comment->"suffix")) $Record; } } |