From f803b58cdcdefdd92c12633df5d31e11817ac870 Mon Sep 17 00:00:00 2001 From: Jonathan David Amery Date: Fri, 18 May 2018 17:35:34 +0100 Subject: [PATCH] First version of hideous shell script. --- source-route-watch.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) mode change 100644 => 100755 source-route-watch.sh diff --git a/source-route-watch.sh b/source-route-watch.sh old mode 100644 new mode 100755 index e69de29..3dd0452 --- a/source-route-watch.sh +++ b/source-route-watch.sh @@ -0,0 +1,35 @@ +#! /bin/bash +set -ex + +while true +do + stdbuf -oL ip monitor route | ( + while read X + do + read -t 1 -N 100000 || true # clear stdin + for int in $( sed -n '/# local/,$ { /^[^#]/ s/.* // p }' /etc/iproute2/rt_tables ) + do + tab=$(ip -6 route list table "$int" | + sed 's/\(dev [^ ]*\) .*/\1/') + def=$(ip -6 route list match default | + sed -n '/dev '"$int"'/ { + s/\(dev [^ ]*\) .*/\1/ + p + }') + if [ "x$def" != "x$tab" ] + then + ip -6 route del $tab table "$int" || true + ip -6 route add $def table "$int" || true + ip -6 rule del table "$int" || true + ip -6 rule add from $( + ip -6 addr show "$int" scope global | sed -n ' + /inet6/ { + s/.*inet6 // + s/ .*// + p + }') table "$int" + fi + done + done + ) +done -- 2.30.2