fn_test_net () {
  failed=0
  ping  -c 2 a.root-servers.net >/dev/null 2>&1
  if [ $? -eq 1 ]; then
    failed=`expr $failed + 1`
  fi
  ping  -c 2 f.root-servers.net >/dev/null 2>&1
  if [ $? -eq 1 ]; then
    failed=`expr $failed + 1`
  fi
  ping  -c 2 l.root-servers.net >/dev/null 2>&1
  if [ $? -eq 1 ]; then
    failed=`expr $failed + 1`
  fi
  if [ $failed -eq 3 ]; then
    false
  fi
}
    
fn_restart () {
    ifdown vdn
    ifdown wan
    sleep 5
    ifup vdn
    sleep 10
    ifup wan
    sleep 10
}

gw=`netstat -rn | egrep "0\.0\.0\.0.*0\.0\.0\.0" | awk ' { print $2 } '`

if [ ! "$gw" ]; then
  echo "[Ghetto Peer] ERR No gateway, restarting interfaces" | logger
  fn_restart
  gw=`netstat -rn | egrep "0\.0\.0\.0.*0\.0\.0\.0" | awk ' { print $2 } '`
  if [ "$gw" ]; then
    echo "[Ghetto Peer] INFO: New gateway $gw" | logger
  else
    echo "[Ghetto Peer] ERR: Failed to establish gateway" | logger
  fi
else
  fn_test_net
  if [ $? -eq 1 ]; then
    echo "[Ghetto Peer] WARN: gw $gw failed first ping test" | logger
    sleep 30
    fn_test_net
    if [ $? -eq 1 ]; then
      echo "[Ghetto Peer] ERR: gw $gw failed second ping test, restarting interfaces" | logger
      fn_restart
      gw=`netstat -rn | egrep "0\.0\.0\.0.*0\.0\.0\.0" | awk ' { print $2 } '`
      if [ "$gw" ]; then
        echo "[Ghetto Peer] INFO: New gateway $gw" | logger
      else
        echo "[Ghetto Peer] ERR: Failed to establish gateway" | logger
      fi
    fi
  fi
fi

