#!/bin/sh

test -n "$REBOOT" && exec reboot
test -e /sbin/sysctl && sysctl -p
test -f /proc/jffs2_bbc && echo "S" > /proc/jffs2_bbc

[ "$(nvram get il0macaddr)" = "00:90:4c:5f:00:2a" ] && {
  # if default wifi mac, set two higher than the lan mac
  nvram set il0macaddr=$(nvram get et0macaddr|
  awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
}

TOTMEM=$(awk 'sub("MemTotal:","") {print $1}' /proc/meminfo)
if [ -n "$TOTMEM" ] && [ 8192 -gt $TOTMEM ]; then
  if [ -z "$FAILSAFE" ] && [ -z "$READONLY" ]; then
    # No wl driver with FAILSAFE or READONLY:
    # Saves 1 Mb RAM to make trx upload possible
    insmod wl
  fi
else
  insmod wl
  if [ -z "$FAILSAFE" ]; then
    test -e /sbin/klogd && klogd
    test -e /sbin/syslogd && syslogd -C 16
    insmod softdog soft_margin=180
    watchdog /dev/misc/watchdog
  fi
fi

sed 's/^[^#]/insmod &/' /etc/module /etc/modules.d/* 2>&-|ash

mkdir -p /var/etc
mkdir -p /var/lock
mkdir -p /var/log
mkdir -p /var/run

ip addr add dev lo 127.0.0.1/8
ip link set dev lo up
ip link set dev eth0 promisc on

# configure the switch based on nvram if not in failsafe mode
[ -d /proc/switch/eth0 -a -z "$FAILSAFE" ] && {
	for nr in 0 1 2 3 4 5 6 7 8 9; do
		vp="$(nvram get vlan${nr}ports)"
		[ -z "$vp" -o -z "$(nvram get vlan${nr}hwname)" ] || {
			echo "$vp" > /proc/switch/eth0/vlan/$nr/ports
		}
	done
}

HOSTNAME=$(nvram get wan_hostname)
HOSTNAME=${HOSTNAME%%.*}
echo ${HOSTNAME:=OpenWrt} > /proc/sys/kernel/hostname

vconfig set_name_type VLAN_PLUS_VID_NO_PAD
