#!/usr/local/bin/cbsd
#v12.0.4
MYARG="jname"
MYOPTARG="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
. ${cbsdinit}

[ -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 in $( /usr/bin/jot 10000 ); do
		_newctr="${default_ctrname}${_num}"
		_res=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite SELECT name FROM bhyve_dskcontroller WHERE name=\"${_newctr}\" LIMIT 1 )
		[ -z "${_res}" ] && _exist=0 && break
	done

	case "${_exist}" in
		0)
			cbsdlogger NOTICE ${CBSD_APP}: found new controller name: ${_newctr}
			;;
		1)
			log_err 1 "${N1_COLOR}${CBSD_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
