# ------------------------------------------------------------------------------- # IPv6 helper functions # # by Philip 'ShokiNN' Henning # RouterOS compatibility: 7+ # Version 1.0 # last update: 20.01.2025 # License: MIT # ------------------------------------------------------------------------------- # --------------------------- # Function: resolveIPv6 # - Takes an DNS string (e.g. "example.com") # - Returns a string of and IPv6 address # --------------------------- :global resolveIPv6 do={ :local result [:toarray ""] :local maxwait 5 :local cnt 0 :local listname "tmp-resolve$cnt" /ipv6/firewall/address-list { :do { :while ([:len [find list=$listname]] > 0) do={ :set cnt ($cnt + 1) :set listname "tmp-resolve$cnt" } :set cnt 0 add list=$listname address=$1 :while ([find list=$listname && dynamic] = "" && $cnt < $maxwait) do={:delay 1;:set cnt ($cnt +1)} :foreach i in=[find list=$listname && dynamic] do={ :local rawip [get $i address] :set result ($result, [:pick $rawip 0 [:find $rawip "/"]]) } remove [find list=$listname && !dynamic] } } :return $result }