From 60c666fd890ffa5f198912cacdb2179bc898533a Mon Sep 17 00:00:00 2001 From: Tomas Janousek Date: Sun, 7 Apr 2024 14:29:43 +0100 Subject: [PATCH] NetworkMgr: Extend hasDefaultRoute for IPv6-only networks --- frontend/ui/network/manager.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/frontend/ui/network/manager.lua b/frontend/ui/network/manager.lua index f686e1a1f..b934ab4e1 100644 --- a/frontend/ui/network/manager.lua +++ b/frontend/ui/network/manager.lua @@ -274,7 +274,7 @@ function NetworkMgr:ifHasAnAddress() return ok 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() local socket = require("socket") @@ -285,11 +285,17 @@ function NetworkMgr:hasDefaultRoute() return nil end - --- @todo: Try 2606:4700:4700::1111 if IPv4 is unavailable. ret, err = s:setpeername("1.1.1.1", "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) + + -- 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 s:close()