|
Packit Service |
3880ab |
#!/bin/sh
|
|
Packit Service |
3880ab |
# SPDX-License-Identifier: GPL-2.0
|
|
Packit Service |
3880ab |
|
|
Packit Service |
3880ab |
#
|
|
Packit Service |
3880ab |
# Script created by: Stephen R. van den Berg <srb@cuci.nl>, 1999/04/18
|
|
Packit Service |
3880ab |
# Donated to the public domain.
|
|
Packit Service |
3880ab |
#
|
|
Packit Service |
3880ab |
# This script transforms the output of "ip" into more readable text.
|
|
Packit Service |
3880ab |
# "ip" is the Linux-advanced-routing configuration tool part of the
|
|
Packit Service |
3880ab |
# iproute package.
|
|
Packit Service |
3880ab |
#
|
|
Packit Service |
3880ab |
|
|
Packit Service |
3880ab |
test "X-h" = "X$1" && echo "Usage: $0 [tablenr [raw ip args...]]" && exit 64
|
|
Packit Service |
3880ab |
|
|
Packit Service |
3880ab |
test -z "$*" && set 0
|
|
Packit Service |
3880ab |
|
|
Packit Service |
3880ab |
ip route list table "$@" |
|
|
Packit Service |
3880ab |
while read network rest
|
|
Packit Service |
3880ab |
do set xx $rest
|
|
Packit Service |
3880ab |
shift
|
|
Packit Service |
3880ab |
proto=""
|
|
Packit Service |
3880ab |
via=""
|
|
Packit Service |
3880ab |
dev=""
|
|
Packit Service |
3880ab |
scope=""
|
|
Packit Service |
3880ab |
src=""
|
|
Packit Service |
3880ab |
table=""
|
|
Packit Service |
3880ab |
case $network in
|
|
Packit Service |
3880ab |
broadcast|local|unreachable) via=$network
|
|
Packit Service |
3880ab |
network=$1
|
|
Packit Service |
3880ab |
shift
|
|
Packit Service |
3880ab |
;;
|
|
Packit Service |
3880ab |
esac
|
|
Packit Service |
3880ab |
while test $# != 0
|
|
Packit Service |
3880ab |
do
|
|
Packit Service |
3880ab |
case "$1" in
|
|
Packit Service |
3880ab |
proto|via|dev|scope|src|table)
|
|
Packit Service |
3880ab |
key=$1
|
|
Packit Service |
3880ab |
val=$2
|
|
Packit Service |
3880ab |
eval "$key='$val'"
|
|
Packit Service |
3880ab |
shift 2
|
|
Packit Service |
3880ab |
;;
|
|
Packit Service |
3880ab |
dead|onlink|pervasive|offload|notify|linkdown|unresolved)
|
|
Packit Service |
3880ab |
shift
|
|
Packit Service |
3880ab |
;;
|
|
Packit Service |
3880ab |
*)
|
|
Packit Service |
3880ab |
# avoid infinite loop on unknown keyword without value at line end
|
|
Packit Service |
3880ab |
shift
|
|
Packit Service |
3880ab |
shift
|
|
Packit Service |
3880ab |
;;
|
|
Packit Service |
3880ab |
esac
|
|
Packit Service |
3880ab |
done
|
|
Packit Service |
3880ab |
echo "$network $via $src $proto $scope $dev $table"
|
|
Packit Service |
3880ab |
done | awk -F ' ' '
|
|
Packit Service |
3880ab |
BEGIN {
|
|
Packit Service |
3880ab |
format="%15s%-3s %15s %15s %8s %8s%7s %s\n";
|
|
Packit Service |
3880ab |
printf(format,"target","","gateway","source","proto","scope","dev","tbl");
|
|
Packit Service |
3880ab |
}
|
|
Packit Service |
3880ab |
{ network=$1;
|
|
Packit Service |
3880ab |
mask="";
|
|
Packit Service |
3880ab |
if(match(network,"/"))
|
|
Packit Service |
3880ab |
{ mask=" "substr(network,RSTART+1);
|
|
Packit Service |
3880ab |
network=substr(network,0,RSTART);
|
|
Packit Service |
3880ab |
}
|
|
Packit Service |
3880ab |
via=$2;
|
|
Packit Service |
3880ab |
src=$3;
|
|
Packit Service |
3880ab |
proto=$4;
|
|
Packit Service |
3880ab |
scope=$5;
|
|
Packit Service |
3880ab |
dev=$6;
|
|
Packit Service |
3880ab |
table=$7;
|
|
Packit Service |
3880ab |
printf(format,network,mask,via,src,proto,scope,dev,table);
|
|
Packit Service |
3880ab |
}
|
|
Packit Service |
3880ab |
'
|