From 7c0a24a80ce3dfbee0f74d78622124ec02b89d3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= Date: Thu, 25 Jan 2024 17:54:00 +0100 Subject: [PATCH] layer3-config: Add DSA migration script for migrated devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because of to the switch from swconfig to DSA, the switchport names have to be migrated for a few devices. Due to past migrations, we already have developed a migration script for that. Duplicate and adjust the script for the newly migrated devices. While at it, rename the old script to reflect the configuration version bump. Fixes: #301 Signed-off-by: Fabian Bläse --- ...migrate-dsa => 20-l3config-migrate-1-to-2} | 0 .../uci-defaults/21-l3config-migrate-2-to-3 | 76 +++++++++++++++++++ 2 files changed, 76 insertions(+) rename src/packages/fff/fff-layer3-config/files/etc/uci-defaults/{20-l3config-migrate-dsa => 20-l3config-migrate-1-to-2} (100%) create mode 100644 src/packages/fff/fff-layer3-config/files/etc/uci-defaults/21-l3config-migrate-2-to-3 diff --git a/src/packages/fff/fff-layer3-config/files/etc/uci-defaults/20-l3config-migrate-dsa b/src/packages/fff/fff-layer3-config/files/etc/uci-defaults/20-l3config-migrate-1-to-2 similarity index 100% rename from src/packages/fff/fff-layer3-config/files/etc/uci-defaults/20-l3config-migrate-dsa rename to src/packages/fff/fff-layer3-config/files/etc/uci-defaults/20-l3config-migrate-1-to-2 diff --git a/src/packages/fff/fff-layer3-config/files/etc/uci-defaults/21-l3config-migrate-2-to-3 b/src/packages/fff/fff-layer3-config/files/etc/uci-defaults/21-l3config-migrate-2-to-3 new file mode 100644 index 00000000..0d5d4b7c --- /dev/null +++ b/src/packages/fff/fff-layer3-config/files/etc/uci-defaults/21-l3config-migrate-2-to-3 @@ -0,0 +1,76 @@ +## this script migrates configs from version 2 to 3. +## +## with version 2 the switchport names of some devices changed +## due to the switch to DSA + + +BOARD="$(uci get board.model.name)" + +# only migrate appropriate config versions +[ "$(uci -q get gateway.meta.config_version)" = "2" ] || exit 1 + +translate_ports() { + local vlan="$1" + local oldports="$(uci -q get gateway.$vlan.ports)" + local newports + + local name + local tag + + for port in $oldports; do + # generate new tagged/untagged syntax + if [ -z "${port##*t}" ]; then + # port is tagged + tag=":t" + else + # port is untagged + tag=":*" + fi + + # generate new name + case "$BOARD" in + avm,fritzbox-4040) + case "${port%%t}" in + 1) name="lan1" ;; + 2) name="lan2" ;; + 3) name="lan3" ;; + 4) name="lan4" ;; + 5) name="wan" ;; + *) name="" ;; + esac + ;; + tplink,tl-wdr4900-v1) + case "${port%%t}" in + 1) name="wan" ;; + 2) name="lan1" ;; + 3) name="lan2" ;; + 4) name="lan3" ;; + 5) name="lan4" ;; + *) name="" ;; + esac + ;; + esac + + # catch empty name (invalid entry or old cpuport) + [ -z "$name" ] && continue + + # assemble new port name + newports="$newports ${name}${tag}" + done + + # cleanup unnecessary spaces + newports=$(echo "$newports" | xargs) + + uci set gateway.$vlan.ports="$newports" +} + +case "$BOARD" in + avm,fritzbox-4040|\ + tplink,tl-wdr4900-v1) + config_load gateway + config_foreach translate_ports vlan + ;; +esac + +uci set gateway.meta.config_version='3' +uci commit gateway