ClRcT clXdrMarshallClCpmNodeConfigT_4_0_0(void* pGenVar, ClBufferHandleT msg, ClUint32T isDelete)
{
    ClCpmNodeConfigT_4_0_0* pVar = (ClCpmNodeConfigT_4_0_0*)pGenVar;
    ClRcT rc         = CL_OK;
    ClUint32T length = 0;    

    if ((void*)0 == pVar)
    {
        clXdrMarshallClUint32T(&length, msg, 0);
    }
    else
    {
        length = 1;
        clXdrMarshallClUint32T(&length, msg, 0);

    rc = clXdrMarshallArrayClCharT(pVar->nodeName, 256,msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallSaNameT(&(pVar->nodeType),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallSaNameT(&(pVar->nodeIdentifier),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallSaNameT(&(pVar->nodeMoIdStr),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallArrayClCharT(pVar->cpmType, 256,msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    }

    return rc;
}
ClRcT clXdrMarshallClNameT(void* pGenVar, ClBufferHandleT msg, ClUint32T isDelete)
{
    ClNameT* pVar = (ClNameT*)pGenVar;
    ClRcT rc;

    if ((void*)0 == pVar)
    {
        return CL_XDR_RC(CL_ERR_NULL_POINTER);
    }
    
    if(pVar->length >= CL_MAX_NAME_LENGTH)
        pVar->length = CL_MAX_NAME_LENGTH;

    rc = clXdrMarshallClUint16T(&(pVar->length),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallArrayClCharT(pVar->value, pVar->length, msg, isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    return rc;
}
ClRcT clXdrMarshallClCpmCompLAUpdateT_4_0_0(void* pGenVar, ClBufferHandleT msg, ClUint32T isDelete)
{
    ClCpmCompLAUpdateT_4_0_0* pVar = (ClCpmCompLAUpdateT_4_0_0*)pGenVar;
    ClRcT rc         = CL_OK;
    ClUint32T length = 0;    

    if ((void*)0 == pVar)
    {
        clXdrMarshallClUint32T(&length, msg, 0);
    }
    else
    {
        length = 1;
        clXdrMarshallClUint32T(&length, msg, 0);

    rc = clXdrMarshallArrayClCharT(pVar->compName, CL_MAX_NAME_LENGTH,msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClIocAddressIDLT_4_0_0(&(pVar->logicalAddress),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    }

    return rc;
}
ClRcT
clDebugContexDetailsPack(ClHandleDatabaseHandleT  hHandleDB,
                         ClHandleT                handle,
                         ClPtrT                   pData)
{
    ClRcT              rc          = CL_OK;
    ClBufferHandleT    outMsgHdl   = (ClBufferHandleT) pData;
    ClDebugFuncGroupT  *pFuncGroup = NULL;
    ClUint32T          i           = 0;

    rc = clHandleCheckout(hHandleDB, handle, (void *) &pFuncGroup); 
    if( CL_OK != rc )
    {
        CL_DEBUG_PRINT(CL_DEBUG_ERROR, ("clHandleCheckout(): rc[0x %x]", rc));
        return rc;
    }

    for (i = 0; i < pFuncGroup->numFunc; i++)
    {
        rc = clXdrMarshallArrayClCharT(pFuncGroup->pFuncDescList[i].funcName,
                                       CL_DEBUG_FUNC_NAME_LEN,
                                       outMsgHdl,0);
        if (CL_OK != rc)
        {
            clHandleCheckin(hHandleDB, handle);
            return rc;
        }

        rc = clXdrMarshallArrayClCharT(pFuncGroup->pFuncDescList[i].funcHelp,
                                       CL_DEBUG_FUNC_HELP_LEN,
                                       outMsgHdl,0);
        
        if (CL_OK != rc)
        {
            clHandleCheckin(hHandleDB, handle);
            return rc;
        }
    }

    clHandleCheckin(hHandleDB, handle);

    return rc;
}
static ClRcT clDebugResponseMarshall(ClCharT *resp, ClRcT retCode, ClBufferHandleT outMsgHdl)
{
    ClRcT rc = CL_OK;
    if(resp && outMsgHdl)
    {
        ClUint32T i = strlen(resp);
        rc = clXdrMarshallClUint32T(&i,outMsgHdl,0);
        if (CL_OK != rc)
        {
            return rc;
        }
        rc = clXdrMarshallArrayClCharT(resp,i,outMsgHdl,0);  
        if (CL_OK != rc)
        {
            return rc;
        }
        rc = clXdrMarshallClUint32T(&retCode, outMsgHdl, 0);
        if( CL_OK != rc )
        {
            return rc;
        }
    }
    return rc;
}
ClRcT clXdrMarshallClEoExecutionObjIDLT_4_0_0(void* pGenVar, ClBufferHandleT msg, ClUint32T isDelete)
{
    ClEoExecutionObjIDLT_4_0_0* pVar = (ClEoExecutionObjIDLT_4_0_0*)pGenVar;
    ClRcT rc         = CL_OK;
    ClUint32T length = 0;    

    if ((void*)0 == pVar)
    {
        clXdrMarshallClUint32T(&length, msg, 0);
    }
    else
    {
        length = 1;
        clXdrMarshallClUint32T(&length, msg, 0);

    rc = clXdrMarshallArrayClCharT(pVar->name, 32,msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint64T(&(pVar->eoID),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->pri),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->state),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->threadRunning),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->noOfThreads),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->eoInitDone),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->eoSetDoneCnt),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->refCnt),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->eoPort),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->appType),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->maxNoClients),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    }

    return rc;
}
ClRcT clXdrMarshallClCpmLocalInfoT_4_0_0(void* pGenVar, ClBufferHandleT msg, ClUint32T isDelete)
{
    ClCpmLocalInfoT_4_0_0* pVar = (ClCpmLocalInfoT_4_0_0*)pGenVar;
    ClRcT rc         = CL_OK;
    ClUint32T length = 0;    

    if ((void*)0 == pVar)
    {
        clXdrMarshallClUint32T(&length, msg, 0);
    }
    else
    {
        length = 1;
        clXdrMarshallClUint32T(&length, msg, 0);

    rc = clXdrMarshallArrayClCharT(pVar->nodeName, CL_MAX_NAME_LENGTH,msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClInt32T(&(pVar->nodeId),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClIocPhysicalAddressT_4_0_0(&(pVar->cpmAddress),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->status),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClVersionT(&(pVar->version),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->defaultBootLevel),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T(&(pVar->slotNumber),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallSaNameT(&(pVar->nodeType),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallSaNameT(&(pVar->nodeIdentifier),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallSaNameT(&(pVar->nodeMoIdStr),msg,isDelete);
    if (CL_OK != rc)
    {
        return rc;
    }

    }

    return rc;
}
ClRcT VDECL(clDebugGetContext)(ClEoDataT        data,
                               ClBufferHandleT  inMsgHdl,
                               ClBufferHandleT  outMsgHdl)
{
    ClRcT        rc         = CL_OK;
    ClDebugObjT  *pDebugObj = (ClDebugObjT *) data;
    ClVersionT   version    = {0};
    ClIocPhysicalAddressT srcAddr = {0};

    if ((NULL == pDebugObj) || (0 == outMsgHdl) || (0 == inMsgHdl))
    {
        clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_WARNING,CL_DEBUG_LIB_CLIENT,
                   CL_LOG_MESSAGE_1_INVALID_PARAMETER,"Invalid debugObj");
        return CL_DEBUG_RC(CL_ERR_INVALID_PARAMETER);
    }

    /*
     * Enable the comp status for the debug client to avoid
     * response failures from node representative in case the bit isnt enabled for cases when
     * the comp arrival from peer noderep. reaches late.
     */
    if(clRmdSourceAddressGet(&srcAddr) == CL_OK)
        clIocCompStatusEnable(srcAddr);
    
    rc = clXdrUnmarshallClVersionT(inMsgHdl,&version);
    if (CL_OK != rc)
    {
        return rc;
    }
    rc = clVersionVerify(&versionDatabase,&version);
    if (CL_OK != rc)
    {
        clXdrMarshallClVersionT(&version,outMsgHdl,0);
        return rc;
    }

    rc = clXdrMarshallArrayClCharT(pDebugObj->compName,
                                   CL_DEBUG_COMP_NAME_LEN,
                                   outMsgHdl,0);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallArrayClCharT(pDebugObj->compPrompt,
                                   CL_DEBUG_COMP_PROMPT_LEN,
                                   outMsgHdl,0);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clXdrMarshallClUint32T((&pDebugObj->numFunc),
                                outMsgHdl,0);
    if (CL_OK != rc)
    {
        return rc;
    }

    rc = clHandleWalk(pDebugObj->hDebugFnDB, clDebugContexDetailsPack,
                      (ClPtrT) outMsgHdl);
    if( CL_OK != rc )
    {
        return rc;
    }

    return rc;
}