#!/bin/sh
. /etc/kerbynet.conf
function checkgateway() {
   if ! ip route get $1 2>/dev/null >/tmp/router_err ; then
     return 1
   else
     if grep  -w -v via /tmp/router_err |grep -q -w dev ; then
       return 0
     else
       return 2
     fi
   fi
}
cat $REGISTER/system/net/router/ip_forward  > /proc/sys/net/ipv4/ip_forward
CONFIG="$REGISTER/system/net/router"
NBENABLED="`cat $REGISTER/system/net/nb/Enabled 2>/dev/null`"
if [ -d $CONFIG/Statics ] ; then
  cd $CONFIG/Statics
  GWENTRIES=""
  ENTRIES=`ls -r 2>/dev/null`
  for E in $ENTRIES ; do
    export RouteType="`cat $E/RouteType`"
    export Dest="`cat $E/Dest`"
    export Netmask="`cat $E/Netmask`"
    export Via="`cat $E/Via`"
    export Gateway="`cat $E/Gateway`"
    export Metric="`cat $E/Metric`"
    export Interface="`cat $E/Interface`"
    if ! [ "$NBENABLED" = yes -a "$Dest" = 0.0.0.0 ] ; then
      if [ "$Netmask" != 255.255.255.255 ] ; then
        TARGET=`ipcalc -b -n $Dest/$Netmask |grep -w Network: |awk '{print $2}'`
      else
        TARGET=$Dest
      fi
      if [ "$Via" == GW ] ; then
        GWENTRIES="$GWENTRIES $E"
      else
        echo "ip route add $TARGET metric $Metric dev $Interface"
        ip route add $TARGET metric $Metric dev $Interface 2>/dev/null
      fi
    fi 
  done
  for E in $GWENTRIES ; do
    export RouteType="`cat $E/RouteType`"
    export Dest="`cat $E/Dest`"
    export Netmask="`cat $E/Netmask`"
    export Gateway="`cat $E/Gateway`"
    export Metric="`cat $E/Metric`"
    if [ "$Netmask" != 255.255.255.255 ] ; then
      TARGET=`ipcalc -b -n $Dest/$Netmask |grep -w Network: |awk '{print $2}'`
    else
      TARGET=$Dest
    fi
    if checkgateway $Gateway ; then
      ip route add $TARGET metric $Metric via $Gateway 2>/dev/null
    else
      ip route del $TARGET metric $Metric via $Gateway 2>/dev/null
    fi
  done
fi


