-- 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
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
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
<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>