diff options
-rw-r--r-- | core/src/ffluci/cbi.lua | 5 | ||||
-rw-r--r-- | core/src/ffluci/sys.lua | 19 | ||||
-rw-r--r-- | module/public-core/src/view/public_status/routes.htm | 15 |
3 files changed, 29 insertions, 10 deletions
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 @@ <th><%:metric Metrik%></th> <th><%:iface Schnittstelle%></th> </tr> -<% 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 +%> <tr> -<td><%=ffluci.sys.net.hexip4(r.Destination)%></td> -<td><%=ffluci.sys.net.hexip4(r.Mask)%></td> -<td><%=ffluci.sys.net.hexip4(r.Gateway)%></td> +<td><%=ffluci.sys.net.hexip4(r.Destination, be)%></td> +<td><%=ffluci.sys.net.hexip4(r.Mask, be)%></td> +<td><%=ffluci.sys.net.hexip4(r.Gateway, be)%></td> <td><%=r.Metric%></td> <td><%=r.Iface%></td> </tr> |