From f5a8cb93fb77f8d622d216178836165077fa28d6 Mon Sep 17 00:00:00 2001 From: Robert Langhammer Date: Sun, 20 Mar 2022 21:28:02 +0100 Subject: [PATCH 1/6] fff-vxlan: remove uci commit Remove this leftover from the test phase. Signed-off-by: Robert Langhammer --- .../fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan | 1 - 1 file changed, 1 deletion(-) 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 7a3033f6..58e3d8e5 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 @@ -15,7 +15,6 @@ vxlan_addpeer() { } vxlan_start_stop() { - uci commit network # reload_config will not add new peers. A ifup is needed ifup vxlan0 -- 2.39.2 From 220a8b609e3b7348a846c3bc54d6dea4ddc175a4 Mon Sep 17 00:00:00 2001 From: Robert Langhammer Date: Tue, 22 Mar 2022 01:26:53 +0100 Subject: [PATCH 2/6] fff-vxlan-node: fix cleanup Without "uci commit" peers do not appear in /etc/config network. Use uci show instead. Signed-off-by: Robert Langhammer --- .../fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 58e3d8e5..24e5d5ce 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 @@ -21,6 +21,6 @@ vxlan_start_stop() { # 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 - grep -q "$ip" /etc/config/network || bridge fdb del $mac dev vxlan0 dst $ip + uci show network | grep -q "$ip" || bridge fdb del $mac dev vxlan0 dst $ip done } -- 2.39.2 From 00b8eb6e6e6277e8027a16d2aa2594e8378d2d1c Mon Sep 17 00:00:00 2001 From: Robert Langhammer Date: Thu, 24 Mar 2022 09:12:09 +0100 Subject: [PATCH 3/6] fff-vxlan-node: reset vid Reset vid if no peers are available. If a router switches to a hood without vxlan, or the peers in the hoodfile disappear, the vid should be reset. Signed-off-by: Robert Langhammer --- .../fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan | 1 + 1 file changed, 1 insertion(+) 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 24e5d5ce..0b74136f 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 @@ -2,6 +2,7 @@ protocol=vxlan vxlan_clear() { while uci -q delete network.@vxlan_peer[0]; do :; done + uci set network.vxlan0.vid="0" } vxlan_addpeer() { -- 2.39.2 From 93d4d5b27b521129a5c0a483930874b24224d3d3 Mon Sep 17 00:00:00 2001 From: Robert Langhammer Date: Thu, 24 Mar 2022 09:26:08 +0100 Subject: [PATCH 4/6] fff-vxlan-node: do not set vid if GW not reachable Signed-off-by: Robert Langhammer --- .../fff/fff-vxlan-node-vpn/files/usr/lib/vpn-select.d/vxlan | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0b74136f..61cee13d 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 @@ -6,10 +6,10 @@ vxlan_clear() { } vxlan_addpeer() { - uci set network.vxlan0.vid="$id" json_get_var address address 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 add network vxlan_peer uci set network.@vxlan_peer[-1].vxlan="vxlan0" uci set network.@vxlan_peer[-1].dst="$address" -- 2.39.2 From 537869ced446c7a1206237bb8c5743c0e246d82a Mon Sep 17 00:00:00 2001 From: Robert Langhammer Date: Thu, 24 Mar 2022 17:44:24 +0100 Subject: [PATCH 5/6] fff-vxlan-node: disable vxlan if no peers available 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 --- .../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 } -- 2.39.2 From 4d5b33fb2ef5390118176a7a1451e5c7ab5d4461 Mon Sep 17 00:00:00 2001 From: Robert Langhammer Date: Thu, 24 Mar 2022 18:05:39 +0100 Subject: [PATCH 6/6] fff-vxlan-node: disable vxlan by default Signed-off-by: Robert Langhammer --- .../fff/fff-vxlan-node-vpn/files/etc/uci-defaults/53-vxlan-node | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/packages/fff/fff-vxlan-node-vpn/files/etc/uci-defaults/53-vxlan-node b/src/packages/fff/fff-vxlan-node-vpn/files/etc/uci-defaults/53-vxlan-node index bd4dbea6..d4e72abe 100644 --- a/src/packages/fff/fff-vxlan-node-vpn/files/etc/uci-defaults/53-vxlan-node +++ b/src/packages/fff/fff-vxlan-node-vpn/files/etc/uci-defaults/53-vxlan-node @@ -8,9 +8,11 @@ uci batch <