#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

TYPE="$1"
NAME="$2"
STATE="$3"
PRIORITY="$4"

. /opt/aep/etc/vxlan_keepalived.cfg

overlay_iface="${overlay_iface:?missing variable: \$overlay_iface}"
underlay_iface="${underlay_iface:?missing variable: \$underlay_iface}"
vxlan_id="${vxlan_id:?missing variable: \$vxlan_id}"
peer_addr="${peer_addr:?missing variable: \$peer_addr}"
local_addr="${local_addr:?missing variable: \$local_addr}"

case "$STATE" in
  MASTER)
    ip link add "$overlay_iface" type vxlan id "$vxlan_id" dstport 4789 dev "$underlay_iface" || true
    bridge fdb append to 00:00:00:00:00:00 dst "$peer_addr" dev "$overlay_iface" || true
    ip addr add "$local_addr" dev "$overlay_iface" || true
    ip link set up dev "$overlay_iface" || true
    ;;
  BACKUP|STOP|FAULT)
    ip link set down dev "$overlay_iface" || true
    ip addr del "$local_addr" dev "$overlay_iface" || true
    bridge fdb delete to 00:00:00:00:00:00 dst "$peer_addr" dev "$overlay_iface" || true
    ip link del "$overlay_iface" || true
    ;;
  *)
    echo "Unknown state: ${STATE}"
    exit 2
    ;;
esac

exit 0
