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