diff --git a/root/bin/login b/root/bin/login new file mode 100755 index 0000000000..75208248d8 --- /dev/null +++ b/root/bin/login @@ -0,0 +1,2 @@ +#!/bin/sh +exec ash --login diff --git a/root/etc/functions.sh b/root/etc/functions.sh new file mode 100755 index 0000000000..1cf97e380a --- /dev/null +++ b/root/etc/functions.sh @@ -0,0 +1,118 @@ +#!/bin/sh + +. /etc/nvram.overrides + +debug () { + [ -z "$DEBUG" ] || echo $1 +} + +# allow env to override nvram +nvram_get () { + eval "echo \${$1:-\$(nvram get $1)}" +} + +# valid interface? +if_valid () ( + [ "${1%%[0-9]}" = "vlan" ] && { + i=${1#vlan} + hwname=$(nvram_get vlan${i}hwname) + hwaddr=$(nvram_get ${hwname}macaddr) + [ -z "$hwaddr" ] && return 1 + + vif=$(ifconfig -a | awk '{IGNORECASE=1} /^eth.*'$hwaddr'/ {print $1; exit}') + debug "# vlan$i: $hwname $hwaddr => $vif" + + $DEBUG ifconfig $vif up + $DEBUG vconfig add $vif $i 2>/dev/null + } + ifconfig "$1" >/dev/null 2>&1 || [ "${1%%[0-9]}" = "br" ] + return $? +) + +wifi () ( + debug "### wifi $1 ###" + if=$(awk 'gsub(":","") {print $1}' /proc/net/wireless) + $DEBUG wlconf $if $1 +) + +ifup () ( + type=$1 + debug "### ifup $type ###" + + if=$(nvram_get ${type}_ifname) + if [ "${if%%[0-9]}" = "ppp" ]; then + if=$(nvram_get pppoe_ifname) + fi + + if_valid $if || return + + $DEBUG ifconfig $if down + if [ "${if%%[0-9]}" = "br" ]; then + stp=$(nvram_get ${type}_stp) + $DEBUG brctl delbr $if + $DEBUG brctl addbr $if + $DEBUG brctl setfd $if 0 + $DEBUG brctl stp $if $stp + if_list=$(nvram_get ${type}_ifnames) + for sif in $if_list; do { + if_valid $sif || continue + $DEBUG ifconfig $sif 0.0.0.0 up + $DEBUG brctl addif $if $sif + } done + fi + + if_mac=$(nvram_get ${type}_hwaddr) + [ -z "$if_mac" ] || $DEBUG ifconfig $if hw ether $if_mac + + if_proto=$(nvram_get ${type}_proto) + case "$if_proto" in + static) + if_ip=$(nvram_get ${type}_ipaddr) + if_netmask=$(nvram_get ${type}_netmask) + if_gateway=$(nvram_get ${type}_gateway) + + ipcalc -s "$if_ip" || return + ipcalc -s "$if_netmask" || return + $DEBUG ifconfig $if $if_ip netmask $if_netmask up + + ipcalc -s "$if_gateway" || return + $DEBUG route add default gw $if_gateway + + [ -f /etc/resolv.conf ] && return + + debug "# --- creating /etc/resolv.conf ---" + for dns in $(nvram_get ${type}_dns); do { + echo "nameserver $dns" >> /etc/resolv.conf + } done + ;; + dhcp) + pidfile=/tmp/dhcp-${type}.pid + if [ -f $pidfile ]; then + $DEBUG kill $(cat $pidfile) + fi + cmd="udhcpc -i $if -b -p $pidfile &" + ${DEBUG:-eval} $cmd + ;; + pppoe) + if_username=$(nvram_get ppp_username) + if_password=$(nvram_get ppp_passwd) + if_redial=$(nvram_get ppp_redialperiod) + if_idletime=$(nvram_get ppp_idletime) + + $DEBUG ifconfig $if 0.0.0.0 up + + $DEBUG /sbin/pppoecd $if -u $if_username -p $if_password -i 0 -I $if_redial -T $if_idletime -k + ;; + *) + echo "### WARNING $if: $if_proto is not supported" + ;; + esac +) + +ifdown () ( + type=$1 + debug "### ifdown $type ###" + if=$(nvram_get ${type}_ifname) + if_valid $if || return + $DEBUG ifdown $if +) diff --git a/root/etc/nvram.overrides b/root/etc/nvram.overrides new file mode 100644 index 0000000000..058ce708ed --- /dev/null +++ b/root/etc/nvram.overrides @@ -0,0 +1,41 @@ +# NVRAM overrides +# This file handles the NVRAM quirks of various hardware + +# linksys bug has lan doing dhcp; force static +lan_proto="static" + +# failsafe if reset is held +[ "$FAILSAFE" = "true" ] && { + debug "### FAILSAFE MODE ####" + lan_ifname="br0" + lan_ifnames="vlan0 vlan2 eth1 eth2 eth3" + lan_ipaddr="192.168.1.1" + lan_netmask="255.255.255.0" + lan_hwaddr="00:0B:AD:0A:DD:00" + wan_ifname="none" + wifi_ifname="none" +} + +# hacks for 1.x hardware +[ "$(nvram get boardnum)" = "42" ] && \ +[ "$(nvram get boardtype)" = "bcm94710dev" ] && { + debug "### 1.x hardware hack ###" + vlan1hwname="et0" + vlan2hwname="et0" + + # we remap old device names to new + # it's recommended that you continue to + # use the old names to preserve backwards + # compatibility + remap () { + eval $1=\"$(nvram_get $1 | awk 'gsub("eth0","vlan2") gsub("eth1","vlan1")')\" + } + + remap lan_ifname + remap lan_ifnames + remap wifi_ifname + remap wifi_ifnames + remap wan_ifname + remap wan_ifnames + remap pppoe_ifname +} diff --git a/root/etc/profile b/root/etc/profile new file mode 100644 index 0000000000..66e8b93dd7 --- /dev/null +++ b/root/etc/profile @@ -0,0 +1,3 @@ +#!/bin/sh +export PATH=/bin:/sbin:/usr/bin:/usr/sbin +export PS1='\u@\h:\w\$ ' diff --git a/root/etc/sysctl.conf b/root/etc/sysctl.conf new file mode 100644 index 0000000000..8552a4ba32 --- /dev/null +++ b/root/etc/sysctl.conf @@ -0,0 +1,7 @@ +kernel.panic = 3 +net.ipv4.ip_forward = 1 +net.ipv4.icmp_echo_ignore_broadcasts = 1 +net.ipv4.icmp_ignore_bogus_error_responses = 1 +net.ipv4.tcp_fin_timeout = 30 +net.ipv4.tcp_keepalive_time = 120 +net.ipv4.tcp_timestamps = 0