From a6b585cccfcc1608b21a76de064591dd7c8c5f71 Mon Sep 17 00:00:00 2001 From: Jakob Olsson Date: Wed, 18 May 2022 10:29:40 +0200 Subject: [PATCH] map-agent: multiap: lock operations on backhaul file --- map-agent/files/lib/wifi/multiap | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/map-agent/files/lib/wifi/multiap b/map-agent/files/lib/wifi/multiap index b59320882..5aa632478 100755 --- a/map-agent/files/lib/wifi/multiap +++ b/map-agent/files/lib/wifi/multiap @@ -774,11 +774,14 @@ set_uplink_backhaul_info() { local ul_1905id=$1 local ul_mac=$2 - json_load "$(cat $MAPFILE)" - json_add_string "backhaul_device_id" "$ul_1905id" - json_add_string "backhaul_macddr" "$ul_mac" - json_dump > "$MAPFILE" - json_cleanup + ( + flock -x 200 + json_load "$(cat $MAPFILE)" + json_add_string "backhaul_device_id" "$ul_1905id" + json_add_string "backhaul_macddr" "$ul_mac" + json_dump > "$MAPFILE" + json_cleanup + ) 200>/var/lock/map.backhaul.lock } set_uplink() { @@ -792,7 +795,10 @@ set_uplink() { json_add_string "type" "$type" json_add_string "ifname" "$ifname" json_add_string "macaddr" "$hwaddr" - json_dump > "$MAPFILE" + ( + flock -x 200 + json_dump > "$MAPFILE" + ) 200>/var/lock/map.backhaul.lock json_cleanup config_load mapagent @@ -816,7 +822,14 @@ unset_uplink() { ubus call map.agent toggle_fh '{"enable":false, "prevent_island":true, "ifname":"all"}' fi - rm -f "$MAPFILE" > /dev/null 2>&1 + ( + flock -x 200 + json_load "$(cat $MAPFILE)" + json_get_var bk_type type + json_cleanup + + [ "$type" = "$bk_type" ] && rm -f "$MAPFILE" > /dev/null 2>&1 + ) 200>/var/lock/map.backhaul.lock } func=$1