Initial stab at netconfig for nslu2 and nas100d
authorRod Whitby <rod@whitby.id.au>
Wed, 20 Dec 2006 13:17:21 +0000 (13:17 +0000)
committerRod Whitby <rod@whitby.id.au>
Wed, 20 Dec 2006 13:17:21 +0000 (13:17 +0000)
SVN-Revision: 5883

target/linux/ixp4xx-2.6/base-files.mk [new file with mode: 0644]
target/linux/ixp4xx-2.6/base-files/etc/init.d/netconfig [new file with mode: 0755]

diff --git a/target/linux/ixp4xx-2.6/base-files.mk b/target/linux/ixp4xx-2.6/base-files.mk
new file mode 100644 (file)
index 0000000..d6682bd
--- /dev/null
@@ -0,0 +1,5 @@
+define Package/base-files/install-target
+       rm -f $(1)/etc/config/network
+endef
+
+
diff --git a/target/linux/ixp4xx-2.6/base-files/etc/init.d/netconfig b/target/linux/ixp4xx-2.6/base-files/etc/init.d/netconfig
new file mode 100755 (executable)
index 0000000..352a2a9
--- /dev/null
@@ -0,0 +1,94 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+START=05
+
+# hardware
+#  the 'Hardware' string from cpuinfo
+hardware(){
+       sed -n 's!^Hardware     *: !!p' /proc/cpuinfo
+}
+#
+# machine
+#  outputs an identifier of the current machine - i.e. the board
+#  slugos is running on.
+machine(){
+       case "$(hardware)" in
+       *Avila*)        echo avila;;
+       *Loft*)         echo loft;;
+       *NAS?100d*)     echo nas100d;;
+       *DSM?G600*)     echo dsmg600;;
+       *NSLU2*)        echo nslu2;;
+       *FSG?3*)        echo fsg3;;
+       *Gateway?7001*) echo gateway7001;;
+       *)              echo unknown;;
+       esac
+}
+
+# Returns the mtd device with the specified name (without leading /dev)
+# $1 = name of mtd device
+get_mtd() {
+       grep "\"$1\"*$" /proc/mtd | cut -d : -f 1
+}
+
+# Returns the mtd block device with the specified name (without leading /dev)
+# $1 = name of mtd device
+get_mtdblock() {
+       echo $(get_mtd "$1") | sed 's/mtd/mtdblock/'
+}
+
+start() {
+       [ -e /etc/config/network ] && exit 0
+
+       mkdir -p /etc/config
+
+       (
+               case "$(machine)" in
+                       nslu2)
+                               sysconf=$(find_mtd_part "SysConf")
+                               echo model=nslu2
+                               strings $sysconf ;;
+                       nas100d)
+                               sysconf=$(find_mtd_part "sysconfig")
+                               echo model=nas100d
+                               strings $sysconf ;;
+                       *)
+                               echo model=$(machine) ;;
+               esac
+       ) | awk '
+       function p(cfgname, name) {
+               if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
+       }
+
+       BEGIN {
+               FS="="
+               getline model
+       }
+       
+       {       c[$1] = $2      }
+       
+       END {
+               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 ifname   eth0"
+               if ((model == "nslu2") || (model == "nas100d")) {
+                       p("proto", "bootproto")
+                       p("ipaddr", "ip_addr")
+                       p("netmask", "netmask")
+                       p("gateway", "gateway")
+                       p("dns", "dns_server1")
+                       p("hostname", "disk_server_name")
+               }
+               else {
+                       print " option proto    dhcp"
+               }
+       }' > /etc/config/network
+}