diff --git a/core/src/ffluci/cbi.lua b/core/src/ffluci/cbi.lua index f09d48ad7a..5b38d1b50a 100644 --- a/core/src/ffluci/cbi.lua +++ b/core/src/ffluci/cbi.lua @@ -367,7 +367,12 @@ end -- Return all matching UCI sections for this TypedSection function TypedSection.cfgsections(self) local sections = {} + local map = self.map:get() + if not map[".order"] then + return sections + end + for i, k in pairs(map[".order"]) do if map[k][".type"] == self.sectiontype then if self:checkscope(k) then diff --git a/core/src/ffluci/sys.lua b/core/src/ffluci/sys.lua index c97017d8d0..44855f8ef3 100644 --- a/core/src/ffluci/sys.lua +++ b/core/src/ffluci/sys.lua @@ -143,8 +143,8 @@ function net.routes() return _parse_delimited_table(io.lines("/proc/net/route")) end --- Returns the numeric IP to a given hexstring -function net.hexip4(hex) +-- Returns the numeric IP to a given hexstring (little endian) +function net.hexip4(hex, bigendian) if #hex ~= 8 then return nil end @@ -152,10 +152,17 @@ function net.hexip4(hex) local hexdec = ffluci.bits.Hex2Dec local ip = "" - ip = ip .. tostring(hexdec(hex:sub(7,8))) .. "." - ip = ip .. tostring(hexdec(hex:sub(5,6))) .. "." - ip = ip .. tostring(hexdec(hex:sub(3,4))) .. "." - ip = ip .. tostring(hexdec(hex:sub(1,2))) + if bigendian then + ip = ip .. tostring(hexdec(hex:sub(1,2))) .. "." + ip = ip .. tostring(hexdec(hex:sub(3,4))) .. "." + ip = ip .. tostring(hexdec(hex:sub(5,6))) .. "." + ip = ip .. tostring(hexdec(hex:sub(7,8))) + else + ip = ip .. tostring(hexdec(hex:sub(7,8))) .. "." + ip = ip .. tostring(hexdec(hex:sub(5,6))) .. "." + ip = ip .. tostring(hexdec(hex:sub(3,4))) .. "." + ip = ip .. tostring(hexdec(hex:sub(1,2))) + end return ip end diff --git a/module/public-core/src/view/public_status/routes.htm b/module/public-core/src/view/public_status/routes.htm index 046c789f91..156a0336fc 100644 --- a/module/public-core/src/view/public_status/routes.htm +++ b/module/public-core/src/view/public_status/routes.htm @@ -10,11 +10,18 @@ <%:metric Metrik%> <%:iface Schnittstelle%> -<% for i, r in pairs(ffluci.sys.net.routes()) do %> +<% +local routes = ffluci.sys.net.routes() + +-- UGLY hack is UGLY +local be = (routes[1] and routes[1].Mask:sub(-2) == "00") + +for i, r in pairs(routes) do +%> -<%=ffluci.sys.net.hexip4(r.Destination)%> -<%=ffluci.sys.net.hexip4(r.Mask)%> -<%=ffluci.sys.net.hexip4(r.Gateway)%> +<%=ffluci.sys.net.hexip4(r.Destination, be)%> +<%=ffluci.sys.net.hexip4(r.Mask, be)%> +<%=ffluci.sys.net.hexip4(r.Gateway, be)%> <%=r.Metric%> <%=r.Iface%>