1*de1e4e89SAndroid Build Coastguard Worker#!/bin/sh 2*de1e4e89SAndroid Build Coastguard Worker#$Id$ 3*de1e4e89SAndroid Build Coastguard Worker 4*de1e4e89SAndroid Build Coastguard Worker# 5*de1e4e89SAndroid Build Coastguard Worker# Script created by: Stephen R. van den Berg <[email protected]>, 1999/04/18 6*de1e4e89SAndroid Build Coastguard Worker# Donated to the public domain. 7*de1e4e89SAndroid Build Coastguard Worker# 8*de1e4e89SAndroid Build Coastguard Worker# This script transforms the output of "ip" into more readable text. 9*de1e4e89SAndroid Build Coastguard Worker# "ip" is the Linux-advanced-routing configuration tool part of the 10*de1e4e89SAndroid Build Coastguard Worker# iproute package. 11*de1e4e89SAndroid Build Coastguard Worker# 12*de1e4e89SAndroid Build Coastguard Worker 13*de1e4e89SAndroid Build Coastguard Workertest "X-h" = "X$1" && echo "Usage: $0 [tablenr [raw ip args...]]" && exit 64 14*de1e4e89SAndroid Build Coastguard Worker 15*de1e4e89SAndroid Build Coastguard Workertest -z "$*" && set 0 16*de1e4e89SAndroid Build Coastguard Worker 17*de1e4e89SAndroid Build Coastguard Workerip route list table "$@" | 18*de1e4e89SAndroid Build Coastguard Worker while read network rest 19*de1e4e89SAndroid Build Coastguard Worker do set xx $rest 20*de1e4e89SAndroid Build Coastguard Worker shift 21*de1e4e89SAndroid Build Coastguard Worker proto="" 22*de1e4e89SAndroid Build Coastguard Worker via="" 23*de1e4e89SAndroid Build Coastguard Worker dev="" 24*de1e4e89SAndroid Build Coastguard Worker scope="" 25*de1e4e89SAndroid Build Coastguard Worker src="" 26*de1e4e89SAndroid Build Coastguard Worker table="" 27*de1e4e89SAndroid Build Coastguard Worker case $network in 28*de1e4e89SAndroid Build Coastguard Worker broadcast|local|unreachable) via=$network 29*de1e4e89SAndroid Build Coastguard Worker network=$1 30*de1e4e89SAndroid Build Coastguard Worker shift 31*de1e4e89SAndroid Build Coastguard Worker ;; 32*de1e4e89SAndroid Build Coastguard Worker esac 33*de1e4e89SAndroid Build Coastguard Worker while test $# != 0 34*de1e4e89SAndroid Build Coastguard Worker do 35*de1e4e89SAndroid Build Coastguard Worker case "$1" in 36*de1e4e89SAndroid Build Coastguard Worker proto|via|dev|scope|src|table) 37*de1e4e89SAndroid Build Coastguard Worker key=$1 38*de1e4e89SAndroid Build Coastguard Worker val=$2 39*de1e4e89SAndroid Build Coastguard Worker eval "$key='$val'" 40*de1e4e89SAndroid Build Coastguard Worker shift 2 41*de1e4e89SAndroid Build Coastguard Worker ;; 42*de1e4e89SAndroid Build Coastguard Worker dead|onlink|pervasive|offload|notify|linkdown|unresolved) 43*de1e4e89SAndroid Build Coastguard Worker shift 44*de1e4e89SAndroid Build Coastguard Worker ;; 45*de1e4e89SAndroid Build Coastguard Worker *) 46*de1e4e89SAndroid Build Coastguard Worker # avoid infinite loop on unknown keyword without value at line end 47*de1e4e89SAndroid Build Coastguard Worker shift 48*de1e4e89SAndroid Build Coastguard Worker shift 49*de1e4e89SAndroid Build Coastguard Worker ;; 50*de1e4e89SAndroid Build Coastguard Worker esac 51*de1e4e89SAndroid Build Coastguard Worker done 52*de1e4e89SAndroid Build Coastguard Worker echo "$network $via $src $proto $scope $dev $table" 53*de1e4e89SAndroid Build Coastguard Worker done | awk -F ' ' ' 54*de1e4e89SAndroid Build Coastguard WorkerBEGIN { 55*de1e4e89SAndroid Build Coastguard Worker format="%15s%-3s %15s %15s %8s %8s%7s %s\n"; 56*de1e4e89SAndroid Build Coastguard Worker printf(format,"target","","gateway","source","proto","scope","dev","tbl"); 57*de1e4e89SAndroid Build Coastguard Worker } 58*de1e4e89SAndroid Build Coastguard Worker { network=$1; 59*de1e4e89SAndroid Build Coastguard Worker mask=""; 60*de1e4e89SAndroid Build Coastguard Worker if(match(network,"/")) 61*de1e4e89SAndroid Build Coastguard Worker { mask=" "substr(network,RSTART+1); 62*de1e4e89SAndroid Build Coastguard Worker network=substr(network,0,RSTART); 63*de1e4e89SAndroid Build Coastguard Worker } 64*de1e4e89SAndroid Build Coastguard Worker via=$2; 65*de1e4e89SAndroid Build Coastguard Worker src=$3; 66*de1e4e89SAndroid Build Coastguard Worker proto=$4; 67*de1e4e89SAndroid Build Coastguard Worker scope=$5; 68*de1e4e89SAndroid Build Coastguard Worker dev=$6; 69*de1e4e89SAndroid Build Coastguard Worker table=$7; 70*de1e4e89SAndroid Build Coastguard Worker printf(format,network,mask,via,src,proto,scope,dev,table); 71*de1e4e89SAndroid Build Coastguard Worker } 72*de1e4e89SAndroid Build Coastguard Worker' 73