From 114b9a8fb6f2678ff3876cbba012ad5c5078ce8c Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Wed, 4 Jul 2007 04:35:44 +0000
Subject: [PATCH] add failsafe support for atheros-2.6 (#1501) - only works
 with ar5315+ at the moment

SVN-Revision: 7870
---
 package/base-files/files/etc/preinit                     | 9 +++++++++
 .../atheros-2.6/base-files/default/etc/preinit.arch      | 8 ++++++++
 .../linux/brcm-2.4/base-files/default/etc/preinit.arch   | 4 ----
 3 files changed, 17 insertions(+), 4 deletions(-)
 create mode 100755 target/linux/atheros-2.6/base-files/default/etc/preinit.arch

diff --git a/package/base-files/files/etc/preinit b/package/base-files/files/etc/preinit
index 8163f79ae6..c11732f7a7 100755
--- a/package/base-files/files/etc/preinit
+++ b/package/base-files/files/etc/preinit
@@ -3,7 +3,16 @@
 export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 . /etc/diag.sh
 
+failsafe_ip() {
+	ifconfig $ifname 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
+}
+
 failsafe() {
+	[ -n "$ifname" ] && grep "$ifname" /proc/net/dev >/dev/null && {
+		failsafe_ip
+		netmsg 192.168.1.255 "Entering Failsafe!"
+		telnetd -l /bin/login <> /dev/null 2>&1
+	}
 	lock /tmp/.failsafe
 	ash --login
 }
diff --git a/target/linux/atheros-2.6/base-files/default/etc/preinit.arch b/target/linux/atheros-2.6/base-files/default/etc/preinit.arch
new file mode 100755
index 0000000000..7e911ab2ad
--- /dev/null
+++ b/target/linux/atheros-2.6/base-files/default/etc/preinit.arch
@@ -0,0 +1,8 @@
+# reset button only supported on ar5315+ at the moment
+grep 'Atheros AR231[567]' /proc/cpuinfo > /dev/null && {
+	ifname=eth0
+	failsafe_ip
+	netmsg 192.168.1.255 "Press reset now, to enter Failsafe!"
+	ifconfig "$ifname" 0.0.0.0 down
+	sleep 2
+}
diff --git a/target/linux/brcm-2.4/base-files/default/etc/preinit.arch b/target/linux/brcm-2.4/base-files/default/etc/preinit.arch
index a0d97c68bc..43df591ab7 100755
--- a/target/linux/brcm-2.4/base-files/default/etc/preinit.arch
+++ b/target/linux/brcm-2.4/base-files/default/etc/preinit.arch
@@ -1,9 +1,5 @@
 . /etc/functions.sh
 
-failsafe_ip() {
-	ifconfig $ifname 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
-}
-
 failsafe() {
 	lock /tmp/.failsafe
 	failsafe_ip
-- 
2.25.1