Add support for stateful DHCPv6
This commit is contained in:
parent
029631ec48
commit
5200eb1577
3 changed files with 45 additions and 3 deletions
|
@ -48,3 +48,6 @@ config samba
|
||||||
|
|
||||||
config tinyproxy
|
config tinyproxy
|
||||||
option init tinyproxy
|
option init tinyproxy
|
||||||
|
|
||||||
|
config 6relayd
|
||||||
|
option init 6relayd
|
||||||
|
|
|
@ -66,10 +66,34 @@ function dhcp_leases()
|
||||||
end
|
end
|
||||||
|
|
||||||
function dhcp6_leases()
|
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)
|
return dhcp_leases_common(6)
|
||||||
else
|
|
||||||
return nil
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -84,4 +84,19 @@ o:depends("rd", "server")
|
||||||
o = s:option(Flag, "compat_ula", translate("ULA-preference compatibility"),
|
o = s:option(Flag, "compat_ula", translate("ULA-preference compatibility"),
|
||||||
translate("Work around IPv6 address-selection issues of some devices."))
|
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)") .. "<br />" ..
|
||||||
|
translate("Use the <em>Add</em> Button to add a new lease entry. The <em>DUID</em> " ..
|
||||||
|
"indentifies the host, the <em>Interface-ID</em> 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
|
return m
|
||||||
|
|
Loading…
Reference in a new issue