From f29538776a0da1f4c1ccb4454c54f3bf25cd813b Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 19 Feb 2021 15:34:42 +0100 Subject: [PATCH] Fix for DHCPv6 interfaces --- .../root/usr/libexec/rpcd/openmptcprouter | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter index b86f4d287..858ae5798 100755 --- a/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter +++ b/luci-app-openmptcprouter/root/usr/libexec/rpcd/openmptcprouter @@ -1116,6 +1116,7 @@ function interfaces_status() local multipath = section["multipath"] local enabled = section["auto"] local proto = section["proto"] or "" + local ipv6 = section["ipv6"] or "0" --if not ipaddr or not gateway then return end -- Don't show if0 in the overview @@ -1130,8 +1131,8 @@ function interfaces_status() --end duplicateif = false - if ifname ~= "" and ifname ~= nil then - if allintf[ifname] and not section["ifname"]:match("^@.*") then + if ifname ~= "" and ifname ~= nil and not (section["ifname"] ~= nil and section["ifname"]:match("^@.*")) then + if allintf[ifname] then connectivity = "ERROR" duplicateif = true else @@ -1151,10 +1152,10 @@ function interfaces_status() if ipaddr == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) end - if ip6addr == "" and ifname ~= nil and ifname ~= "" then + if ip6addr == "" and ifname ~= nil and ifname ~= "" and (ipv6 == "1" or ipv6 == "auto") then ip6addr = ut.trim(sys.exec("ip -6 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'")) end - if ip6addr == "" and ifname ~= nil and ifname ~= "" then + if ip6addr == "" and ifname ~= nil and ifname ~= "" and (ipv6 == "1" or ipv6 == "auto") then ip6addr = ut.trim(sys.exec("ip -6 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) end if ipaddr == "" and ip6addr == "" then @@ -1199,13 +1200,15 @@ function interfaces_status() if proto ~= "dhcpv6" then gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) end - gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) + if ipv6 == "1" or ipv6 == "auto" then + gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep via | grep -v default | grep -v metric | awk '{print $1}' | tr -d '\n'")) + end end if gateway == "" and proto ~= "dhcpv6" then gateway = get_gateway(interface) end - if gateway == "" and ifname ~= nil and ifname ~= "" and proto ~= "dhcpv6" then + if gateway == "" and ifname ~= nil and ifname ~= "" and ipv6 ~= "1" and ipv6 ~= "auto" then if fs.access("/sys/class/net/" .. ifname) then gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) if gateway == "" then @@ -1213,10 +1216,10 @@ function interfaces_status() end end end - if gateway6 == "" then + if gateway6 == "" and (ipv6 == "1" or ipv6 == "auto") then gateway6 = get_gateway6(interface) end - if gateway6 == "" and ifname ~= nil and ifname ~= "" then + if gateway6 == "" and ifname ~= nil and ifname ~= "" and (ipv6 == "1" or ipv6 == "auto") then if fs.access("/sys/class/net/" .. ifname) then gateway6 = ut.trim(sys.exec("ip -6 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) if gateway6 == "" then