sulu-vendorext: remove mldsync script

since changes via tr-181 do not trigger procd config reload trigger
This commit is contained in:
Sukru Senli 2025-10-08 08:54:01 +02:00
parent d530ffa4ba
commit a80713423c

View file

@ -1,127 +0,0 @@
#!/bin/sh /etc/rc.common
START=97
USE_PROCD=1
# Function to find the first available MLD ID
find_available_mld_id() {
# Get all MLD sections and their IDs
for mld in $(uci show mapcontroller | grep "^mapcontroller.@mld\[" | cut -d'=' -f1); do
mld_id=$(uci -q get "$mld.id")
[ -z "$mld_id" ] && continue
# Check if any AP is using this MLD ID
mld_in_use=0
for ap in $(uci show mapcontroller | grep "^mapcontroller.@ap\[" | cut -d'=' -f1); do
ap_mld_id=$(uci -q get "$ap.mld_id")
if [ "$ap_mld_id" = "$mld_id" ]; then
mld_in_use=1
break
fi
done
# If no AP is using this MLD ID, it's available
if [ "$mld_in_use" -eq 0 ]; then
echo "$mld_id"
return 0
fi
done
# If we get here, no available MLD ID was found
return 1
}
start_service() {
# --- STEP 1: process fronthaul APs with mld_id ---
mld_ids=$(uci show mapcontroller | grep "^mapcontroller.@ap\[" | cut -d'=' -f1 | while read -r ap; do
[ "$(uci -q get "$ap.type")" = "fronthaul" ] || continue
uci -q get "$ap.mld_id"
done | sort -u | grep -v '^$')
for mld_id in $mld_ids; do
ap_list=""
ssid_ref=""
key_ref=""
ssid_mismatch=0
# collect all fronthaul APs with this mld_id
for ap in $(uci show mapcontroller | grep "^mapcontroller.@ap\[" | cut -d'=' -f1); do
[ "$(uci -q get "$ap.type")" = "fronthaul" ] || continue
cur_id=$(uci -q get "$ap.mld_id")
[ "$cur_id" = "$mld_id" ] || continue
cur_ssid=$(uci -q get "$ap.ssid")
cur_key=$(uci -q get "$ap.key")
ap_list="$ap_list $ap"
if [ -z "$ssid_ref" ]; then
ssid_ref="$cur_ssid"
key_ref="$cur_key"
elif [ "$cur_ssid" != "$ssid_ref" ]; then
ssid_mismatch=1
fi
done
if [ "$ssid_mismatch" -eq 1 ]; then
for ap in $ap_list; do
logger -t mldsync "Removing mld_id from $ap due to SSID mismatch"
uci -q delete "$ap.mld_id"
done
else
for mld in $(uci show mapcontroller | grep "^mapcontroller.@mld\[" | cut -d'=' -f1); do
[ "$(uci -q get "$mld.id")" = "$mld_id" ] || continue
logger -t mldsync "Updating $mld with ssid=$ssid_ref and key=$key_ref"
uci -q set "$mld.ssid=$ssid_ref"
uci -q set "$mld.key=$key_ref"
done
fi
done
# --- STEP 2: handle fronthaul APs with no mld_id but same SSID ---
for ssid in $(uci show mapcontroller | grep "^mapcontroller.@ap\[" | cut -d'=' -f1 | while read -r ap; do
[ "$(uci -q get "$ap.type")" = "fronthaul" ] || continue
[ -z "$(uci -q get "$ap.mld_id")" ] || continue
uci -q get "$ap.ssid"
done | sort | uniq); do
ap_group=""
key_ref=""
count=0
for ap in $(uci show mapcontroller | grep "^mapcontroller.@ap\[" | cut -d'=' -f1); do
[ "$(uci -q get "$ap.type")" = "fronthaul" ] || continue
[ "$(uci -q get "$ap.ssid")" = "$ssid" ] || continue
[ -z "$(uci -q get "$ap.mld_id")" ] || continue
ap_group="$ap_group $ap"
key_ref=$(uci -q get "$ap.key")
count=$((count + 1))
done
[ "$count" -lt 2 ] && continue
# Find first available MLD ID
available_mld_id=$(find_available_mld_id)
if [ -z "$available_mld_id" ]; then
logger -t mldsync "Warning: No available MLD ID found for SSID group: $ssid"
continue
fi
# Assign the available MLD ID to all APs in the group
for ap in $ap_group; do
logger -t mldsync "Assigning mld_id=$available_mld_id to $ap (ssid=$ssid)"
uci -q set "$ap.mld_id=$available_mld_id"
done
# Update the corresponding MLD section
for mld in $(uci show mapcontroller | grep "^mapcontroller.@mld\[" | cut -d'=' -f1); do
[ "$(uci -q get "$mld.id")" = "$available_mld_id" ] || continue
logger -t mldsync "Updating $mld with ssid=$ssid and key=$key_ref (from unassigned group)"
uci -q set "$mld.ssid=$ssid"
uci -q set "$mld.key=$key_ref"
done
done
uci -q commit mapcontroller
}
service_triggers() {
procd_add_reload_trigger "mapcontroller"
}