#!/bin/sh
#$Id$

#
# Script created by: Stephen R. van den Berg <srb@cuci.nl>, 1999/04/18
# Donated to the public domain.
#
# This script transforms the output of "ip" into more readable text.
# "ip" is the Linux-advanced-routing configuration tool part of the
# iproute package.
#

test "X-h" = "X$1" && echo "Usage: $0 [tablenr [raw ip args...]]" && exit 64

test -z "$*" && set 0

ip route list table "$@" |
 while read network rest
 do set xx $rest
    shift
    proto=""
    via=""
    dev=""
    scope=""
    src=""
    table=""
    case $network in
       broadcast|local|unreachable) via=$network
          network=$1
          shift
          ;;
    esac
    while test $# != 0
    do
       case "$1" in
          proto|via|dev|scope|src|table)
             key=$1
             val=$2
             eval "$key='$val'"
             shift 2
             ;;
          dead|onlink|pervasive|offload|notify|linkdown|unresolved)
             shift
             ;;
          *)
             # avoid infinite loop on unknown keyword without value at line end
             shift
             shift
             ;;
       esac
    done
    echo "$network	$via	$src	$proto	$scope	$dev	$table"
 done | awk -F '	' '
BEGIN {
   format="%15s%-3s %15s %15s %8s %8s%7s %s\n";
   printf(format,"target","","gateway","source","proto","scope","dev","tbl");
 }
 { network=$1;
   mask="";
   if(match(network,"/"))
    { mask=" "substr(network,RSTART+1);
      network=substr(network,0,RSTART);
    }
   via=$2;
   src=$3;
   proto=$4;
   scope=$5;
   dev=$6;
   table=$7;
   printf(format,network,mask,via,src,proto,scope,dev,table);
 }
'
