[brcm-2.4] add migration code to automatically convert old to new switch config on...
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 15 Nov 2009 23:19:39 +0000 (23:19 +0000)
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 15 Nov 2009 23:19:39 +0000 (23:19 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18432 3c298f89-4303-0410-b956-a3cf2f4a3e73

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