routeros-scripts-phg/IPv6HelperFunctions.rsc
2025-01-20 10:57:22 +01:00

39 lines
1.3 KiB
Plaintext

# -------------------------------------------------------------------------------
# IPv6 helper functions
#
# by Philip 'ShokiNN' Henning <mail@philip-henning.com>
# 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
}