[brcm-2.4] add migration code to automatically convert old to new switch config on...
[openwrt/svn-archive/archive.git] / 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