NetworkMgr: Extend hasDefaultRoute for IPv6-only networks

reviewable/pr11601/r4
Tomas Janousek 2 months ago
parent 30a490bb11
commit 60c666fd89

@ -274,7 +274,7 @@ function NetworkMgr:ifHasAnAddress()
return ok return ok
end end
-- The socket API equivalent of "ip route get 1.1.1.1". -- The socket API equivalent of "ip route get 1.1.1.1 || ip route get 2606:4700:4700::1111".
function NetworkMgr:hasDefaultRoute() function NetworkMgr:hasDefaultRoute()
local socket = require("socket") local socket = require("socket")
@ -285,11 +285,17 @@ function NetworkMgr:hasDefaultRoute()
return nil return nil
end end
--- @todo: Try 2606:4700:4700::1111 if IPv4 is unavailable.
ret, err = s:setpeername("1.1.1.1", "53") ret, err = s:setpeername("1.1.1.1", "53")
if ret == nil then if ret == nil then
-- Most likely "Network is unreachable", meaning there's no route to that address. -- Most likely "Network is unreachable", meaning there's no route to that address.
logger.dbg("NetworkMgr: socket.udp.setpeername:", err) logger.dbg("NetworkMgr: socket.udp.setpeername:", err)
-- Try IPv6, may still succeed if this is an IPv6-only network.
ret, err = s:setpeername("2606:4700:4700::1111", "53")
if ret == nil then
-- Most likely "Network is unreachable", meaning there's no route to that address.
logger.dbg("NetworkMgr: socket.udp.setpeername:", err)
end
end end
s:close() s:close()

Loading…
Cancel
Save