#!/usr/local/bin/cbsd
#v10.0.4
CBSDMODULE="jail"
MYARG="jname"

. ${subrdir}/nc.subr

[ ! -f ${distsharedir}/jail-arg ] && err 1 "${N2_COLOR}no jail-arg file${N0_COLOR}";
. ${distsharedir}/jail-arg

MYOPTARG="$JARG mode"
MYDESC="Create ascii rc.conf for jail"
ADDHELP="mode=force for modification on the running jail\n"

. ${tools}
. ${strings}
. ${cbsdinit}

. ${subrdir}/rcconf.subr
[ $? -eq 1 ] && err 1 "${N1_COLOR}No such jail: ${N2_COLOR}${jname}${N0_COLOR}"

cat <<EOF
#  DO NOT EDIT THIS FILE. PLEASE USE INSTEAD:
# cbsd jconfig jname=${jname}

relative_path="1";
EOF

for i in ${JARG}; do
	VAL=$( cbsdsqlro local "SELECT ${i} FROM jails WHERE jname='${jname}'" )
	[ -z "${VAL}" ] && continue
	[ "${VAL}" = "(null)" -o -z "${VAL}" ] && VAL=""
	echo "${i}=\"${VAL}\";"
done


if [ "${emulator}" = "bhyve" ]; then
	. ${distsharedir}/bhyve.conf
	for i in ${MYCOL}; do
		[ "${i}" = "jname" ] && continue
		VAL=$( cbsdsqlro local "SELECT ${i} FROM bhyve WHERE jname='${jname}'" )
		[ "${VAL}" = "(null)" -o -z "${VAL}" ] && VAL=""
		echo "${i}=\"${VAL}\";"
	done

	sqldelimer=" "

	# DSK area
	for last_disk in $( seq 1 16 ); do
		unset dsk_controller${last_disk}
	done

	dsk_id=1

	cbsdsqlro ${jailsysdir}/${jname}/local.sqlite SELECT dsk_controller,dsk_path,dsk_slot,dsk_type FROM bhyvedsk WHERE jname=\"${jname}\" | while read dsk_controller dsk_path dsk_slot dsk_type; do
		[ -z "${dsk_type}" ] && continue
		echo "dsk_controller${dsk_id}=\"${dsk_controller}\";"
		echo "dsk_path${dsk_id}=\"${dsk_path}\";"
		echo "dsk_slot${dsk_id}=\"${dsk_slot}\";"
		echo "dsk_type${dsk_id}=\"${dsk_type}\";"
		dsk_id=$(( dsk_id + 1 ))
	done || err 1 "${N1_COLOR}Error while create disk map${N0_COLOR}"

	# NIC area
	for last_nic in $( seq 1 16 ); do
		unset nic_driver${last_disk}
	done

	nic_id=1

	cbsdsqlro ${jailsysdir}/${jname}/local.sqlite SELECT nic_order,nic_driver,nic_slot,nic_type,nic_parent,nic_hwaddr FROM bhyvenic WHERE jname=\"${jname}\" | while read nic_order nic_driver nic_slot nic_type nic_parent nic_hwaddr; do
		[ -z "${nic_hwaddr}" ] && continue
		echo "nic_order${nic_id}=\"${nic_order}\";"
		echo "nic_driver${nic_id}=\"${nic_driver}\";"
		echo "nic_slot${nic_id}=\"${nic_slot}\";"
		echo "nic_type${nic_id}=\"${nic_type}\";"
		echo "nic_parent${nic_id}=\"${nic_parent}\";"
		echo "nic_hwaddr${nic_id}=\"${nic_hwaddr}\";"
		nic_id=$(( nic_id + 1 ))
	done || err 1 "${N1_COLOR}Error while create nic map${N0_COLOR}"
fi

#finally set jname
echo "jname=\"${jname}\""

# exit code 0 is nessesary for dot()
exit 0
