--- /dev/null
+#!/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
+}