#!/usr/local/bin/cbsd
#v12.0.4
CIXARG="jname"
CIXOPTARG="default_ctrname"
MYDESC="Suggest first free bhyve controller name"
ADDHELP="default_ctrname - prefix for name, e.g: ahci_ctr\n"
CBSDMODULE="bhyve"

. ${subrdir}/nc.subr
. ${tools}
cixinit

[ -z "${default_ctrname}" ] && default_ctrname="ahci_ctr"

#find for first jnameX where X is number++
freectr()
{
	local _num= _exist= _res= _newctr=

	_exist=1

	for ((_num=1; _num<=10000; _num++)); do
		_newctr="${default_ctrname}${_num}"
		name=
		cbsdsqlro_vars ${jailsysdir}/${jname}/local.sqlite "SELECT name FROM bhyve_dskcontroller WHERE name='${_newctr}' LIMIT 1"
		[ -z "${name}" ] && _exist=0 && break
	done

	case "${_exist}" in
		0)
			cbsdlogger NOTICE ${CIX_APP}: found new controller name: ${_newctr}
			;;
		1)
			log_err 1 "${N1_COLOR}${CIX_APP}: no free controller name for ${jname}"
			;;
	esac

	echo ${_newctr}
}

. ${subrdir}/rcconf.subr
[ $? -eq 1 ] && err 1 "${N1_COLOR}No such domains: ${N2_COLOR}${jname}${N0_COLOR}"
[ "${emulator}" != "bhyve" ] && log_err 1 "${N1_COLOR}Not in bhyve mode${N0_COLOR}"
[ ! -r ${jailsysdir}/${jname}/local.sqlite ] && err 1 "${N1_COLOR}freectr: no such db: ${N2_COLOR}${jailsysdir}/${jname}/local.sqlite${N1_COLOR}"

freectr

exit 0
