#!/bin/sh
# DD-WRT V22 Preinit script by Sebastian Gottschall (BrainSlayer). (some parts are taken from OpenWRT)

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin
nvram set expert_mode=1
#nvram set ipv6_enable=1
# overclocking for stability (dont ask me)

#if [ "$(nvram get clkfreq)" = "200" ]; then
#    nvram set clkfreq=216
#    nvram commit
#    reboot
#fi

if [ -z "$(nvram get ipv6_enable)" ]; then
    nvram set ipv6_enable=0
    nvram set ipv6_enable0=0
    nvram commit
fi
if [ -z "$(nvram get ipv6_enable0)" ]; then
    nvram set ipv6_enable=0
    nvram set ipv6_enable0=0
    nvram commit
fi

if [ -z "$(nvram get mmc_enable)" ]; then
    nvram set mmc_enable=0
    nvram set mmc_enable0=0
    nvram commit
fi

if [ "$(nvram get mmc_enable)" = "1" ]; then
    insmod mmc
    insmod fat
    insmod vfat
    insmod msdos
    mount /dev/mmc/disc0/part1 /mmc -tmsdos
fi

if [ -z "$(nvram get enable_jffs2)" ]; then
    nvram set enable_jffs2=0
    nvram set clean_jffs2=0
    nvram set sys_enable_jffs2=0
    nvram set sys_clean_jffs2=0
    nvram commit
fi

if [ -z "$(nvram get http_enable)" ]; then
    nvram set http_enable=1
    nvram commit
fi


# validate settings and adjust if needed
if [ -z "$(nvram get ip_conntrack_max)" ]; then
    nvram set ip_conntrack_max=4096
    nvram set ip_conntrack_tcp_timeouts=3600
    nvram set ip_conntrack_udp_timeouts=3600
    nvram commit
fi

# read setting from nvram
CONNTRACK_MAX=$(nvram get ip_conntrack_max)
CONNTRACK_TCP_TIMEOUTS=$(nvram get ip_conntrack_tcp_timeouts)
CONNTRACK_UDP_TIMEOUTS=$(nvram get ip_conntrack_udp_timeouts)

# adjust conntrack settings
/bin/echo $CONNTRACK_MAX > /proc/sys/net/ipv4/ip_conntrack_max
/bin/echo "3600 $CONNTRACK_TCP_TIMEOUTS 120 60 120 120 10 60 30 120" > /proc/sys/net/ipv4/ip_conntrack_tcp_timeouts
/bin/echo "65 $CONNTRACK_UDP_TIMEOUTS" > /proc/sys/net/ipv4/ip_conntrack_udp_timeouts
/bin/echo 1 > /proc/sys/net/ipv4/tcp_westwood
