From 827665279a8736a456e10ad820d995c5065d1d39 Mon Sep 17 00:00:00 2001 From: David Tomaschik Date: Sun, 2 Aug 2020 21:55:19 -0700 Subject: [PATCH] Add qdisc_span script. --- bin/qdisc_span.sh | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 bin/qdisc_span.sh diff --git a/bin/qdisc_span.sh b/bin/qdisc_span.sh new file mode 100755 index 0000000..8b29290 --- /dev/null +++ b/bin/qdisc_span.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +set -ue + +ACTION="add" + +if [ "${1}" == "-d" ] ; then + ACTION="del" + shift +fi + +BRIDGE="${1}" +DEST="${2}" + +function setup_span { + if tc qdisc show dev "${1}" | grep -q 'qdisc ingress ffff' ; then + return 0 + fi + tc qdisc add dev "${1}" ingress + tc filter add dev "${1}" parent ffff: protocol all u32 match u8 0 0 action mirred egress mirror dev "${DEST}" +} + +function del_span { + tc qdisc del dev "${1}" ingress +} + +function handle_iface { + case "${ACTION}" in + add) + setup_span "${1}" + ;; + del) + del_span "${1}" + ;; + *) + echo "Unknown action!" + exit 1 + ;; + esac +} + +function get_bridge_ifaces { + bridge link | grep "master ${1}" | cut -d: -f2 | cut -d@ -f1 +} + +for iface in $(get_bridge_ifaces "${BRIDGE}") ; do + handle_iface "$iface" +done