Skip to content

Instantly share code, notes, and snippets.

@lemmi
Created March 19, 2020 18:56
Show Gist options
  • Save lemmi/efec483cb3c0dcfb8162bd016c48f61b to your computer and use it in GitHub Desktop.
Save lemmi/efec483cb3c0dcfb8162bd016c48f61b to your computer and use it in GitHub Desktop.
#!/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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment