add migration code to automatically convert old to new switch config on first boot...
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 15 Nov 2009 23:19:39 +0000 (23:19 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 15 Nov 2009 23:19:39 +0000 (23:19 +0000)
SVN-Revision: 18432

target/linux/brcm-2.4/base-files/etc/init.d/netconfig

index 4d66962f98fc88b88a4855f2ccee3428bd2bdf50..b5d900a73b2dd84ea609b5ec0a6a920c8f318e01 100755 (executable)
@@ -4,7 +4,41 @@
 START=05
 
 start() {
-       [ -e /etc/config/network ] && exit 0
+       [ -e /etc/config/network ] && {
+               local batch
+
+               config_cb() {
+                       case "$1" in
+                       switch)
+                               option_cb() {
+                                       case "$1" in
+                                       vlan[0-9]|vlan1[0-5])
+                                               local id="${1#vlan}"
+                                               append batch "delete network.eth0.${1}${N}"
+                                               append batch "set network.eth0_${n}=switch_vlan${N}"
+                                               append batch "set network.eth0_${n}.device=eth0${N}"
+                                               append batch "set network.eth0_${n}.vlan=${id}${N}"
+                                               append batch "set network.eth0_${n}.ports='${2}'${N}"
+                                       ;;
+                                       esac
+                               }
+                       ;;
+                       switch_vlan)
+                               option_cb() { :; }
+                               batch=""
+                       ;;
+                       esac
+               }
+
+               config_load network
+
+               [ -n "$batch" ] && {
+                       logger -t netconfig "migrating switch config to new format ..."
+                       echo "$batch${N}commit network" | uci batch
+               }
+
+               exit 0
+       }
 
        mkdir -p /etc/config