Blame ip/routel

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
'