#!/usr/local/bin/cbsd
#v11.1.6
globalconf="${workdir}/cbsd.conf";
CBSDMODULE="jail"
MYARG="jname"
MYOPTARG="sharedfs"
MYDESC="Force unmount and cleanup for offline jail"

# Cleanup all items of broken jail
. ${subr}
. ${system}
. ${mdtools}
. ${strings}

sharedfs=0

init $*

. ${jrcconf}
[ $? -eq 1 ] && return 0 #only for registered jails

# remove zombie jail
if [ "${jid}" != "0" ]; then
	/usr/sbin/jail -r ${jid}
	 ${miscdir}/sqlcli ${dbdir}/local.sqlite "UPDATE jails SET jid=\"0\" WHERE jname=\"${jname}\""
fi

[ "${mdsize}" != "0" ] && MDFILE=$( eval find_md_by_mountpath ${data} )
[ ${baserw} -eq 1 ] && path=${data}

rootflags=

#test for zfs mounted in baserw=1
if [ ${baserw} -eq 1 ]; then
	case ${zfsfeat} in
		1)
			. ${zfstool}
			zfsmnt ${data}
			if [ $? -eq 1 ]; then
				rootflags="no_unmount_root"
			fi
		;;
	esac
fi

umount_cdirs ${path} ${rootflags}
[ "${mdsize}" != "0" -a -n "${MDFILE}" ] && unmountmd md=${MDFILE}

jaillock="${jailsysdir}/${jname}/locked"
if [ ${sharedfs} -eq 0 ]; then
	[ -f "${jaillock}" ] && /bin/rm -f ${jaillock}
fi

# vnet cleanup
if [ "${vnet}" = "1" ]; then
	# for vnet we can make another action
	. ${vimageconf}

	for i in $( /usr/bin/seq 0 16 ); do
		myepair=
		myepair=$( get_my_device epair ${jname}-eth${i} )
		[ -z "${myepair}" ] && continue
		/sbin/ifconfig ${myepair} >/dev/null 2>&1
		if [ $? -eq 0 ]; then
			${ECHO} "${MAGENTA}jcleanup: destroy epair for ${jname}: ${GREEN}${myepair}${NORMAL}"
			/sbin/ifconfig ${myepair} destroy
		fi
	done
fi
