#!/bin/sh

test -n "$FAILSAFE" && exit
WIFIDEV=$(awk 'sub(":","") {print $1}' /proc/net/wireless)
test -z "$WIFIDEV" && exit

. /etc/functions.sh

MODULES="cls_u32 sch_prio sch_sfq"

case $1 in
	start)
		echo "Starting olsr prio..."
		for i in $MODULES; do
			insmod $i
		done
		tc qdisc add dev $WIFIDEV root handle 1: prio
		tc qdisc add dev $WIFIDEV parent 1:1 handle 10: sfq
		tc filter add dev $WIFIDEV protocol ip parent 1:0 prio 1 u32 match ip dport 698 0xffff flowid 10:1
		tc filter add dev $WIFIDEV protocol ip parent 1:0 prio 2 u32 match ip dst 0.0.0.0/0 flowid 10:2
	;;
	stop)
		tc filter del dev $WIFIDEV protocol ip parent 1:0 prio 2 u32 match ip dst 0.0.0.0/0 flowid 10:2
		tc filter del dev $WIFIDEV protocol ip parent 1:0 prio 1 u32 match ip dport 698 0xffff flowid 10:1
		tc qdisc del dev $WIFIDEV parent 1:1 handle 10: sfq
		tc qdisc del dev $WIFIDEV root handle 1: prio
		echo "Stopping olsr prio..."
		for i in $MODULES; do
			rmmod $i
		done
	;;
	restart)
		$0 stop
		$0 start
	;;
	*)
		echo "Usage: $0 start|stop|restart"
	;;
esac
