Tacoen's shared code-snipsets
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
IP="/sbin/ip";
TODO=$1
ROUTERIP=$2
ETH=$3
DEFAULT_ETH="br0"
DEFAULT_TABLE="main"
RT_TABLES="/etc/iproute2/rt_tables"
RT_COUNTER="/etc/my-route/etc/rt_tables_counter"
CR_COUNTER="/etc/my-route/etc/ip_rule_counter"
ERR1="$ROUTERIP not found as Directory."
ERR2="$ROUTERIP Directory is empty."
if [ "$ETH" = "" ]; then ETH=$DEFAULT_ETH; fi
function rttable_check() {
BELUM=`cat $RT_TABLES | grep $T`;
N=`cat $RT_COUNTER`; N=$((1+${N}));
if [ "$BELUM" == "" ]; then
echo "$N $T" >> $RT_TABLES
echo $N > $RT_COUNTER
fi
C=`cat $CR_COUNTER`;
ip_rulez; C=$((1+${C})); echo $C > $CR_COUNTER
}
function ip_rulez() {
echo -n "Flush: $T "
$IP route flush table $T
echo ""
echo -n "Add into Rule : 1$N $T "
$IP rule add prio 1$C table $T
echo ""
}
function iproute_add() {
T=`echo $rf| cut -d/ -f5`;
rttable_check
echo -n "$T: "
while W=`line`
do
if [ "$W" != "" ]; then
echo -n "$W "
$IP route add $W via $ROUTERIP dev $ETH table $T
echo ""
fi
done < $rf
$IP route flush cache
echo ""
}
function iproute_del() {
T=`echo $rf| cut -d/ -f5`;
echo -n "$T: "
while W=`line`
do
if [ "$W" != "" ]; then
echo -n "$W "
$IP route del $W via $ROUTERIP dev $ETH table $T
echo ""
fi
done < $rf
$IP route flush cache
echo ""
}
function syntax() {
echo "Syntax: $0 [build|delete] router-ip device"
exit 1
}
function start () {
if [ "$ROUTERIP" == "" ]; then
syntax
exit 0
fi
if [ ! -d "/etc/my-route/$ROUTERIP" ]; then
echo $ERR1
exit 0
fi
case "$TODO" in
build)
for rf in /etc/my-route/$ROUTERIP/*
do
iproute_add
done;
;;
delete)
for rf in /etc/my-route/$ROUTERIP/*
do
iproute_del
done;
;;
*)
syntax
;;
esac
}
start
exit 0