#!/usr/local/bin/cbsd
#v12.1.6
MYARG=""
MYOPTARG="vhid advskew pass ip interface state"
MYDESC="Carp action collector"

. ${subrdir}/nc.subr
. ${cbsdinit}

. ${initenv}
. ${subrdir}/carp.subr

### MAIN
args="$*"
[ -z "${args}" ] && exit 0

${KLDSTAT_CMD} -qm carp || ${KLDLOAD_CMD} carp

eval $( echo "${args}" | ${TR_CMD} "@" " "| while read vhid interface state; do
	[ -z "${state}" ] && continue
	echo "export vhid=${vhid}"
	echo "export itnerface=${interface}"
	echo "export state=${state}"
done )

jname_list=$( get_jname_by_vhid ${vhid} )

[ -z "${jname_list}" ] && exit 0

for jname in ${jname_list}; do
	. ${subrdir}/rcconf.subr
	[ $? -eq 1 ] && continue
	if [ ${astart} -eq 0 ]; then
		cbsdlogger NOTICE ${CBSD_APP}: CARP ${state} state for jail ${jname} received. But jail astart marked as Off. Skipp
		continue
	else
		cbsdlogger NOTICE ${CBSD_APP}: CARP ${state} state for jail ${jname} received." >> ${tmpdir}/cbsd_carp.log
	fi

	case "${state}" in
		[Bb][Aa][Cc][Kk][Uu][Pp])
			cbsdlogger NOTICE ${CBSD_APP}: state backup: stop jail: ${jname}
			env NOCOLOR=1 NOINTER=1 jstop inter=0 ${jname} > /dev/null 2>&1
			;;
		[Mm][Aa][Ss][Tt][Ee][Rr])
			cbsdlogger NOTICE ${CBSD_APP}: state master: stop jail: ${jname}
			env NOCOLOR=1 NOINTER=1 jstart inter=0 ${jname} > /dev/null 2>&1
			;;
		*)
			err 1 "${N1_COLOR}Unknown carp state: ${state}${N0_COLOR}"
			;;
	esac
done

exit 0
