+function cbi_meship(dev)
+ meship = f:field(Value, "meship_" .. dev, dev:upper() .. " " .. translate("Mesh IP address"),
+ translate("This is a unique address in the mesh (e.g. 10.1.1.1) and has to be registered at your local community."))
+ meship:depends("device_" .. dev, "1")
+ meship.rmempty = true
+ function meship.cfgvalue(self, section)
+ return uci:get("freifunk", "wizard", "meship_" .. dev)
+ end
+ function meship.validate(self, value)
+ local x = ip.IPv4(value)
+ return ( x and x:prefix() == 32 ) and x:string() or ""
+ end
+ function meship.write(self, sec, value)
+ uci:set("freifunk", "wizard", "meship_" .. dev, value)
+ end
+end
+
+function cbi_meship6(dev)
+ local meship6 = f:field(Value, "meship6_" .. dev, dev:upper() .. " " .. translate("Mesh IPv6 Address"), translate("The ipv6 address is calculated auomatically."))
+ meship6:depends("device_" .. dev, "1")
+ meship6.rmempty = true
+ function meship6.cfgvalue(self, section)
+ return get_ula(get_mac(dev))
+ end
+end
+
+function cbi_netconf(dev)
+ local d = f:field(Flag, "device_" .. dev , " <b>" .. dev:upper() .. "</b>", translate("Configure this interface."))
+ d:depends("netconfig", "1")
+ d.rmempty = false
+ function d.cfgvalue(self, section)
+ return uci:get("freifunk", "wizard", "device_" .. dev)
+ end
+ function d.write(self, sec, value)
+ if value then
+ uci:set("freifunk", "wizard", "device_" .. dev, value)
+ uci:save("freifunk")
+ end
+ end
+end
+
+function cbi_meshdhcp(dev)
+ local dhcpmesh = f:field(Value, "dhcpmesh_" .. dev, dev:upper() .. " " .. translate("DHCP IP range"),
+ translate("The IP range from which clients are assigned ip addresses (e.g. 10.1.2.1/28). If this is a range inside your mesh network range, then it will be announced as HNA. Any other range will use NAT. If left empty then the defaults from the community profile will be used."))
+ dhcpmesh:depends("client_" .. dev, "1")
+ dhcpmesh.rmempty = true
+ function dhcpmesh.cfgvalue(self, section)
+ return uci:get("freifunk", "wizard", "dhcpmesh_" .. dev)
+ end
+ function dhcpmesh.validate(self, value)
+ local x = ip.IPv4(value)
+ return ( x and x:prefix() <= 30 and x:minhost()) and x:string() or ""
+ end
+ function dhcpmesh.write(self, sec, value)
+ uci:set("freifunk", "wizard", "dhcpmesh_" .. dev, value)
+ uci:save("freifunk")
+ end
+end
+
+function cbi_dhcp(dev)
+ local client = f:field(Flag, "client_" .. dev, dev:upper() .. " " .. translate("Enable DHCP"), translate("DHCP will automatically assign ip addresses to clients"))
+ client:depends("device_" .. dev, "1")
+ client.rmempty = true
+ function client.cfgvalue(self, section)
+ return uci:get("freifunk", "wizard", "client_" .. dev)
+ end
+ function client.write(self, sec, value)
+ uci:set("freifunk", "wizard", "client_" .. dev, value)
+ uci:save("freifunk")
+ end
+end
+