From e8956e3f5a1c1fe06702880dd0f1f43131d9c138 Mon Sep 17 00:00:00 2001 From: mar-v-in Date: Tue, 16 Jun 2015 16:46:37 +0200 Subject: [PATCH] Add NAT features --- .../files/lib/gluon/upgrade/110-network | 11 ++++++- .../lua/luci/model/cbi/admin/portconfig.lua | 31 ++++++++++++++----- .../lua/luci/model/cbi/admin/privatewifi.lua | 6 +++- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/package/gluon-core/files/lib/gluon/upgrade/110-network b/package/gluon-core/files/lib/gluon/upgrade/110-network index 07961788..f2035ae7 100755 --- a/package/gluon-core/files/lib/gluon/upgrade/110-network +++ b/package/gluon-core/files/lib/gluon/upgrade/110-network @@ -10,7 +10,7 @@ uci:section('network', 'interface', 'wan', ifname = sysconfig.wan_ifname, type = 'bridge', igmp_snooping = 0, - peerdns = 0, + peerdns = 1, auto = 1, } ) @@ -51,6 +51,15 @@ uci:section('network', 'route6', 'wan6_unreachable', } ) +uci:section('network', 'interface', 'lan', + { + type = 'bridge', + proto = 'static', + ipaddr = '192.168.0.1', + netmask = '255.255.255.0', + } +) + uci:save('network') uci:commit('network') diff --git a/package/gluon-luci-portconfig/files/usr/lib/lua/luci/model/cbi/admin/portconfig.lua b/package/gluon-luci-portconfig/files/usr/lib/lua/luci/model/cbi/admin/portconfig.lua index 8166539c..d01e93fa 100644 --- a/package/gluon-luci-portconfig/files/usr/lib/lua/luci/model/cbi/admin/portconfig.lua +++ b/package/gluon-luci-portconfig/files/usr/lib/lua/luci/model/cbi/admin/portconfig.lua @@ -88,9 +88,14 @@ o.default = uci:get_bool("network", "mesh_wan", "auto") and o.enabled or o.disab o.rmempty = false if sysconfig.lan_ifname then - o = s:option(Flag, "mesh_lan", translate("Enable meshing on the LAN interface")) - o.default = uci:get_bool("network", "mesh_lan", "auto") and o.enabled or o.disabled - o.rmempty = false + o = s:option(ListValue, "lan_option", translate("LAN interface")) + o:value("client", translate("Client network")) + o:value("mesh", translate("Mesh network")) + -- TODO: o:value("bridge", translate("Private network (Bridged)")) + o:value("nat", translate("Private network (NAT)")) + o.default = (uci:get_bool("network", "mesh_lan", "auto") and "mesh") or + (uci.get("network", "lan", "ifname") == sysconfig.lan_ifname and "nat") or + "client" end @@ -119,12 +124,22 @@ function f.handle(self, state, data) uci:set("network", "mesh_wan", "auto", data.mesh_wan) if sysconfig.lan_ifname then - uci:set("network", "mesh_lan", "auto", data.mesh_lan) - - if data.mesh_lan == '1' then - uci:set("network", "client", "ifname", "bat0") - else + if data.lan_option == 'client' then uci:set("network", "client", "ifname", sysconfig.lan_ifname .. " bat0") + else + uci:set("network", "client", "ifname", "bat0") + end + + if data.lan_option == 'nat' then + uci:set("network", "lan", "ifname", sysconfig.lan_ifname) + else + uci:set("network", "lan", "ifname", '') + end + + if data.lan_option == 'mesh' then + uci:set("network", "mesh_lan", "auto", '1') + else + uci:set("network", "mesh_lan", "auto", '0') end end diff --git a/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua b/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua index d3ddcd72..ba41b1fa 100644 --- a/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua +++ b/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua @@ -29,6 +29,10 @@ o:depends("enabled", '1') o.datatype = "wpakey" o.default = uci:get(config, primary_iface, "key") +o = s:option(Flag, "nat", translate("Use NAT")) +o:depends("enabled", '1') +o.default = uci:get(config, primary_iface, "network") == "lan" and o.enabled or o.disabled + function f.handle(self, state, data) if state == FORM_VALID then uci:foreach(config, "wifi-device", @@ -41,7 +45,7 @@ function f.handle(self, state, data) uci:section(config, "wifi-iface", name, { device = device, - network = "wan", + network = data.nat == '1' and "lan" or "wan", mode = 'ap', encryption = 'psk2', ssid = data.ssid,