| #!/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); |
| } |
| ' |