From a3175573208711dea8a486e83a56a6748ca8edad Mon Sep 17 00:00:00 2001 From: Robert Langhammer Date: Thu, 24 Mar 2022 17:44:24 +0100 Subject: [PATCH] fff-vxlan-node: disable vxlan if no peers available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disabling vxlan via uci solves all problemes. A reload_config does now everything we need. Bringing up vxlan if peers available and shuting down the Interface if not. This will also remove old fdb entries and clear the batman tables immediately. No ifup and no extra cleaning of the fdb is required. Signed-off-by: Robert Langhammer Acked-by: Fabian Bläse --- .../files/usr/lib/vpn-select.d/vxlan | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/packages/fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan b/src/packages/fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan index 61cee13d..5e08da19 100644 --- a/src/packages/fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan +++ b/src/packages/fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan @@ -3,6 +3,8 @@ protocol=vxlan vxlan_clear() { while uci -q delete network.@vxlan_peer[0]; do :; done uci set network.vxlan0.vid="0" + uci set network.vxlan0.disabled="1" + uci set network.vxbat.disabled="1" } vxlan_addpeer() { @@ -10,18 +12,13 @@ vxlan_addpeer() { address=$(ping6 -w1 -c1 "$address" | awk '/from/ {print substr($4, 1, length($4)-1); exit}') [ -z $address ] && return ## address not reachable uci set network.vxlan0.vid="$id" + uci set network.vxlan0.disabled="0" + uci set network.vxbat.disabled="0" uci add network vxlan_peer uci set network.@vxlan_peer[-1].vxlan="vxlan0" uci set network.@vxlan_peer[-1].dst="$address" } vxlan_start_stop() { - # reload_config will not add new peers. A ifup is needed - ifup vxlan0 - - # this workaround is cleaning up old fdb entries - # and can be removed if someday netifd will do that - bridge fdb show dev vxlan0 state permanent | while read mac dst ip rest ; do - uci show network | grep -q "$ip" || bridge fdb del $mac dev vxlan0 dst $ip - done + reload_config }