diff options
Diffstat (limited to 'root/etc')
| -rwxr-xr-x | root/etc/firewall.sh | 26 | ||||
| -rw-r--r-- | root/etc/inittab | 7 | ||||
| -rwxr-xr-x | root/etc/networking.sh | 160 | ||||
| -rwxr-xr-x | root/etc/preinit | 16 | ||||
| -rwxr-xr-x | root/etc/rcS | 27 | ||||
| -rw-r--r-- | root/etc/udhcpd.conf | 12 | 
6 files changed, 248 insertions, 0 deletions
| diff --git a/root/etc/firewall.sh b/root/etc/firewall.sh new file mode 100755 index 000000000..805aa3f04 --- /dev/null +++ b/root/etc/firewall.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +IPT=/usr/sbin/iptables + +for T in filter nat mangle ; do +  $IPT -t $T -F +  $IPT -t $T -X +done + +$IPT -t filter -A INPUT -m state --state INVALID -j DROP +$IPT -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  +$IPT -t filter -A INPUT -p icmp -j ACCEPT  +$IPT -t filter -A INPUT -i vlan1 -p tcp -j REJECT --reject-with tcp-reset  +$IPT -t filter -A INPUT -i vlan1 -j REJECT --reject-with icmp-port-unreachable  +$IPT -t filter -A FORWARD -m state --state INVALID -j DROP  +$IPT -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT  +$IPT -t filter -A FORWARD -i vlan1 -m state --state NEW,INVALID -j DROP + +$IPT -t nat -A POSTROUTING -o vlan1 -j MASQUERADE + +echo "1"   >/proc/sys/net/ipv4/ip_forward +echo "1"   >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts +echo "1"   >/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses +echo "30"  >/proc/sys/net/ipv4/tcp_fin_timeout +echo "120" >/proc/sys/net/ipv4/tcp_keepalive_time +echo "0"   >/proc/sys/net/ipv4/tcp_timestamps diff --git a/root/etc/inittab b/root/etc/inittab new file mode 100644 index 000000000..73618d346 --- /dev/null +++ b/root/etc/inittab @@ -0,0 +1,7 @@ +::sysinit:/etc/rcS +::restart:/sbin/init +::ctrlaltdel:/sbin/reboot +::shutdown:/bin/alldone +::respawn:/usr/sbin/dnsmasq -d -l /tmp/udhcpd.leases -s lan + + diff --git a/root/etc/networking.sh b/root/etc/networking.sh new file mode 100755 index 000000000..5242952e9 --- /dev/null +++ b/root/etc/networking.sh @@ -0,0 +1,160 @@ +#!/bin/sh +# OpenWrt Networking script +# $Id$ +# Copyright (c) 2004 Mike Baker <mbm at alt.org> + +# to debug: +# export DEBUG=echo + +export PATH=/usr/bin:/bin:/usr/sbin:/sbin + +# lookup an interface by mac address +mac2if () { +  if=$(ifconfig -a | grep -i "$1" | grep -e "^eth" | awk '{print $1}') +  echo $if +} + +# 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=$(mac2if $hwaddr) +    echo "# vlan${i}: $hwname $hwaddr => $vif" + +    $DEBUG ifconfig $vif up +    #$DEBUG vconfig rem vlan${i} +    $DEBUG vconfig add $vif $i +  } +  ifconfig "$1" >/dev/null 2>&1 || [ "${1%[0-9]}" = "br" ]  +  return $? +} + +wifi_init () { +  echo "# --- wifi init ---" +  hwaddr=$(nvram_get il0macaddr) +  [ -z "$hwaddr" ] && hwaddr=$(nvram_get wl0_hwaddr) +  if=$(mac2if $hwaddr) +  $DEBUG wlconf $if up +} + +configure () { +  type=$1 +  echo "# --- $type ---" +   +  if=$(nvram_get ${type}_ifname) +  if [ "${if%[0-9]}" = "ppp" ]; then +    if=$(nvram get pppoe_ifname)  +  fi +  if_valid $if || return +   +  if [ "${if%[0-9]}" = "br" ]; then +    $DEBUG ifconfig $if down +    $DEBUG brctl delbr $if +    $DEBUG brctl addbr $if +    $DEBUG brctl setfd $if 0 +    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) +  $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 "$ip_gateway" || return  +      $DEBUG route add default gw $ip_gateway +    ;; +    dhcp) +      pidfile=/tmp/dhcp-${type}.pid +      if [ -f $pidfile ]; then +        $DEBUG kill $(cat $pidfile) +      fi +      $DEBUG udhcpc -i $if -b -p /tmp/dhcp-${type}.pid +    ;; +    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 pppd user "$if_username" password "$if_password" defaultroute   +    ;; +    *) +      echo "$if: $if_proto is not supported" +    ;; +  esac +} + +### START NETWORKING ### +wifi_init + +$DEBUG vconfig set_name_type VLAN_PLUS_VID_NO_PAD + +# hacks for 1.x hardware +[ -z "$(nvram_get vlan0hwname)" ] && { +  echo "# 1.x 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") +	  print $0 +    }')\" +  } + +  remap lan_ifname +  remap lan_ifnames +  remap wifi_ifname +  remap wifi_ifnames +  remap wan_ifname +  remap wan_ifnames +  remap pppoe_ifname +} + +# failsafe if reset is held  +[ "$FAILSAFE" = "true" ] && { +  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" +} + +# linksys bug has lan doing dhcp; force static +lan_proto="static" + +configure lan +configure wifi +configure wan diff --git a/root/etc/preinit b/root/etc/preinit new file mode 100755 index 000000000..26025f454 --- /dev/null +++ b/root/etc/preinit @@ -0,0 +1,16 @@ +#!/bin/sh +mount none /proc -t proc +if /sbin/resetmon ; then +  mtd unlock mtd4 +  mount -t jffs2 /dev/mtdblock/4 /jffs +  pivot_root /jffs /jffs/rom +  mount none /dev -t devfs +  mount none /proc -t proc +  umount rom/proc +  umount rom/dev +else +  FAILSAFE=true +  export FAILSAFE +fi +mount none /tmp -t ramfs +exec /sbin/init diff --git a/root/etc/rcS b/root/etc/rcS new file mode 100755 index 000000000..e2ab185bb --- /dev/null +++ b/root/etc/rcS @@ -0,0 +1,27 @@ +#!/bin/sh + +export TZ=$(nvram get tz) + +insmod diag +echo "0x01" > /proc/sys/diag +echo "3" >/proc/sys/kernel/panic + +# networking +insmod et +insmod wl + +ifconfig lo 127.0.0.1 up + +# eth0 and eth1 are shared, must set eth0 as promisc +ifconfig eth0 promisc +ifconfig eth1 promisc +/etc/networking.sh + +# now lets set up a basic set of rules to do ip masquerade +/etc/firewall.sh + +# now lets start some basic services +/usr/sbin/telnetd +/usr/sbin/httpd -p 80 -h /www -r WRT54G Router +/usr/sbin/udhcpd /etc/udhcpd.conf + diff --git a/root/etc/udhcpd.conf b/root/etc/udhcpd.conf new file mode 100644 index 000000000..a82eb37b4 --- /dev/null +++ b/root/etc/udhcpd.conf @@ -0,0 +1,12 @@ +max_leases 200 +start 192.168.1.20 +end 192.168.1.250 +interface br0 +lease_file /tmp/udhcpd.leases +domain lan +pidfile /tmp/udhcpd.pid +option dns 192.168.1.1 +option subnet 255.255.255.0 +option router 192.168.1.1 +lease 7200 + | 
