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