From 952836d1ef0b2e78a6c6909a87d33644941b638c Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Mon, 23 Nov 2009 13:52:53 +0000 Subject: [PATCH] NIU: Allow DHCP for Local Network (preparing WDS client) Use niulib-wrapper for finding available interfaces --- .../niu/luasrc/model/cbi/niu/network/etherwan.lua | 6 +-- modules/niu/luasrc/model/cbi/niu/network/lan.lua | 17 +++++++ modules/niu/luasrc/model/cbi/niu/network/lan1.lua | 54 +++++++++++++--------- 3 files changed, 52 insertions(+), 25 deletions(-) diff --git a/modules/niu/luasrc/model/cbi/niu/network/etherwan.lua b/modules/niu/luasrc/model/cbi/niu/network/etherwan.lua index f57b7f316..56350b3ff 100644 --- a/modules/niu/luasrc/model/cbi/niu/network/etherwan.lua +++ b/modules/niu/luasrc/model/cbi/niu/network/etherwan.lua @@ -30,14 +30,14 @@ s.addremove = false s:tab("general", translate("General Settings")) s:tab("expert", translate("Expert Settings")) -p = s:taboption("general", ListValue, "proto", "Connection Type") +p = s:taboption("general", ListValue, "proto", translate("Connection Protocol")) p.override_scheme = true p.default = "dhcp" -p:value("dhcp", "Cable / Ethernet / DHCP") +p:value("dhcp", translate("Cable / Ethernet / DHCP")) if has_pppoe then p:value("pppoe", "DSL / PPPoE") end if has_pppoa then p:value("pppoa", "PPPoA") end if has_pptp then p:value("pptp", "PPTP") end -p:value("static", "Static Ethernet") +p:value("static", translate("Static Ethernet")) diff --git a/modules/niu/luasrc/model/cbi/niu/network/lan.lua b/modules/niu/luasrc/model/cbi/niu/network/lan.lua index feb213c6e..ee70dd2cc 100644 --- a/modules/niu/luasrc/model/cbi/niu/network/lan.lua +++ b/modules/niu/luasrc/model/cbi/niu/network/lan.lua @@ -18,6 +18,23 @@ function d.on_done() cs:set("network", "lan", "_ipchanged", "1") cs:save("network") end + + if cursor:get("network", "lan", "proto") == "dhcp" then + local emergv4 = cursor:get("network", "lan", "_emergv4") + if emergv4 then + if cursor:get("network", "lan_ea") then + cursor:set("network", "lan_ea", "ipaddr", emergv4) + else + cursor:section("network", "alias", "lan_ea", { + ipaddr = emergv4, + netmask = "255.255.255.0", + network = "lan" + }) + end + else + cursor:delete("network", "lan_ea") + end + end cursor:set("network", "lan", "type", "bridge") cursor:commit("network") diff --git a/modules/niu/luasrc/model/cbi/niu/network/lan1.lua b/modules/niu/luasrc/model/cbi/niu/network/lan1.lua index 7b810b8f4..e4005bbcf 100644 --- a/modules/niu/luasrc/model/cbi/niu/network/lan1.lua +++ b/modules/niu/luasrc/model/cbi/niu/network/lan1.lua @@ -13,31 +13,38 @@ You may obtain a copy of the License at $Id$ ]]-- -local nw = require "luci.model.network" - -local has_ipv6 = nw:has_ipv6() +local niulib = require "luci.niulib" +local fs = require "nixio.fs" +local has_ipv6 = fs.access("/proc/net/ipv6_route") m = Map("network", "Configure Local Network", "These settings affect the devices in your local network. ".. "Usually you do not need to change anything here for your router to work correctly.") -nw.init(m.uci) - s = m:section(NamedSection, "lan", "interface", "Network Settings") s.addremove = false s:tab("general", translate("General Settings")) ipaddr = s:taboption("general", Value, "ipaddr", translate("IPv4-Address")) +ipaddr.default = "192.168.0.1" +ipaddr:depends("proto", "static") nm = s:taboption("general", Value, "netmask", translate("IPv4-Netmask")) +nm.default = "255.255.255.0" nm:value("255.255.255.0") nm:value("255.255.0.0") nm:value("255.0.0.0") +nm:depends("proto", "static") s:tab("expert", translate("Expert Settings")) +p = s:taboption("expert", ListValue, "proto", translate("Connection Protocol")) +p.default = "static" +p:value("dhcp", "DHCP") +p:value("static", translate("Static Ethernet")) + mac = s:taboption("expert", Value, "macaddr", translate("MAC-Address")) mtu = s:taboption("expert", Value, "mtu", "MTU") @@ -48,37 +55,33 @@ dns:depends("peerdns", "") gw = s:taboption("expert", Value, "gateway", translate("IPv4-Gateway")) +gw:depends("proto", "static") + bcast = s:taboption("expert", Value, "bcast", translate("IPv4-Broadcast")) +bcast:depends("proto", "static") if has_ipv6 then ip6addr = s:taboption("expert", Value, "ip6addr", translate("IPv6-Address"), translate("CIDR-Notation: address/prefix")) + ip6addr:depends("proto", "static") ip6gw = s:taboption("expert", Value, "ip6gw", translate("IPv6-Gateway")) + ip6gw:depends("proto", "static") end +emerg = s:taboption("expert", Value, "_emergv4", translate("Emergency Access Address")) +emerg:depends("proto", "dhcp") +emerg.default = "169.254.255.169" + stp = s:taboption("expert", Flag, "stp", translate("Enable STP"), translate("Enables the Spanning Tree Protocol on this bridge")) -ifname_multi = s:taboption("expert", MultiValue, "ifname_multi", translate("Interface")) -ifname_multi.template = "cbi/network_ifacelist" -ifname_multi.nobridges = true +ifname_multi = s:taboption("expert", MultiValue, "ifname", translate("Interface")) ifname_multi.widget = "checkbox" - -function ifname_multi.cfgvalue(self, s) - return self.map.uci:get("network", s, "ifname") +for _, eth in ipairs(niulib.eth_get_available("lan")) do + ifname_multi:value(eth, translate("Ethernet-Adapter (%s)") % eth) end -function ifname_multi.write(self, s, val) - local n = nw:get_network(s) - if n then n:ifname(val) end -end - -for _, d in ipairs(nw:get_interfaces()) do - if not d:is_bridge() then - ifname_multi:value(d:name()) - end -end m2 = Map("dhcp") @@ -93,17 +96,24 @@ s:tab("general", translate("General Settings")) s:depends("interface", "lan") enable = s:taboption("general", ListValue, "ignore", "Automatic address assignment for network devices", "") -enable:value(0, translate("enable")) +enable:value(0, translate("enable"), {["network.lan.proto"] = "static"}) enable:value(1, translate("disable")) s:tab("expert", translate("Expert Settings")) start = s:taboption("expert", Value, "start", translate("First leased address")) +start:depends("ignore", "0") + limit = s:taboption("expert", Value, "limit", translate("Number of leased addresses"), "") +limit:depends("ignore", "0") + time = s:taboption("expert", Value, "leasetime", "Lease Time") +time:depends("ignore", "0") + local dd = s:taboption("expert", Flag, "dynamicdhcp", "Also generate addresses for unknown devices") dd.rmempty = false dd.default = "1" +dd:depends("ignore", "0") return m, m2 -- 2.11.0