From bff39ee8b8a2584edf5eec27cae75a94cde08244 Mon Sep 17 00:00:00 2001
From: Travis Kemen <thepeople@openwrt.org>
Date: Wed, 27 Feb 2008 15:59:15 +0000
Subject: add config file support for the adm5120 switch

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10529 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/admswconfig/Makefile             |  4 ++
 package/admswconfig/files/admswconfig    | 67 ++++++++++++++++++++++++++++++++
 package/admswconfig/files/admswswitch.sh | 25 ++++++++++++
 3 files changed, 96 insertions(+)
 create mode 100644 package/admswconfig/files/admswconfig
 create mode 100644 package/admswconfig/files/admswswitch.sh

(limited to 'package/admswconfig')

diff --git a/package/admswconfig/Makefile b/package/admswconfig/Makefile
index 52aa2a467f..96797378cc 100644
--- a/package/admswconfig/Makefile
+++ b/package/admswconfig/Makefile
@@ -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
index 0000000000..dd55242500
--- /dev/null
+++ b/package/admswconfig/files/admswconfig
@@ -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
index 0000000000..c5898d5a39
--- /dev/null
+++ b/package/admswconfig/files/admswswitch.sh
@@ -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
+}
-- 
cgit v1.2.3