auto-l3/auto-l3/sv/vxmon/run

54 lines
783 B
Bash
Executable File

#!/bin/sh
DEV=${1:-vxlan0}
handle_add() {
mac="${1:?}"
dev="${2:?}"
dst="${3:?}"
echo "bridge fdb append 00:00:00:00:00:00 dst $dst dev $dev"
bridge fdb append 00:00:00:00:00:00 dst "$dst" dev "$dev"
}
handle_cleanup() {
mac="${1:?}"
dev="${2:?}"
dst="${3:?}"
if ! bridge fdb show dev "$dev" | grep -v 00:00:00:00:00:00 | grep "$dst"; then
bridge fdb del 00:00:00:00:00:00 dst "$dst" dev "$dev"
fi
}
handle_entry() {
cmd=handle_add
if [ "$1" = "Deleted" ]; then
shift
cmd=handle_cleanup
fi
mac="${1:?}"
dev="${3:?}"
if [ "$dev" != "$DEV" ]; then
return
fi
if [ "$mac" = "00:00:00:00:00:00" ]; then
echo "skipping" "$@"
return
fi
$cmd "$mac" "$3" "$5"
}
main() {
bridge monitor fdb | while read args; do
handle_entry $args
done
}
main