39 lines
1.3 KiB
Plaintext
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
|
|
}
|