From 02342d58331b3d35de31cb9cbf25eb0601d35a0b Mon Sep 17 00:00:00 2001 From: Tom Eastep Date: Mon, 16 Apr 2012 08:20:21 -0700 Subject: [PATCH] Make 'show routing work with iproute 20111117 Signed-off-by: Tom Eastep --- Shorewall-core/lib.cli | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Shorewall-core/lib.cli b/Shorewall-core/lib.cli index c583ec334..9ef08c862 100644 --- a/Shorewall-core/lib.cli +++ b/Shorewall-core/lib.cli @@ -454,16 +454,39 @@ sort_routes() { done | sort -r | while read dest rest; do echo $rest; done } +# +# Find the table name in the passed routing rule +# +find_table() { + local word + + while [ $# -gt 1 ]; do + word=$1 + shift + [ $word = lookup ] && echo $1 && break + done +} + +# +# Isolate the table in the routing rules being read from stdin +# +find_tables() { + while read rule; do + find_table $rule + done +} + # # Show routing configuration # show_routing() { + local rule + local table + if [ -n "$(ip -$g_family rule list)" ]; then heading "Routing Rules" ip -$g_family rule list - ip -$g_family rule list | while read rule; do - echo ${rule##* } - done | sort -u | while read table; do + ip -$g_family rule list | find_tables | sort -u | while read table; do heading "Table $table:" if [ $g_family -eq 6 ]; then ip -$g_family -o route list table $table | fgrep -v cache