add config file support for the adm5120 switch
authorTravis Kemen <thepeople@openwrt.org>
Wed, 27 Feb 2008 15:59:15 +0000 (15:59 +0000)
committerTravis Kemen <thepeople@openwrt.org>
Wed, 27 Feb 2008 15:59:15 +0000 (15:59 +0000)
SVN-Revision: 10529

package/admswconfig/Makefile
package/admswconfig/files/admswconfig [new file with mode: 0644]
package/admswconfig/files/admswswitch.sh [new file with mode: 0644]

index 52aa2a467f7e0e5d623c3bca7c054eae47f103b2..96797378ccfdec2eaf8739e3f41ee97b479e42e1 100644 (file)
@@ -43,6 +43,10 @@ endef
 define Package/admswconfig/install
        $(INSTALL_DIR) $(1)/sbin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/admswconfig $(1)/sbin/
+       $(INSTALL_DIR) $(1)/lib/network/
+       $(INSTALL_DATA) ./files/admswswitch.sh $(1)/lib/network/admswswitch.sh
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/admswconfig $(1)/etc/init.d/admswconfig
 endef
 
 $(eval $(call BuildPackage,admswconfig))
diff --git a/package/admswconfig/files/admswconfig b/package/admswconfig/files/admswconfig
new file mode 100644 (file)
index 0000000..dd55242
--- /dev/null
@@ -0,0 +1,67 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+START=05
+
+start() {
+       [ -e /etc/config/network ] && exit 0
+
+       mkdir -p /etc/config
+
+adm5120_detect() {
+       board_name=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /system type/ {print $2}' /proc/cpuinfo)
+
+       case "$board_name" in
+       "Compex WP54"*)
+               board="WP54";;
+       *)
+               ;;
+       esac
+}
+
+adm5120_detect
+       BEGIN {
+               FS="="
+               c["lan_ifname"]="eth0"
+               c["wan_ifname"]="eth1"
+               c["eth0ports"]="12345"
+               c["eth1ports"]="0"
+       }
+
+       END {
+               if (model == "Compex WP54") {
+                       c["vlan0ports"]="0"
+                       c["vlan1ports"]="1"
+               }
+
+               print "#### VLAN configuration "
+               print "config switch"
+               p("eth0", "eth0ports")
+               p("eth1", "eth1ports")
+               print ""
+               print ""
+               print "#### Loopback configuration"
+               print "config interface loopback"
+               print " option ifname   \"lo\""
+               print " option proto    static"
+               print " option ipaddr   127.0.0.1"
+               print " option netmask  255.0.0.0"
+               print ""
+               print ""
+               print "#### LAN configuration"
+               print "config interface lan"
+               print " option type     bridge"
+               p("ifname", "lan_ifname")
+               p("macaddr", "lan_macaddr")
+               print " option proto    static"
+               print " option ipaddr   192.168.1.1"
+               print " option netmask  255.255.255.0"
+               print ""
+               print ""
+               print "#### WAN configuration"
+               print "config interface wan"
+               p("ifname", "wan_ifname")
+               p("macaddr", "wan_macaddr")
+               print " option proto    dhcp"
+       }' > /etc/config/network
+}
diff --git a/package/admswconfig/files/admswswitch.sh b/package/admswconfig/files/admswswitch.sh
new file mode 100644 (file)
index 0000000..c5898d5
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+
+setup_switch_vlan() {
+       config_get ports "$CONFIG_SECTION" "eth$1"
+       admswconfig eth$1 ${ports}c
+}
+
+setup_switch() {
+       config_cb() {
+               case "$1" in
+                       switch)
+                               option_cb() {
+                                       case "$1" in
+                                               eth*) setup_switch_vlan "${1##eth}";;
+                                       esac
+                               }
+                       ;;
+                       *)
+                               option_cb() { return 0; }
+                       ;;
+               esac
+       }
+       config_load network
+}