#! /bin/sh

# Emit commands to route via the lowest numbered IP address for traffic
# originating from each of the locally connected subnets

ip route ls |
    grep 'proto  *kernel  *scope link' |
    while read NET x; do
        echo "$NET" $(echo "$NET" | sed 's:\.0/[0-9]\+:.1:' ) ;
    done |
{
    TABLE=100;
    while read NET GW; do
        let TABLE=TABLE+1;
        ip rule ls | fgrep "$NET" | sed 's/^/ip rule del prio /; s/:/ /; s/lookup/table/'
        echo ip rule add from $NET table $TABLE ;
        ip route ls | fgrep "$NET" | sed 's/^/ip route add /; s/$/ table '"$TABLE"'/' ;
        echo ip route add default via $GW table $TABLE ;
    done
}

