Home | History | Annotate | Download | only in ip
      1 #!/bin/sh
      2 #$Id$
      3 
      4 #
      5 # Script created by: Stephen R. van den Berg <srb (at] 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 '
     61