#!/bin/bash

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

config='/etc/ipsec.conf'

case "$STATE" in
  MASTER)
    exit_status='0'
    while read -r conn; do
      ipsec up "$conn"
      [ "${?:-0}" -le "$exit_status" ] || exit_status="$?"
    done < <(grep -oP '^conn\s+\K[^%]\S*' "$config")
    exit "$exit_status"
    ;;
  BACKUP|STOP|FAULT)
    exit_status='0'
    while read -r conn; do
      ipsec down "$conn"
      [ "${?:-0}" -le "$exit_status" ] || exit_status="$?"
    done < <(grep -oP '^conn\s+\K[^%]\S*' "$config")
    exit "$exit_status"
    ;;
  *)
    echo "Unknown state: ${STATE}"
    exit 1
    ;;
esac
