require("luci.tools.webadmin")
m = Map("network", translate("a_n_routes"), translate("a_n_routes1"))
+local routes6 = luci.sys.net.routes6()
+local bit = require "bit"
+
if not arg or not arg[1] then
local routes = luci.sys.net.routes()
net = v:option(DummyValue, "iface", translate("network"))
function net.cfgvalue(self, section)
- return luci.tools.webadmin.iface_get_network(routes[section].Iface)
- or routes[section].Iface
+ return luci.tools.webadmin.iface_get_network(routes[section].device)
+ or routes[section].device
end
target = v:option(DummyValue, "target", translate("target"))
function target.cfgvalue(self, section)
- return luci.ip.Hex(routes[section].Destination, 32):string()
+ return routes[section].dest:network():string()
end
netmask = v:option(DummyValue, "netmask", translate("netmask"))
function netmask.cfgvalue(self, section)
- return luci.ip.Hex(routes[section].Mask, 32):string()
+ return routes[section].dest:mask():string()
end
gateway = v:option(DummyValue, "gateway", translate("gateway"))
function gateway.cfgvalue(self, section)
- return luci.ip.Hex(routes[section].Gateway, 32):string()
+ return routes[section].gateway:string()
end
- metric = v:option(DummyValue, "Metric", translate("metric"))
-
-
- local routes6 = luci.sys.net.routes6()
-
- v = m:section(Table, routes6, translate("a_n_routes_kernel6"))
-
- net = v:option(DummyValue, "iface", translate("network"))
- function net.cfgvalue(self, section)
- return luci.tools.webadmin.iface_get_network(routes6[section].device)
- or routes6[section].device
+ metric = v:option(DummyValue, "metric", translate("metric"))
+ function metric.cfgvalue(self, section)
+ return routes[section].metric
end
- target = v:option(DummyValue, "target", translate("target"))
- function target.cfgvalue(self, section)
- return routes6[section].dst_ip .. "/" .. routes6[section].dst_prefix
- end
---[[
- netmask = v:option(DummyValue, "prefix", translate("prefix"))
- function netmask.cfgvalue(self, section)
- return luci.ip.Hex(routes6[section].Mask, 32):string()
- end
-]]
- gateway = v:option(DummyValue, "gateway", translate("gateway6"))
- function gateway.cfgvalue(self, section)
- return routes6[section].src_ip .. "/" .. routes6[section].src_prefix
+ if routes6 then
+ v = m:section(Table, routes6, translate("a_n_routes_kernel6"))
+
+ net = v:option(DummyValue, "iface", translate("network"))
+ function net.cfgvalue(self, section)
+ return luci.tools.webadmin.iface_get_network(routes6[section].device)
+ or routes6[section].device
+ end
+
+ target = v:option(DummyValue, "target", translate("target"))
+ function target.cfgvalue(self, section)
+ return routes6[section].dest:string()
+ end
+
+ gateway = v:option(DummyValue, "gateway", translate("gateway6"))
+ function gateway.cfgvalue(self, section)
+ return routes6[section].source:string()
+ end
+
+ metric = v:option(DummyValue, "metric", translate("metric"))
+ function metric.cfgvalue(self, section)
+ local metr = routes6[section].metric
+ local lower = bit.band(metr, 0xffff)
+ local higher = bit.rshift(bit.band(metr, 0xffff0000), 16)
+ return "%04X%04X" % {higher, lower}
+ end
end
-
- metric = v:option(DummyValue, "Metric", translate("metric"))
- function metric.cfgvalue(self, section)
- return string.format( "%08X", routes6[section].metric )
- end
end
-s = m:section(TypedSection, "route", translate("a_n_routes_static"))
+s = m:section(TypedSection, "route", translate("a_n_routes_static4"))
s.addremove = true
s.anonymous = true
s:option(Value, "gateway", translate("gateway"))
+if routes6 then
+ s = m:section(TypedSection, "route6", translate("a_n_routes_static6"))
+ s.addremove = true
+ s.anonymous = true
-s = m:section(TypedSection, "route6", translate("a_n_routes_static6"))
-s.addremove = true
-s.anonymous = true
+ s.template = "cbi/tblsection"
-s.template = "cbi/tblsection"
+ iface = s:option(ListValue, "interface", translate("interface"))
+ luci.tools.webadmin.cbi_add_networks(iface)
-iface = s:option(ListValue, "interface", translate("interface"))
-luci.tools.webadmin.cbi_add_networks(iface)
-
-if not arg or not arg[1] then
- net.titleref = iface.titleref
-end
+ if not arg or not arg[1] then
+ net.titleref = iface.titleref
+ end
-s:option(Value, "target", translate("target"), translate("a_n_r_target6"))
+ s:option(Value, "target", translate("target"), translate("a_n_r_target6"))
-s:option(Value, "gateway", translate("gateway6")).rmempty = true
+ s:option(Value, "gateway", translate("gateway6")).rmempty = true
+end
return m