From: Steven Barth Date: Mon, 24 Jun 2013 12:01:11 +0000 (+0000) Subject: Add support for stateful DHCPv6 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9e4f42001ca610aa13e65fb12239cc8ff40d1153;p=oweals%2Fluci.git Add support for stateful DHCPv6 --- diff --git a/libs/core/root/etc/config/ucitrack b/libs/core/root/etc/config/ucitrack index 084bd679a..04467f4fd 100644 --- a/libs/core/root/etc/config/ucitrack +++ b/libs/core/root/etc/config/ucitrack @@ -48,3 +48,6 @@ config samba config tinyproxy option init tinyproxy + +config 6relayd + option init 6relayd diff --git a/modules/admin-core/luasrc/tools/status.lua b/modules/admin-core/luasrc/tools/status.lua index 3ececa8f1..becd7d465 100644 --- a/modules/admin-core/luasrc/tools/status.lua +++ b/modules/admin-core/luasrc/tools/status.lua @@ -66,10 +66,34 @@ function dhcp_leases() end function dhcp6_leases() - if luci.sys.call("dnsmasq --version 2>/dev/null | grep -q ' DHCPv6 '") == 0 then + local nfs = require "nixio.fs" + local leasefile = "/tmp/hosts/6relayd" + local rv = {} + + if nfs.access(leasefile, "r") then + local fd = io.open(leasefile, "r") + if fd then + while true do + local ln = fd:read("*l") + if not ln then + break + else + local iface, duid, iaid, name, ts, id, length, ip = ln:match("^# (%S+) (%S+) (%S+) (%S+) (%d+) (%S+) (%S+) (.*)") + if ip then + rv[#rv+1] = { + expires = os.difftime(tonumber(ts) or 0, os.time()), + duid = duid, + ip6addr = ip, + hostname = (name ~= "-") and name + } + end + end + end + fd:close() + end + return rv + elseif luci.sys.call("dnsmasq --version 2>/dev/null | grep -q ' DHCPv6 '") == 0 then return dhcp_leases_common(6) - else - return nil end end diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/ipv6.lua b/modules/admin-full/luasrc/model/cbi/admin_network/ipv6.lua index ae9bc6338..ba91475dd 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/ipv6.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/ipv6.lua @@ -84,4 +84,19 @@ o:depends("rd", "server") o = s:option(Flag, "compat_ula", translate("ULA-preference compatibility"), translate("Work around IPv6 address-selection issues of some devices.")) +m:section(SimpleSection).template = "admin_network/lease_status" + +s = m:section(TypedSection, "lease", translate("Static Leases"), + translate("Static leases are used to assign fixed IPv6 Interface-IDs to clients. Interface-IDs are appended to available prefixes to form IPv6-addresses. " .. + " (e.g. a prefix of 2001:db80::/64 combined with Interface-ID 123456 will form the address 2001:db80::12:3456)") .. "
" .. + translate("Use the Add Button to add a new lease entry. The DUID " .. + "indentifies the host, the Interface-ID specifies the ID to use in addresses.")) + +s.addremove = true +s.anonymous = true +s.template = "cbi/tblsection" + +s:option(Value, "duid", translate("DUID")).optional = false +s:option(Value, "id", translate("Interface-ID")).optional = false + return m