#!/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
nvram set expert_mode=1

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 [ "$(nvram get sys_clean_jffs2)" = "1" ]; then
    nvram set sys_clean_jffs2=0
    nvram commit
    mtd unlock mtd4
    mtd erase ddwrt >&- 
fi

if [ "$(nvram get sys_enable_jffs2)" = "1" ]; then
    mtd unlock mtd4
    mount -t jffs2 /dev/mtdblock/4 /jffs
    jdev=$(mount | awk '/jffs2/ {print $3}')
    if [ -z "$jdev" ]; then
	    echo -n "Creating jffs2 partition... "
	    mtd erase ddwrt >&- 
	    mount -t jffs2 /dev/mtdblock/4 /jffs
	    echo "done"
    else
	    echo "jffs2 partition is mounted"
    fi

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
