From patchwork Mon Apr 22 21:01:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v3,14/14] fff-network: Migrate old settings From: Adrian Schmutzler X-Patchwork-Id: 1090 Message-Id: <20190422210145.6631-1-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Mon, 22 Apr 2019 23:01:45 +0200 This patch will migrate the custom settings from network.config to the new configuration system. The uci-default script only writes to /etc/firstbootfff, as this is evaluated later in the uci-defaults run; it does not directly apply any settings. By writing to /etc/firstbootfff, the settings are still kept in an upgrade-safe way. Signed-off-by: Adrian Schmutzler Reviewed-by: Robert Langhammer Acked-by: Christian Dresel --- Changes in v3: - Added this patch This is now the correct version of this patch. Note that this is completely untested so far. --- .../files/etc/uci-defaults/25-migrate-network | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/packages/fff/fff-network/files/etc/uci-defaults/25-migrate-network diff --git a/src/packages/fff/fff-network/files/etc/uci-defaults/25-migrate-network b/src/packages/fff/fff-network/files/etc/uci-defaults/25-migrate-network new file mode 100644 index 00000000..2c0309e5 --- /dev/null +++ b/src/packages/fff/fff-network/files/etc/uci-defaults/25-migrate-network @@ -0,0 +1,56 @@ +#!/bin/sh +# License GPLv3 + +setupPorts() { + # Add a single port to the *_PORTS config + # Usage: setupPorts + + local port=$1 + local mode=$2 + + #default: BATMAN + if [ "$mode" = "WAN" ] ; then + WAN_PORTS="$WAN_PORTS $port" + elif [ "$mode" = "CLIENT" ] ; then + CLIENT_PORTS="$CLIENT_PORTS $port" + else + BATMAN_PORTS="$BATMAN_PORTS $port" + fi +} + +if [ -s /etc/network.config ]; then + . /etc/network.config + + if [ -n "$ETHMODE" ] && ! [ "$(uci get board.model.name)" = "gl-ar150" ] ; then + # real one-port + echo "# Migrated network config" >> "$firstbootscript" + echo ". /lib/functions/fff/networksetup" >> "$firstbootscript" + echo "setupOnePort 'eth0' '$ETHMODE'" >> "$firstbootscript" + else + # anything else will be switch-based + CLIENT_UCI="$(uci -q get network.vlan1.ports)" + BATMAN_UCI="$(uci -q get network.vlan3.ports)" + + # GL-AR150 + if [ -n "$ETHMODE" ]; then + setupPorts "1" "$ETHMODE" + WAN_PORTS="" + fi + + # CPE210/510 v1 + [ -n "$LAN0MODE" ] && setupPorts "5" "$LAN0MODE" + [ -n "$LAN1MODE" ] && setupPorts "4" "$LAN1MODE" + + # Only create entry if setting actually differs + # But: if entries are created, create entries for all VLANs + if [ ! "$CLIENT_UCI" = "$CLIENT_PORTS" ] || [ ! "$BATMAN_UCI" = "$BATMAN_PORTS" ]; then + echo "# Migrated network config" >> "$firstbootscript" + echo "uci set network.vlan1.ports='$CLIENT_PORTS'" >> "$firstbootscript" + echo "uci set network.vlan3.ports='$BATMAN_PORTS'" >> "$firstbootscript" + [ -n "$WAN_PORTS" ] && echo "uci set network.vlan2.ports='$WAN_PORTS'" >> "$firstbootscript" + echo "uci commit network" >> "$firstbootscript" + fi + fi + + rm /etc/network.config +fi