freebsd-scripts/splitgateway

38 lines
729 B
Bash
Executable File

#!/bin/sh
#
# Split default route into 8 smaller routes to avoid
# lock contention during route lookup
#
# If a default router is not specified, it will be
# taken from rc.conf.
#
ROUTECMD="/sbin/route -q "
ROUTES="0.0.0.0/3 32.0.0.0/3 64.0.0.0/3 96.0.0.0/3 128.0.0.0/3 160.0.0.0/3 192.0.0.0/3 224.0.0.0/3"
if [ $# -lt 1 ]; then
echo "syntax: $0 [start|stop]"
exit 1
fi
case $1 in
start)
GW=`sysrc -n defaultrouter`
echo "splitgateway: Assuming ${GW} from rc.conf..."
for R in ${ROUTES}; do
${ROUTECMD} add -net ${R} ${GW}
done
;;
stop)
for R in ${ROUTES}; do
${ROUTECMD} delete -net ${R}
done
;;
esac
# no need to remove default route since it will never be matched
#${ROUTECMD} delete default