From: Steven Barth Date: Tue, 22 Apr 2008 16:07:02 +0000 (+0000) Subject: * ffluci.sys.net.hexip4: Added option for big endian support X-Git-Tag: 0.8.0~1114 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=187bbe4bbec7cb22c33df9c805c829e939892016;p=oweals%2Fluci.git * ffluci.sys.net.hexip4: Added option for big endian support * ffluci.cbi.TypedSection.cfgsections: Check whether there are any configuration sections before iterating * ffluci.view.public_status.routes: Added "fix" for big endian systems --- diff --git a/core/src/ffluci/cbi.lua b/core/src/ffluci/cbi.lua index f09d48ad7..5b38d1b50 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 c97017d8d..44855f8ef 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 046c789f9..156a0336f 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%>