sulu-vendorext: ap_to_mld_creds_sync: do no hardcode mld_id to 1

set it only if there are unused mld sections
This commit is contained in:
Sukru Senli 2025-10-02 17:10:13 +02:00
parent 9a36c0310f
commit ede7966809

View file

@ -1,8 +1,35 @@
#!/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
@ -24,7 +51,6 @@ start_service() {
cur_ssid=$(uci -q get "$ap.ssid")
cur_key=$(uci -q get "$ap.key")
ap_list="$ap_list $ap"
if [ -z "$ssid_ref" ]; then
@ -71,13 +97,22 @@ start_service() {
[ "$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=1 to $ap (ssid=$ssid)"
uci -q set "$ap.mld_id=1"
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")" = "1" ] || continue
[ "$(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"