modules/admin-full: further simplify wifi config
[project/luci.git] / modules / admin-full / luasrc / model / cbi / admin_network / ifaces.lua
index 1d83eb3..cdd1c13 100644 (file)
@@ -15,6 +15,7 @@ $Id$
 
 local fs = require "nixio.fs"
 local ut = require "luci.util"
+local pt = require "luci.tools.proto"
 local nw = require "luci.model.network"
 local fw = require "luci.model.firewall"
 
@@ -389,59 +390,6 @@ end
 
 
 --
--- Display IP Aliases
---
-
-if not net:is_floating() then
-       s2 = m:section(TypedSection, "alias", translate("IP-Aliases"))
-       s2.addremove = true
-
-       s2:depends("interface", arg[1])
-       s2.defaults.interface = arg[1]
-
-       s2:tab("general", translate("General Setup"))
-       s2.defaults.proto = "static"
-
-       ip = s2:taboption("general", Value, "ipaddr", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
-       ip.optional = true
-       ip.datatype = "ip4addr"
-
-       nm = s2:taboption("general", Value, "netmask", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"))
-       nm.optional = true
-       nm.datatype = "ip4addr"
-       nm:value("255.255.255.0")
-       nm:value("255.255.0.0")
-       nm:value("255.0.0.0")
-
-       gw = s2:taboption("general", Value, "gateway", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"))
-       gw.optional = true
-       gw.datatype = "ip4addr"
-
-       if has_ipv6 then
-               s2:tab("ipv6", translate("IPv6 Setup"))
-
-               ip6 = s2:taboption("ipv6", Value, "ip6addr", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address"), translate("<abbr title=\"Classless Inter-Domain Routing\">CIDR</abbr>-Notation: address/prefix"))
-               ip6.optional = true
-               ip6.datatype = "ip6addr"
-
-               gw6 = s2:taboption("ipv6", Value, "ip6gw", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"))
-               gw6.optional = true
-               gw6.datatype = "ip6addr"
-       end
-
-       s2:tab("advanced", translate("Advanced Settings"))
-
-       bcast = s2:taboption("advanced", Value, "bcast", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Broadcast"))
-       bcast.optional = true
-       bcast.datatype = "ip4addr"
-
-       dns = s2:taboption("advanced", Value, "dns", translate("<abbr title=\"Domain Name System\">DNS</abbr>-Server"))
-       dns.optional = true
-       dns.datatype = "ip4addr"
-end
-
-
---
 -- Display DNS settings if dnsmasq is available
 --
 
@@ -457,7 +405,7 @@ if has_dnsmasq and net:proto() == "static" then
                end
        end)
 
-       if not has_section then
+       if not has_section and has_dnsmasq then
 
                s = m2:section(TypedSection, "dhcp", translate("DHCP Server"))
                s.anonymous   = true
@@ -468,13 +416,14 @@ if has_dnsmasq and net:proto() == "static" then
                x.inputtitle = translate("Setup DHCP Server")
                x.inputstyle = "apply"
 
-       else
+       elseif has_section then
 
                s = m2:section(TypedSection, "dhcp", translate("DHCP Server"))
                s.addremove = false
                s.anonymous = true
                s:tab("general",  translate("General Setup"))
                s:tab("advanced", translate("Advanced Settings"))
+               s:tab("ipv6", translate("IPv6 Settings"))
 
                function s.filter(self, section)
                        return m2.uci:get("dhcp", section, "interface") == arg[1]
@@ -533,6 +482,41 @@ if has_dnsmasq and net:proto() == "static" then
                        end
                end
 
+               o = s:taboption("ipv6", ListValue, "ra", translate("Router Advertisement-Service"))
+               o:value("", translate("disabled"))
+               o:value("server", translate("server mode"))
+               o:value("relay", translate("relay mode"))
+               o:value("hybrid", translate("hybrid mode"))
+
+               o = s:taboption("ipv6", ListValue, "dhcpv6", translate("DHCPv6-Service"))
+               o:value("", translate("disabled"))
+               o:value("server", translate("server mode"))
+               o:value("relay", translate("relay mode"))
+               o:value("hybrid", translate("hybrid mode"))
+
+               o = s:taboption("ipv6", ListValue, "ndp", translate("NDP-Proxy"))
+               o:value("", translate("disabled"))
+               o:value("relay", translate("relay mode"))
+               o:value("hybrid", translate("hybrid mode"))
+
+               o = s:taboption("ipv6", ListValue, "ra_management", translate("DHCPv6-Mode"))
+               o:value("", translate("stateless"))
+               o:value("1", translate("stateless + stateful"))
+               o:value("2", translate("stateful-only"))
+               o:depends("dhcpv6", "server")
+               o:depends("dhcpv6", "hybrid")
+               o.default = "1"
+
+               o = s:taboption("ipv6", Flag, "ra_default", translate("Always announce default router"),
+                       translate("Announce as default router even if no public prefix is available."))
+               o:depends("ra", "server")
+               o:depends("ra", "hybrid")
+
+               s:taboption("ipv6", DynamicList, "dns", translate("Announced DNS servers"))
+               s:taboption("ipv6", DynamicList, "domain", translate("Announced DNS domains"))
+
+       else
+               m2 = nil
        end
 end