gluon-l3roamd: init: dynamically configure mesh interfaces gracefully during reload
This patch makes use of the new feature in l3roamd to gracefully add, remove and list the mesh interfaces that are currently in use. This helps when changing mesh interfaces often - a characteristic of the wireguard protocol implementation as in the previous behavior all local clients are dropped when adjusting mesh interfaces.
This commit is contained in:
parent
a3d9446a3a
commit
89b7612fdb
@ -5,6 +5,35 @@ START=55
|
|||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
PROG=/usr/sbin/l3roamd
|
PROG=/usr/sbin/l3roamd
|
||||||
|
|
||||||
|
echotol3roamd() {
|
||||||
|
local count=0
|
||||||
|
local line="$1"
|
||||||
|
while ! (echo -e "$line" | uc /var/run/l3roamd.sock >/dev/null 2>&1)
|
||||||
|
do
|
||||||
|
sleep 1
|
||||||
|
echo retrying to connect to l3roamd in PID $$, waited ${count}s >&2
|
||||||
|
count=$((count+1))
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
for i in $(ubus call network.interface dump | jsonfilter -e "@.interface[@.proto='gluon_mesh' && @.up=true].device")
|
||||||
|
do
|
||||||
|
echotol3roamd "add_meshif $i"
|
||||||
|
done
|
||||||
|
|
||||||
|
for i in $(echotol3roamd "get_meshifs"| jsonfilter -e "@.mesh_interfaces[@]")
|
||||||
|
do
|
||||||
|
if ! ubus call network.interface dump | jsonfilter -e "@.interface[@.proto='gluon_mesh' && @.up=true].device"|grep -q $i
|
||||||
|
then
|
||||||
|
echotol3roamd "del_meshif $i"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
start_service () {
|
start_service () {
|
||||||
local interfaces=$(
|
local interfaces=$(
|
||||||
for dev in $(gluon-list-mesh-interfaces); do echo " -m $dev"; done
|
for dev in $(gluon-list-mesh-interfaces); do echo " -m $dev"; done
|
||||||
|
Loading…
Reference in New Issue
Block a user