Tagging module iproute2 - iproute2-2.6.16-2
[iproute2.git] / ip / routel
1 #!/bin/sh
2 #$Id$
3
4 #
5 # Script created by: Stephen R. van den Berg <srb@cuci.nl>, 1999/04/18
6 # Donated to the public domain.
7 #
8 # This script transforms the output of "ip" into more readable text.
9 # "ip" is the Linux-advanced-routing configuration tool part of the
10 # iproute package.
11 #
12
13 test "X-h" = "X$1" && echo "Usage: $0 [tablenr [raw ip args...]]" && exit 64
14
15 test -z "$*" && set 0
16
17 ip route list table "$@" |
18  while read network rest
19  do set xx $rest
20     shift
21     proto=""
22     via=""
23     dev=""
24     scope=""
25     src=""
26     table=""
27     case $network in
28        broadcast|local|unreachable) via=$network
29           network=$1
30           shift
31           ;;
32     esac
33     while test $# != 0
34     do
35        key=$1
36        val=$2
37        eval "$key=$val"
38        shift 2
39     done
40     echo "$network      $via    $src    $proto  $scope  $dev    $table"
41  done | awk -F '        ' '
42 BEGIN {
43    format="%15s%-3s %15s %15s %8s %8s%7s %s\n";
44    printf(format,"target","","gateway","source","proto","scope","dev","tbl");
45  }
46  { network=$1;
47    mask="";
48    if(match(network,"/"))
49     { mask=" "substr(network,RSTART+1);
50       network=substr(network,0,RSTART);
51     }
52    via=$2;
53    src=$3;
54    proto=$4;
55    scope=$5;
56    dev=$6;
57    table=$7;
58    printf(format,network,mask,via,src,proto,scope,dev,table);
59  }
60 '