Blame ip/routel

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