| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- . /etc/functions.sh
- failsafe() {
- lock /tmp/.failsafe
- failsafe_ip
- echo "0 1 2 3 4 ${cpu_port:-5u*}" > /proc/switch/eth0/vlan/0/ports
-
- set_state failsafe
- [ -x "/usr/sbin/nvram" ] && {
- [ "$(nvram get boot_wait)" != "on" ] && {
- nvram set boot_wait=on
- nvram commit
- }
- }
- netmsg 192.168.1.255 "Entering Failsafe!"
- telnetd -l /bin/login.sh <> /dev/null 2>&1
- ash --login
- }
- mount none /proc -t proc
- insmod diag
- set_state preinit
- echo '/sbin/hotplug.failsafe' > /proc/sys/kernel/hotplug
- ifname=eth0
- # hardware specific overrides
- case "$(cat /proc/diag/model)" in
- "Linksys WAP54G V1") ifname=eth1;;
- "ASUS WL-HDD") ifname=eth1;;
- "ASUS WL-300g") ifname=eth1;;
- "ASUS (unknown, BCM4702)") ifname=eth1;;
- "Sitecom WL-105b") ifname=eth1;;
- esac
- failsafe_ip
- check_module () {
- module="$1"; shift; params="$*"
- insmod "$module" "$params"
- sleep 1
- grep "^$module" /proc/modules
- return $?
- }
- insmod switch-core
- check_module switch-robo || check_module switch-adm || {
- check_module bcm57xx activate_gpio=0x4 && cpu_port="8u*"
- } || rmmod switch-core
- [ -d /proc/switch/eth0 ] && {
- echo 1 > /proc/switch/eth0/reset
- # this would be easier if we blasted the message across all ports
- # but we don't want packets leaking across interfaces
- for port in $(seq 0 4); do {
- echo "$port ${cpu_port:-5u*}" > /proc/switch/eth0/vlan/0/ports
- netmsg 192.168.1.255 "Press reset now, to enter Failsafe!"
- }; done
- } || netmsg 192.168.1.255 "Press reset now, to enter Failsafe!"
- ifconfig $ifname 0.0.0.0 down
- sleep 2
|