Skip to content
Snippets Groups Projects
Unverified Commit 1e90e904 authored by Jan-Niklas Burfeind's avatar Jan-Niklas Burfeind Committed by GitHub
Browse files

Merge pull request #2569 from T-X/pr-gluon-l3roamd-deprecate-node-client-prefix6

gluon-l3roamd: site: make node_client_prefix6 optional+deprecated
parents 8f6eae9a b3a9221b
No related branches found
No related tags found
No related merge requests found
...@@ -49,10 +49,13 @@ node_prefix6 ...@@ -49,10 +49,13 @@ node_prefix6
node_prefix6 = 'fdca::ffee:babe:2::/64' node_prefix6 = 'fdca::ffee:babe:2::/64'
node_client_prefix6 node_client_prefix6 \: optional, deprecated
The ipv6 prefix from which the client-specific IP-address is calculated that DEPRECATED: Don't specify it anymore, this prefix will then
is assigned to each node by l3roamd to allow efficient communication when automatically be generated from the domain_seed.
roaming. This is exclusively useful when running a routing mesh protocol
An IPv6 prefix internally used by the l3roamd protocol, used to allow
an efficient handover via unicast when a client roamed.
This is exclusively useful when running a routing mesh protocol
like babel. e.g. :: like babel. e.g. ::
node_client_prefix6 = 'fdca::ffee:babe:3::/64' node_client_prefix6 = 'fdca::ffee:babe:3::/64'
......
...@@ -6,7 +6,7 @@ include ../gluon.mk ...@@ -6,7 +6,7 @@ include ../gluon.mk
define Package/gluon-l3roamd define Package/gluon-l3roamd
TITLE:=Configure l3roamd for babel TITLE:=Configure l3roamd for babel
DEPENDS:=+gluon-core +l3roamd +uc DEPENDS:=+gluon-core +gluon-mesh-layer3-common +l3roamd +uc
endef endef
$(eval $(call BuildPackageGluon,gluon-l3roamd)) $(eval $(call BuildPackageGluon,gluon-l3roamd))
need_string_match(in_domain({'node_client_prefix6'}), '^[%x:]+/64$', false)
...@@ -43,7 +43,7 @@ start_service () { ...@@ -43,7 +43,7 @@ start_service () {
local prefix4="$(lua -e 'prefix4 = require("gluon.site").prefix4() if prefix4 then print(" -p " .. prefix4) end')" local prefix4="$(lua -e 'prefix4 = require("gluon.site").prefix4() if prefix4 then print(" -p " .. prefix4) end')"
local prefix6="$(lua -e 'print(" -p " .. require("gluon.site").prefix6())')" local prefix6="$(lua -e 'print(" -p " .. require("gluon.site").prefix6())')"
local localip="$(uci get network.loopback.ip6addr | cut -d/ -f1)" local localip="$(uci get network.loopback.ip6addr | cut -d/ -f1)"
local roamingprefix="$(lua -e 'roamingprefix = require("gluon.site").node_client_prefix6() if roamingprefix then print(" -P " .. roamingprefix) end')" local roamingprefix="$(lua -e 'print(" -P " .. require("gluon.l3").node_client_prefix6())')"
/sbin/sysctl -w net.ipv6.neigh.default.gc_thresh1=2 /sbin/sysctl -w net.ipv6.neigh.default.gc_thresh1=2
/sbin/sysctl -w net.ipv4.neigh.default.gc_thresh1=2 /sbin/sysctl -w net.ipv4.neigh.default.gc_thresh1=2
......
need_string_match(in_domain({'node_prefix6'}), '^[%x:]+/64$') need_string_match(in_domain({'node_prefix6'}), '^[%x:]+/64$')
need_string_match(in_domain({'node_client_prefix6'}), '^[%x:]+/64$')
need_string_match(in_domain({'next_node', 'ip6'}), '^[%x:]+$', false) need_string_match(in_domain({'next_node', 'ip6'}), '^[%x:]+$', false)
need_string_match(in_domain({'next_node', 'ip4'}), '^%d+.%d+.%d+.%d+$', false) need_string_match(in_domain({'next_node', 'ip4'}), '^%d+.%d+.%d+.%d+$', false)
......
#!/usr/bin/lua #!/usr/bin/lua
local site = require 'gluon.site' local site = require 'gluon.site'
local l3 = require 'gluon.l3'
local uci = require('simple-uci').cursor() local uci = require('simple-uci').cursor()
local nodeip = uci:get('network', 'loopback', 'ip6addr'):match('^[^/]+') local nodeip = uci:get('network', 'loopback', 'ip6addr'):match('^[^/]+')
local babelconf='/etc/gluon-babeld.conf' local babelconf='/etc/gluon-babeld.conf'
...@@ -14,7 +15,7 @@ file:write("import-table 254\n") ...@@ -14,7 +15,7 @@ file:write("import-table 254\n")
file:write("out ip " .. site.next_node.ip6() .. "/128 deny\n") file:write("out ip " .. site.next_node.ip6() .. "/128 deny\n")
file:write("redistribute ip " .. site.next_node.ip6() .. "/128 deny\n") file:write("redistribute ip " .. site.next_node.ip6() .. "/128 deny\n")
file:write("redistribute ip " .. site.prefix6() .. " eq 128 allow\n") file:write("redistribute ip " .. site.prefix6() .. " eq 128 allow\n")
file:write("redistribute ip " .. site.node_client_prefix6() .. " eq 128 allow\n") file:write("redistribute ip " .. l3.node_client_prefix6() .. " eq 128 allow\n")
file:write("redistribute ip " .. site.node_prefix6() .. " eq 128 allow\n") file:write("redistribute ip " .. site.node_prefix6() .. " eq 128 allow\n")
file:write("redistribute ip 2000::/3 allow\n") file:write("redistribute ip 2000::/3 allow\n")
file:write("redistribute local if br-wan deny\n") file:write("redistribute local if br-wan deny\n")
......
need_string_match(in_domain({'node_prefix6'}), '^[%x:]+/64$') need_string_match(in_domain({'node_prefix6'}), '^[%x:]+/64$')
need_string_match(in_domain({'node_client_prefix6'}), '^[%x:]+/64$', false)
local site = require("gluon.site")
local util = require("gluon.util")
local M = {}
-- returns a prefix generated from the domain-seed
-- for l3roamd -P <node-client-prefix>
function M.node_client_prefix6()
local key = "gluon-l3roamd.node_client_prefix6"
local prefix = site.node_client_prefix6()
if not prefix then
local prefix_seed = util.domain_seed_bytes(key, 7)
prefix = ("fd" .. prefix_seed):gsub(("(%x%x%x%x)"):rep(4), "%1:%2:%3:%4" .. "::/64")
end
return prefix
end
return M
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment