/* Machine generated file -- Do NOT edit */

#include "butc.h"

#define TSK_STAT_FIRST 0x1 /* get id of first task */
#define TSK_STAT_END 0x2 /* no more tasks */
#define TSK_STAT_NOTFOUND 0x4 /* couldn't find task id requested */
#define TSK_STAT_XBSA 0x10 /* An XBSA server */
#define TSK_STAT_ADSM 0x20 /* An ADSM XBSA server */
static afs_int32 _TC_PerformDump(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	struct tc_dumpInterface tcdiPtr;
	tc_dumpArray dumps;
	afs_int32 dumpID;



	dumps.tc_dumpArray_val = 0;
	dumps.tc_dumpArray_len = 0;

	if ((!xdr_tc_dumpInterface(z_xdrs, &tcdiPtr))
	     || (!xdr_tc_dumpArray(z_xdrs, &dumps))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_PerformDump(z_call, &tcdiPtr, &dumps, &dumpID);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_int32(z_xdrs, &dumpID)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	z_xdrs->x_op = XDR_FREE;
	if (!xdr_tc_dumpArray(z_xdrs, &dumps)) goto fail1;
	return z_result;
fail1:
	return RXGEN_SS_XDRFREE;
}

static afs_int32 _TC_PerformRestore(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	char * dumpSetName=(char *)0;
	tc_restoreArray restores;
	afs_int32 dumpID;


	restores.tc_restoreArray_val = 0;
	restores.tc_restoreArray_len = 0;

	if ((!xdr_string(z_xdrs, &dumpSetName, TC_MAXNAMELEN))
	     || (!xdr_tc_restoreArray(z_xdrs, &restores))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_PerformRestore(z_call, dumpSetName, &restores, &dumpID);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_int32(z_xdrs, &dumpID)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	z_xdrs->x_op = XDR_FREE;
	if (!xdr_string(z_xdrs, &dumpSetName, TC_MAXNAMELEN)) goto fail1;
	if (!xdr_tc_restoreArray(z_xdrs, &restores)) goto fail1;
	return z_result;
fail1:
	return RXGEN_SS_XDRFREE;
}

static afs_int32 _TC_LabelTape(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	struct tc_tapeLabel label;
	afs_uint32 taskId;




	if ((!xdr_tc_tapeLabel(z_xdrs, &label))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_LabelTape(z_call, &label, &taskId);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_uint32(z_xdrs, &taskId)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	return z_result;
}

static afs_int32 _TC_ReadLabel(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	struct tc_tapeLabel label;
	afs_uint32 taskId;



	z_result = STC_ReadLabel(z_call, &label, &taskId);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_tc_tapeLabel(z_xdrs, &label))
	     || (!xdr_afs_uint32(z_xdrs, &taskId)))
		z_result = RXGEN_SS_MARSHAL;
	return z_result;
}

static afs_int32 _TC_ScanDumps(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_int32 addDbFlag;
	afs_uint32 taskId;




	if ((!xdr_afs_int32(z_xdrs, &addDbFlag))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_ScanDumps(z_call, addDbFlag, &taskId);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_uint32(z_xdrs, &taskId)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	return z_result;
}

static afs_int32 _TC_TCInfo(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	struct tc_tcInfo tciptr;



	z_result = STC_TCInfo(z_call, &tciptr);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_tc_tcInfo(z_xdrs, &tciptr)))
		z_result = RXGEN_SS_MARSHAL;
	return z_result;
}

static afs_int32 _TC_SaveDb(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_uint32 archiveTime;
	afs_uint32 taskId;




	if ((!xdr_afs_uint32(z_xdrs, &archiveTime))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_SaveDb(z_call, archiveTime, &taskId);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_uint32(z_xdrs, &taskId)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	return z_result;
}

static afs_int32 _TC_RestoreDb(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_uint32 taskId;



	z_result = STC_RestoreDb(z_call, &taskId);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_uint32(z_xdrs, &taskId)))
		z_result = RXGEN_SS_MARSHAL;
	return z_result;
}

static afs_int32 _TC_EndStatus(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_uint32 taskId;




	if ((!xdr_afs_uint32(z_xdrs, &taskId))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_EndStatus(z_call, taskId);
fail:
	return z_result;
}

static afs_int32 _TC_GetStatus(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_uint32 taskId;
	struct tciStatusS statusPtr;




	if ((!xdr_afs_uint32(z_xdrs, &taskId))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_GetStatus(z_call, taskId, &statusPtr);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_tciStatusS(z_xdrs, &statusPtr)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	return z_result;
}

static afs_int32 _TC_RequestAbort(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_uint32 taskId;




	if ((!xdr_afs_uint32(z_xdrs, &taskId))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_RequestAbort(z_call, taskId);
fail:
	return z_result;
}

static afs_int32 _TC_ScanStatus(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_uint32 taskId, flags;
	struct tciStatusS statusPtr;




	if ((!xdr_afs_uint32(z_xdrs, &taskId))
	     || (!xdr_afs_uint32(z_xdrs, &flags))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_ScanStatus(z_call, &taskId, &statusPtr, &flags);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_uint32(z_xdrs, &taskId))
	     || (!xdr_tciStatusS(z_xdrs, &statusPtr))
	     || (!xdr_afs_uint32(z_xdrs, &flags)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	return z_result;
}

static afs_int32 _TC_DeleteDump(struct rx_call *z_call, XDR *z_xdrs)
{
	afs_int32 z_result;
	afs_uint32 aDumpId;
	afs_uint32 taskId;




	if ((!xdr_afs_uint32(z_xdrs, &aDumpId))) {
		z_result = RXGEN_SS_UNMARSHAL;
		goto fail;
	}

	z_result = STC_DeleteDump(z_call, aDumpId, &taskId);
	z_xdrs->x_op = XDR_ENCODE;
	if ((!xdr_afs_uint32(z_xdrs, &taskId)))
		z_result = RXGEN_SS_MARSHAL;
fail:
	return z_result;
}



static afs_int32 (*StubProcsArray0[])(struct rx_call *z_call, XDR *z_xdrs) = {_TC_PerformDump, _TC_PerformRestore, _TC_LabelTape, _TC_ReadLabel, _TC_ScanDumps, _TC_TCInfo, _TC_SaveDb, _TC_RestoreDb, _TC_EndStatus, _TC_GetStatus, _TC_RequestAbort, _TC_ScanStatus, _TC_DeleteDump};

int TC_ExecuteRequest(register struct rx_call *z_call)
{
	int op;
	XDR z_xdrs;
	afs_int32 z_result;

	xdrrx_create(&z_xdrs, z_call, XDR_DECODE);
	if (!xdr_int(&z_xdrs, &op))
		z_result = RXGEN_DECODE;
	else if (op < TC_LOWEST_OPCODE || op > TC_HIGHEST_OPCODE)
		z_result = RXGEN_OPCODE;
	else
		z_result = (*StubProcsArray0[op - TC_LOWEST_OPCODE])(z_call, &z_xdrs);
	return hton_syserr_conv(z_result);
}
