ANSC_HANDLE CosaProcStatusCreate()
{
    PCOSA_DATAMODEL_PROCSTATUS p_info = NULL;

    p_info = AnscAllocateMemory(sizeof(COSA_DATAMODEL_PROCSTATUS));
    AnscZeroMemory(p_info, sizeof(COSA_DATAMODEL_PROCSTATUS));
    p_info->pProcTable = NULL;

    return p_info;
}
ANSC_STATUS
CcspCwmpStunmoResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                         returnStatus        = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_STUN_MANAGER_OBJECT      pMyObject           = (PCCSP_CWMP_STUN_MANAGER_OBJECT  )hThisObject;
    PCCSP_CWMP_STUN_MANAGER_PROPERTY    pProperty           = (PCCSP_CWMP_STUN_MANAGER_PROPERTY)&pMyObject->Property;
    PCCSP_CWMP_STUN_INFO                pCcspCwmpStunInfo   = (PCCSP_CWMP_STUN_INFO            )&pMyObject->CcspCwmpStunInfo;

    AnscZeroMemory(pProperty, sizeof(CCSP_CWMP_STUN_MANAGER_PROPERTY));

    pProperty->ClientAddr.Value = 0;
    pProperty->ClientPort       = CWMP_PORT;

    AnscZeroMemory(pCcspCwmpStunInfo, sizeof(CCSP_CWMP_STUN_INFO));
    pCcspCwmpStunInfo->STUNServerPort = STUN_PORT;

    return  ANSC_STATUS_SUCCESS;
}
/**********************************************************************

    prototype:

        ANSC_HANDLE
        CcspCreateNamespaceComponent
            (
                char*                       pContainerName
            );

    description:

        This function is called to create a NamespaceComponent object

    argument:   char*                       pContainerName

    return:     The NamespaceComponent handle;

**********************************************************************/
ANSC_HANDLE
CcspCreateNamespaceComponent
    (
        char*                       pContainerName
    )
{
    PCCSP_NAMESPACE_COMP_OBJECT         pThisObject = (PCCSP_NAMESPACE_COMP_OBJECT)NULL;

    pThisObject = (PCCSP_NAMESPACE_COMP_OBJECT)
        AnscAllocateMemory(sizeof(CCSP_NAMESPACE_COMP_OBJECT));
    

    if( pThisObject == NULL)
    {
        return NULL;
    }
    /*
     * Initialize the common variables and functions.
     */

    pThisObject->pContainerName                     = pContainerName;

    AnscZeroMemory(pThisObject->pCompName, CCSP_MAXI_COMPONENT_NAME_LENGTH);
    AnscZeroMemory(pThisObject->pDbusPath, CCSP_MAXI_DBUS_PATH_LENGTH);
    AnscZeroMemory(pThisObject->pPrefix,   CCSP_MAXI_SUBSYSTEM_PREFIX);

    AnscQueueInitializeHeader(&pThisObject->ParamspaceQueue);

    pThisObject->UnregisterNamespace                = CcspNsCompUnregisterNamespace;
    pThisObject->GetNamespaceCount                  = CcspNsCompGetNamespaceCount;
    pThisObject->GetNamespaceStringArray            = CcspNsCompGetNamespaceStringArray;
    pThisObject->GetNamespaceStructArray            = CcspNsCompGetNamespaceStructArray;
    pThisObject->BuildFromNamespaceStringArray      = CcspNsCompBuildFromNamespaceStringArray;
    pThisObject->BuildFromNamespaceStructArray      = CcspNsCompBuildFromNamespaceStructArray;
    pThisObject->IsObjectSupported                  = CcspNsCompIsObjectSupported;
    pThisObject->DumpObject                         = CcspNsCompDumpObject;
    pThisObject->CleanAll                           = CcspNsCompCleanAll;

    return (ANSC_HANDLE)pThisObject;
}
ANSC_STATUS
DslhCpecoResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    PDSLH_CPE_CONTROLLER_OBJECT     pMyObject    = (PDSLH_CPE_CONTROLLER_OBJECT  )hThisObject;
    PDSLH_CPE_CONTROLLER_PROPERTY   pProperty    = (PDSLH_CPE_CONTROLLER_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty, sizeof(DSLH_CPE_CONTROLLER_PROPERTY));

    return  ANSC_STATUS_SUCCESS;
}
Example #5
0
ANSC_STATUS
PsmFloResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PPSM_FILE_LOADER_OBJECT         pMyObject    = (PPSM_FILE_LOADER_OBJECT  )hThisObject;
    PPSM_FILE_LOADER_PROPERTY       pProperty    = (PPSM_FILE_LOADER_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty, sizeof(PSM_FILE_LOADER_PROPERTY));
	CcspTraceInfo(("Object Property is Reset\n"));
    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpTroSetServerName
(
    ANSC_HANDLE                 hThisObject,
    char*                       name
)
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_TRANS_RECORD_OBJECT       pMyObject    = (PHTTP_TRANS_RECORD_OBJECT)hThisObject;

    AnscZeroMemory(pMyObject->ServerName, ANSC_DOMAIN_NAME_SIZE);
    AnscCopyString(pMyObject->ServerName, name                 );

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CcspCwmpCpecoResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    PCCSP_CWMP_CPE_CONTROLLER_OBJECT     pMyObject    = (PCCSP_CWMP_CPE_CONTROLLER_OBJECT  )hThisObject;
    PCCSP_CWMP_CPE_CONTROLLER_PROPERTY   pProperty    = (PCCSP_CWMP_CPE_CONTROLLER_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty, sizeof(CCSP_CWMP_CPE_CONTROLLER_PROPERTY));

    pProperty->bStartCwmpRightAway = FALSE;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
WebVhoSetHostName
    (
        ANSC_HANDLE                 hThisObject,
        char*                       name
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PWEB_VIRTUAL_HOST_OBJECT        pMyObject    = (PWEB_VIRTUAL_HOST_OBJECT  )hThisObject;
    PWEB_VIRTUAL_HOST_PROPERTY      pProperty    = (PWEB_VIRTUAL_HOST_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty->HostName, WEB_MAX_HOST_NAME_SIZE);
    AnscCopyString(pProperty->HostName, name                  );

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
DslhWmpdoResetProperty
(
    ANSC_HANDLE                 hThisObject
)
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PDSLH_WMP_DATABASE_OBJECT       pMyObject    = (PDSLH_WMP_DATABASE_OBJECT  )hThisObject;
    PDSLH_WMP_DATABASE_PROPERTY     pProperty    = (PDSLH_WMP_DATABASE_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty, sizeof(DSLH_WMP_DATABASE_PROPERTY));

    pProperty->bMonitorEnabled      = TRUE;
    pProperty->MonitorTimerInterval = DSLH_DEF_MONITOR_TIMER_INTERVAL;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscSstoStsGetLocalTime
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hCalendar
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PANSC_SIMPLE_SYS_TIME_OBJECT    pMyObject         = (PANSC_SIMPLE_SYS_TIME_OBJECT)hThisObject;
    PANSC_UNIVERSAL_TIME            pCalendar         = (PANSC_UNIVERSAL_TIME   )hCalendar;
    LONG                            lTimeH            = 0;
    ULONG                           ulTimeI           = 0;
    ULONG                           ulTimeF           = 0;

    /*
    AnscTrace("AnscSstoStsGetLocalTime...!\n");
    */
    AnscZeroMemory(hCalendar, sizeof(ANSC_UNIVERSAL_TIME));


    /*
     * get current seconds, it starts from 00:00 1 Jan 1900 GMT 
     * instead of from 00:00  1 Jan 1970 GMT 
     * which corresponds to 2,208,988,800 seconds from 
     * midnight on January first 1900
     */
    ulTimeI = 
        pMyObject->GetCurrSecond( hThisObject);

    /*
     * take into account of the offset between the configured calendar time and the calculated
     * calendar time. 
     */
    ulTimeI += pMyObject->iTimeOffset;

    returnStatus =
        pMyObject->SecondToCalendar
            ( 
                hThisObject,
                ulTimeI,
                hCalendar
            );

    return returnStatus;
}
ANSC_STATUS
HttpWcsoSetPeerName
    (
        ANSC_HANDLE                 hThisObject,
        char*                       name
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_WEBC_SESSION_OBJECT       pMyObject    = (PHTTP_WEBC_SESSION_OBJECT  )hThisObject;
    PANSC_SIMPLE_CLIENT_TCP_OBJECT  pScto        = (PANSC_SIMPLE_CLIENT_TCP_OBJECT)pMyObject->hTcpSimpleClient;
    PHTTP_WEBC_SESSION_PROPERTY     pProperty    = (PHTTP_WEBC_SESSION_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty->PeerName, ANSC_DOMAIN_NAME_SIZE);
    AnscCopyString(pProperty->PeerName, name                 );
    _ansc_strncpy(pScto->HostName, name, WEB_MAX_HOST_NAME_SIZE);
    pScto->HostName[WEB_MAX_HOST_NAME_SIZE] = 0;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
DslhObjroAddObjRecord
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hObjRecord
    )
{
    ANSC_STATUS                     returnStatus    = ANSC_STATUS_SUCCESS;
    PDSLH_OBJ_RECORD_OBJECT         pMyObject       = (PDSLH_OBJ_RECORD_OBJECT)hThisObject;
    PDSLH_OBJ_ENTITY_OBJECT         pObjEntity      = (PDSLH_OBJ_ENTITY_OBJECT)pMyObject->hDslhObjEntity;
    PDSLH_OBJ_RECORD_OBJECT         pChildObjRecord = (PDSLH_OBJ_RECORD_OBJECT)hObjRecord;
    char                            next_ins_name[16];

    AnscQueuePushEntry(&pMyObject->ObjroQueue, &pChildObjRecord->Linkage);

    if ( pObjEntity->ObjDescr && (pObjEntity->ObjDescr->Type == DSLH_CWMP_OBJECT_TYPE_table) )
    {
        pMyObject->NextInstanceNumber = (ULONG)_ansc_atoi(pChildObjRecord->LastName);

        do
        {
            pMyObject->NextInstanceNumber++;

            if ( pMyObject->NextInstanceNumber == 0 )
            {
                pMyObject->NextInstanceNumber = 1;
            }

            AnscZeroMemory(next_ins_name, 16);
            _ansc_itoa(pMyObject->NextInstanceNumber, next_ins_name, 10);

            pChildObjRecord =
                (PDSLH_OBJ_RECORD_OBJECT)pMyObject->GetObjRecord
                    (
                        (ANSC_HANDLE)pMyObject,
                        next_ins_name
                    );
        }
        while ( pChildObjRecord );
    }

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
Bmc2ComtoResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBMC2_COM_TERMINAL_OBJECT       pMyObject    = (PBMC2_COM_TERMINAL_OBJECT  )hThisObject;
    PBMC2_COM_TERMINAL_PROPERTY     pProperty    = (PBMC2_COM_TERMINAL_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty, sizeof(BMC2_COM_TERMINAL_PROPERTY));

    pProperty->UserPermission  = 0;
    pProperty->MaxLineNumber   = 45;
    pProperty->MaxColumnNumber = 80;
    pProperty->bReadOnly       = FALSE;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_HANDLE
CcspCwmppoGetPeriodicInformTime
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus        = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_PROCESSOR_OBJECT      pMyObject           = (PCCSP_CWMP_PROCESSOR_OBJECT  )hThisObject;
    PCCSP_CWMP_CPE_CONTROLLER_OBJECT pCcspCwmpCpeController  = (PCCSP_CWMP_CPE_CONTROLLER_OBJECT )pMyObject->hCcspCwmpCpeController;
    PCCSP_CWMP_PROCESSOR_PROPERTY    pProperty           = (PCCSP_CWMP_PROCESSOR_PROPERTY)&pMyObject->Property;
    PANSC_UNIVERSAL_TIME            pInformTime          = NULL;
    PANSC_UNIVERSAL_TIME            pCalendarTime       = NULL;
    char*                           pPeriodicInformTime = NULL;

	pInformTime = (PANSC_UNIVERSAL_TIME)CcspTr069PaAllocateMemory(sizeof(ANSC_UNIVERSAL_TIME));

	if ( !pInformTime ) return NULL;
    AnscZeroMemory(pInformTime, sizeof(ANSC_UNIVERSAL_TIME));
    
	pPeriodicInformTime = 
        CcspManagementServer_GetPeriodicInformTimeStr
            (
                pCcspCwmpCpeController->PANameWithPrefix
            );

    if ( pPeriodicInformTime && AnscSizeOfString(pPeriodicInformTime) != 0 )
    {
        pCalendarTime = CcspStringToCalendarTime(pPeriodicInformTime);

        if ( pCalendarTime )
        {
            *pInformTime = *pCalendarTime;
            CcspTr069PaFreeMemory(pCalendarTime);
        }
    }

    if ( pPeriodicInformTime )
    {
        CcspTr069PaFreeMemory(pPeriodicInformTime);
    }

    return  (ANSC_HANDLE)pInformTime;
}
ANSC_STATUS
BwrmPmoResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBWRM_PAGE_MANAGER_OBJECT       pMyObject    = (PBWRM_PAGE_MANAGER_OBJECT  )hThisObject;
    PBWRM_PAGE_MANAGER_PROPERTY     pProperty    = (PBWRM_PAGE_MANAGER_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty, sizeof(BWRM_PAGE_MANAGER_PROPERTY));

    pProperty->bCacheEnabled   = TRUE;
    pProperty->CacheEntryCount = BWRM_DEF_CACHE_ENTRY_COUNT;
    pProperty->CacheMemorySize = BWRM_DEF_CACHE_MEMORY_SIZE;
    pProperty->CacheTimeout    = BWRM_DEF_CACHE_TIMEOUT;

    return  ANSC_STATUS_SUCCESS;
}
int
CcspTr069PaSsp_InitCcspCwmpCfgIf(ANSC_HANDLE hCcspCwmpCpeController)
{
    AnscZeroMemory(&ccspCwmpCfgIf, sizeof(CCSP_CWMP_CFG_INTERFACE));
    ccspCwmpCfgIf.hOwnerContext  = hCcspCwmpCpeController;
    ccspCwmpCfgIf.Size           = sizeof(CCSP_CWMP_CFG_INTERFACE);

    ccspCwmpCfgIf.NoRPCMethods              	= CcspTr069PaSsp_CcspCwmpCfgNoRPCMethods;
    ccspCwmpCfgIf.GetDevDataModelVer        	= CcspTr069PaSsp_CcspCwmpCfgGetDevDataModelVersion;

	ccspCwmpCfgIf.GetHttpSessionIdleTimeout 	= CcspTr069PaSsp_GetHttpSessionIdleTimeout;
	ccspCwmpCfgIf.GetCwmpRpcTimeout				= CcspTr069PaSsp_GetCwmpRpcTimeout;

	ccspCwmpCfgIf.GetCustomForcedInformParams	= CcspTr069PaSsp_GetCustomForcedInformParams;

	//Custom call
	CcspTr069PaSsp_InitCcspCwmpCfgIf_Custom(hCcspCwmpCpeController);

    return 0;
}
ANSC_STATUS
HttpWcsoResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PHTTP_WEBC_SESSION_OBJECT       pMyObject    = (PHTTP_WEBC_SESSION_OBJECT  )hThisObject;
    PHTTP_WEBC_SESSION_PROPERTY     pProperty    = (PHTTP_WEBC_SESSION_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty->PeerName, ANSC_DOMAIN_NAME_SIZE);

    pProperty->PeerAddr.Value = 0;
    pProperty->PeerPort       = HTTP_SERVER_PORT;
    pProperty->HostAddr.Value = 0;
    pProperty->HostPort       = 0;
    pProperty->SessionFlags   = 0;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
Bmc2ComtoSetUserIdentifier
    (
        ANSC_HANDLE                 hThisObject,
        char*                       pUserIdentifier
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBMC2_COM_TERMINAL_OBJECT       pMyObject    = (PBMC2_COM_TERMINAL_OBJECT  )hThisObject;
    PBMC2_COM_TERMINAL_PROPERTY     pProperty    = (PBMC2_COM_TERMINAL_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty->UserIdentifier, BMC2_MAX_USER_ID_SIZE);

    if ( pUserIdentifier )
    {
        AnscCopyString(pProperty->UserIdentifier, pUserIdentifier);
    }

    return  ANSC_STATUS_SUCCESS;
}
/**********************************************************************

    prototype:

    void*
    CcspCreateScalarHelper
        (
        );

    description:

        This function is called to create an object of "CCSP_SCALAR_HELPER_OBJECT".

    argument:   None

	return:     The handle of the object;

**********************************************************************/
void*
CcspCreateScalarHelper
	(
	)
{
	PCCSP_SCALAR_HELPER_OBJECT			pThisObject        = NULL;

	pThisObject = (PCCSP_SCALAR_HELPER_OBJECT)AnscAllocateMemory(sizeof(CCSP_SCALAR_HELPER_OBJECT));

	if( pThisObject == NULL)
	{
		return NULL;
	}

	AnscZeroMemory((void*)pThisObject, sizeof(CCSP_SCALAR_HELPER_OBJECT));

	pThisObject->pMibFilter		         = 0;
	pThisObject->bHasWritable	         = FALSE;
	pThisObject->uMaxOid		         = 0;
	pThisObject->uMinOid		         = 0;
	pThisObject->uOidLen                 = 0;
	pThisObject->uCacheTimeout           = 30;
	pThisObject->HandleRequestsCallback  = NULL;
	pThisObject->pCcspComp				 = NULL;
	pThisObject->pCcspPath				 = NULL;
	pThisObject->nCacheMibCount          = 0;

	pThisObject->LoadMibs        		 = CcspScalarHelperLoadMibs;
	pThisObject->Remove					 = CcspScalarHelperRemove;
	pThisObject->RegisterMibHandler		 = CcspScalarHelperRegisterMibHandler;
	pThisObject->RefreshCache            = CcspScalarHelperRefreshCache;
	pThisObject->ClearCache              = CcspScalarHelperClearCache;
	pThisObject->SetMibValues            = CcspScalarHelperSetMibValues;
	pThisObject->GetMibValues            = CcspScalarHelperGetMibValues;

    /* init the queues */
    AnscQueueInitializeHeader(&pThisObject->MibValueQueue);
    AnscQueueInitializeHeader(&pThisObject->MibObjQueue);

	return (void*)pThisObject;
}
ANSC_STATUS
CcspCwmppoResetProperty
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_PROCESSOR_OBJECT      pMyObject    = (PCCSP_CWMP_PROCESSOR_OBJECT  )hThisObject;
    PCCSP_CWMP_PROCESSOR_PROPERTY    pProperty    = (PCCSP_CWMP_PROCESSOR_PROPERTY)&pMyObject->Property;

    AnscZeroMemory(pProperty, sizeof(CCSP_CWMP_PROCESSOR_PROPERTY));

    pProperty->bInitialContact        = FALSE;
    pProperty->FirstTimeInterval      = 0;
    pProperty->FollowingInterval      = 0;

	pProperty->DefActiveNotifThrottle = 0;
	pProperty->LastActiveNotifTime    = 0;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
AnscDstoReset
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PANSC_DAEMON_SERVER_TCP_OBJECT  pMyObject    = (PANSC_DAEMON_SERVER_TCP_OBJECT)hThisObject;

    pMyObject->StartTime = 0;
    pMyObject->TccCount  = 0;
    pMyObject->MccCount  = 0;
    pMyObject->TrcCount  = 0;
    pMyObject->MrcCount  = 0;
    pMyObject->TscCount  = 0;
    pMyObject->MscCount  = 0;
    
#ifdef _ANSC_IPV6_COMPATIBLE_
    AnscZeroMemory(pMyObject->HostName, sizeof(pMyObject->HostName));
    
    if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET )
    {
        if ( pMyObject->pHostAddr2 )
        {
            _xskt_freeaddrinfo(pMyObject->pHostAddr2);
        }
    }
    else
    {
        if ( pMyObject->pHostAddr1 )
        {
            _ansc_freeaddrinfo(pMyObject->pHostAddr1);
        }
    }
#endif

    return  ANSC_STATUS_SUCCESS;
}
Example #22
0
/**********************************************************************

    prototype:

        BOOL
        CcspCrLoadDeviceProfile
            (
                ANSC_HANDLE                                 hCcspCr
            );

    description:

        This function is called to load device profile for CR.

    argument:   ANSC_HANDLE                                 hCcspCr
                the handle of CCSP CR component;

    return:     Succeeded or not;

**********************************************************************/
BOOL
CcspCrLoadDeviceProfile
    (
        ANSC_HANDLE                                 hCcspCr
    )
{
    PCCSP_CR_MANAGER_OBJECT         pMyObject          = (PCCSP_CR_MANAGER_OBJECT)hCcspCr;
    PCCSP_NAMESPACE_MGR_OBJECT      pNSMgr             = (PCCSP_NAMESPACE_MGR_OBJECT)pMyObject->hCcspNamespaceMgr;
    ANSC_HANDLE                     pFileHandle        = NULL;
    char*                           pXMLContent        = NULL;
    char*                           pBackContent       = NULL;
    ULONG                           uXMLLength         = 0;
    PANSC_XML_DOM_NODE_OBJECT       pXmlNode           = (PANSC_XML_DOM_NODE_OBJECT)NULL;
    PANSC_XML_DOM_NODE_OBJECT       pListNode          = (PANSC_XML_DOM_NODE_OBJECT)NULL;
    PANSC_XML_DOM_NODE_OBJECT       pChildNode         = (PANSC_XML_DOM_NODE_OBJECT)NULL;
    BOOL                            bStatus            = TRUE;
    ULONG                           uFileLength        = 0;
    ULONG                           uBufferSize        = 0;
    char                            buffer[512]        = { 0 };
    ULONG                           uLength            = 511;
    PCCSP_COMPONENT_INFO            pCompInfo          = (PCCSP_COMPONENT_INFO)NULL;

    /* load from the file */
    pFileHandle =
        AnscOpenFile
        (
            CCSP_CR_DEVICE_PROFILE_XML_FILE,
            ANSC_FILE_O_BINARY | ANSC_FILE_O_RDONLY,
            ANSC_FILE_S_IREAD
        );

    if( pFileHandle == NULL)
    {
        AnscTrace("Failed to load the file : '%s'\n", CCSP_CR_DEVICE_PROFILE_XML_FILE);

        return FALSE;
    }

    uFileLength = AnscGetFileSize( pFileHandle);

    pXMLContent = (char*)AnscAllocateMemory( uFileLength + 8);

    if( pXMLContent == NULL)
    {
        return FALSE;
    }

    uBufferSize = uFileLength + 8;

    if( AnscReadFile( pFileHandle, pXMLContent, &uBufferSize) != ANSC_STATUS_SUCCESS)
    {
        AnscFreeMemory(pXMLContent);

        return FALSE;
    }

    if( pFileHandle != NULL)
    {
        AnscCloseFile(pFileHandle);
    }

    /* parse the XML content */
    pBackContent = pXMLContent;

    pXmlNode = (PANSC_XML_DOM_NODE_OBJECT)
        AnscXmlDomParseString((ANSC_HANDLE)NULL, (PCHAR*)&pXMLContent, uBufferSize);

    AnscFreeMemory(pBackContent);

    if( pXmlNode == NULL)
    {
        AnscTraceWarning(("Failed to parse the CR profile file.\n"));

        return FALSE;
    }

    /* load CR name */
    pChildNode  = (PANSC_XML_DOM_NODE_OBJECT)
		AnscXmlDomNodeGetChildByName(pXmlNode, CCSP_CR_XML_NODE_crName); 

    if( pChildNode != NULL && pChildNode->GetDataString(pChildNode, NULL, buffer, &uLength) == ANSC_STATUS_SUCCESS && uLength > 0)
    {
        pMyObject->pCRName = AnscCloneString(buffer);
    }
    else
    {
        pMyObject->pCRName = AnscCloneString(CCSP_CR_NAME);
    }

    AnscTraceWarning(("CR Name: %s\n", pMyObject->pCRName));

#if 0
    /* load prefix name */
    /* Prefix will be set from command line instead */
    uLength            = 511;
    AnscZeroMemory(buffer, 512);

    pChildNode  = (PANSC_XML_DOM_NODE_OBJECT)
		AnscXmlDomNodeGetChildByName(pXmlNode, CCSP_CR_XML_NODE_prefix); 

    if( pChildNode != NULL && pChildNode->GetDataString(pChildNode, NULL, buffer, &uLength) == ANSC_STATUS_SUCCESS && uLength > 0)
    {
        pMyObject->pPrefix = AnscCloneString(buffer);

        pNSMgr->SubsysPrefix = AnscCloneString(buffer);

        AnscTraceWarning(("CR Prefix: %s\n", pMyObject->pPrefix));
    }
#endif

    /* get remote cr array */
    pListNode = (PANSC_XML_DOM_NODE_OBJECT)
		AnscXmlDomNodeGetChildByName(pXmlNode, CCSP_CR_XML_NODE_remote);

    if( pListNode != NULL)
    {
        pChildNode = (PANSC_XML_DOM_NODE_OBJECT)
		    AnscXmlDomNodeGetHeadChild(pListNode);

        while(pChildNode != NULL)
        {
            /* load remote cr information */
            if(!CcspCrLoadRemoteCRInfo(hCcspCr, (ANSC_HANDLE)pChildNode))
            {
                AnscTraceWarning(("Failed to load remote cr infor.\n"));
            }

            pChildNode = (PANSC_XML_DOM_NODE_OBJECT)
		        AnscXmlDomNodeGetNextChild(pListNode, pChildNode);
        }
    }


    /* get the component array node */
    pListNode = (PANSC_XML_DOM_NODE_OBJECT)
		AnscXmlDomNodeGetChildByName(pXmlNode, CCSP_CR_XML_NODE_components);

    if( pListNode != NULL)
    {
        pChildNode = (PANSC_XML_DOM_NODE_OBJECT)
		    AnscXmlDomNodeGetHeadChild(pListNode);

        while(pChildNode != NULL)
        {
            /* load component information */
            if(!CcspCrLoadComponentProfile(hCcspCr, (ANSC_HANDLE)pChildNode))
            {
                AnscTraceWarning(("Failed to load component profile.\n"));
            }

            pChildNode = (PANSC_XML_DOM_NODE_OBJECT)
		        AnscXmlDomNodeGetNextChild(pListNode, pChildNode);
        }
    }

    if( pXmlNode != NULL)
    {
        pXmlNode->Remove(pXmlNode);
    }


    /* create a Component Info for CR itself */
    pCompInfo = (PCCSP_COMPONENT_INFO)CcspCrAllocateMemory(sizeof(CCSP_COMPONENT_INFO));

    if( pCompInfo != NULL)
    {
        pCompInfo->pComponentName = CcspCrCloneString(CCSP_CR_NAME);
        pCompInfo->uVersion       = CCSP_CR_VERSION;
        pCompInfo->uStatus        = CCSP_Component_NotRegistered;

        AnscQueuePushEntry(&pMyObject->CompInfoQueue, &pCompInfo->Linkage);
    }

    return bStatus;
}
ANSC_STATUS
CcspCwmpAcscoInitialize
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PCCSP_CWMP_ACS_CONNECTION_OBJECT     pMyObject    = (PCCSP_CWMP_ACS_CONNECTION_OBJECT)hThisObject;

    /*
     * Until you have to simulate C++ object-oriented programming style with standard C, you don't
     * appreciate all the nice little things come with C++ language and all the dirty works that
     * have been done by the C++ compilers. Member initialization is one of these things. While in
     * C++ you don't have to initialize all the member fields inherited from the base class since
     * the compiler will do it for you, such is not the case with C.
     */
    AnscCoInitialize((ANSC_HANDLE)pMyObject);

    /*
     * Although we have initialized some of the member fields in the "create" member function, we
     * repeat the work here for completeness. While this simulation approach is pretty stupid from
     * a C++/Java programmer perspective, it's the best we can get for universal embedded network
     * programming. Before we develop our own operating system (don't expect that to happen any
     * time soon), this is the way things gonna be.
     */
    pMyObject->Oid                            = CCSP_CWMP_ACS_CONNECTION_OID;
    pMyObject->Create                         = CcspCwmpAcscoCreate;
    pMyObject->Remove                         = CcspCwmpAcscoRemove;
    pMyObject->EnrollObjects                  = CcspCwmpAcscoEnrollObjects;
    pMyObject->Initialize                     = CcspCwmpAcscoInitialize;

    pMyObject->hCcspCwmpSession               = NULL;
    pMyObject->AcsUrl                         = NULL;
    pMyObject->Username                       = NULL;
    pMyObject->Password                       = NULL;
    pMyObject->AuthHeaderValue                = NULL;
    pMyObject->bActive                        = FALSE;

    AnscZeroMemory(pMyObject->Cookies, CCSP_CWMP_ACSCO_MAX_COOKIE * sizeof(char *));
    pMyObject->NumCookies                     = 0;

    pMyObject->GetHttpSimpleClient            = CcspCwmpAcscoGetHttpSimpleClient;
    pMyObject->GetCcspCwmpSession             = CcspCwmpAcscoGetCcspCwmpSession;
    pMyObject->SetCcspCwmpSession             = CcspCwmpAcscoSetCcspCwmpSession;
    pMyObject->GetAcsUrl                      = CcspCwmpAcscoGetAcsUrl;
    pMyObject->SetAcsUrl                      = CcspCwmpAcscoSetAcsUrl;
    pMyObject->GetUsername                    = CcspCwmpAcscoGetUsername;
    pMyObject->SetUsername                    = CcspCwmpAcscoSetUsername;
    pMyObject->GetPassword                    = CcspCwmpAcscoGetPassword;
    pMyObject->SetPassword                    = CcspCwmpAcscoSetPassword;
    pMyObject->Reset                          = CcspCwmpAcscoReset;

    pMyObject->Connect                        = CcspCwmpAcscoConnect;
    pMyObject->Request                        = CcspCwmpAcscoRequest;
    pMyObject->RequestOnly                    = CcspCwmpAcscoRequestOnly;
    pMyObject->Close                          = CcspCwmpAcscoClose;

    pMyObject->HttpBspPolish                  = CcspCwmpAcscoHttpBspPolish;
    pMyObject->HttpBspBrowse                  = CcspCwmpAcscoHttpBspBrowse;
    pMyObject->HttpBspNotify                  = CcspCwmpAcscoHttpBspNotify;

    pMyObject->HttpGetCredential              = CcspCwmpAcscoHttpGetCredential;

    pMyObject->AddCookie                      = CcspCwmpAcscoHttpAddCookie;
    pMyObject->RemoveCookies                  = CcspCwmpAcscoHttpRemoveCookies;
    pMyObject->FindCookie                     = CcspCwmpAcscoHttpFindCookie;
    pMyObject->DelCookie                      = CcspCwmpAcscoHttpDelCookie;

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CcspCwmpAcscoHttpBspPolish
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hBmoReq,
        ANSC_HANDLE                 hReqContext
    )
{
    PCCSP_CWMP_ACS_CONNECTION_OBJECT pMyObject       = (PCCSP_CWMP_ACS_CONNECTION_OBJECT)hThisObject;
    PANSC_ACS_INTERN_HTTP_CONTENT    pHttpGetReq     = (PANSC_ACS_INTERN_HTTP_CONTENT)hReqContext;
    ANSC_STATUS                      returnStatus    = ANSC_STATUS_SUCCESS;
    PHTTP_BMO_REQ_OBJECT             pBmoReqObj      = (PHTTP_BMO_REQ_OBJECT)hBmoReq;
    char                             pBuffer[64]     = { 0 };
    ULONG                            i, len          = 0;

    /* add Authorization header - last good one */
    if ( pMyObject->AuthHeaderValue )
    {
        pBmoReqObj->SetHeaderValueByName((ANSC_HANDLE)pBmoReqObj, "Authorization", pMyObject->AuthHeaderValue);
    }

    /*
     * If there's a cookie returned, add the cookie
     */
    for ( i = 0; i < pMyObject->NumCookies; i ++ )
    {
    	if ( pMyObject->Cookies[i] == NULL )
    		break;

    	len += _ansc_strlen(pMyObject->Cookies[i]);
    }

    if ( pMyObject->NumCookies == 0 )
    {
        CcspTr069PaTraceDebug(("No Cookie will be added.\n"));
    }
    else
    {
    	char *cookies = (char *)CcspTr069PaAllocateMemory(len + pMyObject->NumCookies*2);

    	if (cookies) {
        	AnscZeroMemory(cookies, len + pMyObject->NumCookies*2);

            for ( i = 0; i < pMyObject->NumCookies; i ++ )
            {
            	if ( pMyObject->Cookies[i] == NULL )
            		break;

            	_ansc_strcat(cookies, pMyObject->Cookies[i]);
            	if ( i < pMyObject->NumCookies - 1 )
            		_ansc_strcat(cookies, "; ");
            }

            pBmoReqObj->SetHeaderValueByName
				(
					(ANSC_HANDLE)pBmoReqObj,
					"Cookie",
					cookies
				);

			CcspTr069PaTraceDebug(("Add Cookie into message: %s\n", cookies));
			CcspTr069PaFreeMemory(cookies);
    	}

    }

    /* When there is more than one envelope in a single HTTP Request,
     * when there is a SOAP response in an HTTP Request, or when there is a
     * SOAP Fault response in an HTTP Request, the SOAPAction header in the
     * HTTP Request MUST have no value (with no quotes), indicating that this
     * header provides no information as to the intent of the message."
     */
    if( pHttpGetReq ==NULL || pHttpGetReq->SoapMessage == NULL || AnscSizeOfString(pHttpGetReq->SoapMessage) == 0)
    {
        /*
         * An empty HTTP POST MUST NOT contain a SOAPAction header.
         * An empty HTTP POST MUST NOT contain a Content-Type header.
         */
        pBmoReqObj->SetHeaderValueByName((ANSC_HANDLE)pBmoReqObj, "Content-Length", "0");
        /* pBmoReqObj->SetHeaderValueByName((ANSC_HANDLE)pBmoReqObj, "Content-Type", "text/xml;charset=utf-8"); */
    }
    else
    {
        pBmoReqObj->SetHeaderValueByName((ANSC_HANDLE)pBmoReqObj, "Content-Type", "text/xml;charset=utf-8");

        _ansc_sprintf(pBuffer, "%u", (unsigned int)AnscSizeOfString(pHttpGetReq->SoapMessage));
        pBmoReqObj->SetHeaderValueByName((ANSC_HANDLE)pBmoReqObj, "Content-Length", pBuffer);

        if( pHttpGetReq->MethodName == NULL || AnscSizeOfString(pHttpGetReq->MethodName) == 0)
        {
            pBmoReqObj->SetHeaderValueByName((ANSC_HANDLE)pBmoReqObj, "SOAPAction", "");
        }
        else
        {
            _ansc_sprintf(pBuffer, "\"%s\"", pHttpGetReq->MethodName);
            pBmoReqObj->SetHeaderValueByName((ANSC_HANDLE)pBmoReqObj, "SOAPAction", pBuffer);
        }

        returnStatus =
            pBmoReqObj->AppendBody
                (
                    pBmoReqObj,
                    pHttpGetReq->SoapMessage,
                    AnscSizeOfString(pHttpGetReq->SoapMessage)
                );
    }

    return  returnStatus;
}
Example #25
0
ANSC_STATUS
CosaNatSyncPortTrigger
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus        = ANSC_STATUS_SUCCESS;
    PCOSA_DATAMODEL_NAT             pMyObject           = (PCOSA_DATAMODEL_NAT     )hThisObject;
    PCOSA_CONTEXT_LINK_OBJECT       pCxtLink            = NULL;
    PSINGLE_LINK_ENTRY              pSListEntry         = NULL;
    PCOSA_DML_NAT_PTRIGGER          pPortTrigger        = NULL;
    PCOSA_DML_NAT_PTRIGGER          pPtEntry            = NULL;
    ULONG                           entryCount          = 0;
    ULONG                           i                   = 0;
    BOOL*                           pbFoundPt           = NULL;

    CcspTraceWarning(("!!!!!!!! in CosaNatSyncPortTrigger !!!!!!!!\n"));

    pPortTrigger = CosaDmlNatGetPortTriggers(NULL,&entryCount,TRUE);

    if ( !pPortTrigger )
    {
        /* Get Error, we don't del link because next time, it may be successful */
        return ANSC_STATUS_FAILURE;
    }

    pbFoundPt     = (BOOL*)AnscAllocateMemory(sizeof(BOOL) * entryCount);
    AnscZeroMemory(pbFoundPt, (sizeof(BOOL) * entryCount));

    if ( !pbFoundPt )
    {
        AnscFreeMemory(pPortTrigger); /*RDKB-6742, CID-32996, free unused resources before exit*/
        return ANSC_STATUS_RESOURCES;
    }

    pSListEntry =   AnscSListGetFirstEntry(&pMyObject->NatPTriggerList);

    while( pSListEntry )
    {
        pCxtLink          = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSListEntry);
        pSListEntry       = AnscSListGetNextEntry(pSListEntry);

        pPtEntry          = (PCOSA_DML_NAT_PTRIGGER)pCxtLink->hContext;

        for ( i = 0; i < entryCount; i++)
        {
            if ( pPtEntry->InstanceNumber == pPortTrigger[i].InstanceNumber )
            {
                /* If found, update the content also */
                CcspTraceWarning(("!!!!!!!! Ready to copy 1 !!!!!!!!\n"));
                AnscCopyMemory(pPtEntry, &pPortTrigger[i], sizeof(COSA_DML_NAT_PTRIGGER)); /* pOriAlias is NULL, no deep copy needed */

                pCxtLink->bNew = FALSE;
                pbFoundPt[i]   = TRUE;

                break;
            }
        }
    }

    /* Check those in backend but not yet in middle layer */

    for ( i = 0; i < entryCount; i++ )
    {
        if ( pbFoundPt[i] == FALSE )
        {
            /* We add new entry into our link table */
            pCxtLink = AnscAllocateMemory(sizeof(COSA_CONTEXT_LINK_OBJECT));
            if ( !pCxtLink )
            {
                goto EXIT1;
            }

            pPtEntry = AnscAllocateMemory(sizeof(COSA_DML_NAT_PTRIGGER));
            if ( !pPtEntry )
            {
                goto EXIT2;
            }

            /* copy new content which should include InstanceNumber and Alias */
            CcspTraceWarning(("!!!!!!!! Ready to copy 2 &pPortTrigger[%d]->InsNumber: %d !!!!!!!!\n", i, pPortTrigger[i].InstanceNumber));
            AnscCopyMemory(pPtEntry, &pPortTrigger[i], sizeof(COSA_DML_NAT_PTRIGGER)); /* pOriAlias is NULL, no deep copy needed */
            CcspTraceWarning(("!!!!!!!! After copy 2 pPtEntry->InsNumber: %d !!!!!!!!\n", pPtEntry->InstanceNumber));

            pCxtLink->hContext       = (ANSC_HANDLE)pPtEntry;
            pCxtLink->InstanceNumber = pPtEntry->InstanceNumber;
            pCxtLink->bNew           = FALSE;

            CosaSListPushEntryByInsNum(&pMyObject->NatPTriggerList, (PCOSA_CONTEXT_LINK_OBJECT)pCxtLink);
        }
    }

    returnStatus = ANSC_STATUS_SUCCESS;

    goto EXIT1;


EXIT2:

    AnscFreeMemory(pCxtLink);

EXIT1:

    AnscFreeMemory(pbFoundPt);
    AnscFreeMemory(pPortTrigger);

    CcspTraceWarning(("!!!!!!!! out CosaNatSyncPortTrigger !!!!!!!!\n"));

    return returnStatus;
}
Example #26
0
ANSC_STATUS
ssp_create_wifi
    (
        PCCSP_COMPONENT_CFG         pStartCfg
    )
{
    /* Create component common data model object */

    g_pComponent_Common_Dm = (PCOMPONENT_COMMON_DM)AnscAllocateMemory(sizeof(COMPONENT_COMMON_DM));

    if ( !g_pComponent_Common_Dm )
    {
        return ANSC_STATUS_RESOURCES;
    }

    ComponentCommonDmInit(g_pComponent_Common_Dm);

    g_pComponent_Common_Dm->Name     = AnscCloneString(pStartCfg->ComponentName);
    g_pComponent_Common_Dm->Version  = 1;
    g_pComponent_Common_Dm->Author   = AnscCloneString("CCSP");

    /* Create ComponentCommonDatamodel interface*/
    if ( !pWifiCcdIf )
    {
        pWifiCcdIf = (PCCSP_CCD_INTERFACE)AnscAllocateMemory(sizeof(CCSP_CCD_INTERFACE));

        if ( !pWifiCcdIf )
        {
            return ANSC_STATUS_RESOURCES;
        }
        else
        {
            AnscCopyString(pWifiCcdIf->Name, CCSP_CCD_INTERFACE_NAME);

            pWifiCcdIf->InterfaceId              = CCSP_CCD_INTERFACE_ID;
            pWifiCcdIf->hOwnerContext            = NULL;
            pWifiCcdIf->Size                     = sizeof(CCSP_CCD_INTERFACE);

            pWifiCcdIf->GetComponentName         = ssp_WifiCCDmGetComponentName;
            pWifiCcdIf->GetComponentVersion      = ssp_WifiCCDmGetComponentVersion;
            pWifiCcdIf->GetComponentAuthor       = ssp_WifiCCDmGetComponentAuthor;
            pWifiCcdIf->GetComponentHealth       = ssp_WifiCCDmGetComponentHealth;
            pWifiCcdIf->GetComponentState        = ssp_WifiCCDmGetComponentState;
            pWifiCcdIf->GetLoggingEnabled        = ssp_WifiCCDmGetLoggingEnabled;
            pWifiCcdIf->SetLoggingEnabled        = ssp_WifiCCDmSetLoggingEnabled;
            pWifiCcdIf->GetLoggingLevel          = ssp_WifiCCDmGetLoggingLevel;
            pWifiCcdIf->SetLoggingLevel          = ssp_WifiCCDmSetLoggingLevel;
            pWifiCcdIf->GetMemMaxUsage           = ssp_WifiCCDmGetMemMaxUsage;
            pWifiCcdIf->GetMemMinUsage           = ssp_WifiCCDmGetMemMinUsage;
            pWifiCcdIf->GetMemConsumed           = ssp_WifiCCDmGetMemConsumed;
            pWifiCcdIf->ApplyChanges             = ssp_WifiCCDmApplyChanges;
        }
    }

    /* Create context used by data model */
    pWifiFcContext = (PCCSP_FC_CONTEXT)AnscAllocateMemory(sizeof(CCSP_FC_CONTEXT));

    if ( !pWifiFcContext )
    {
        return ANSC_STATUS_RESOURCES;
    }
    else
    {
        AnscZeroMemory(pWifiFcContext, sizeof(CCSP_FC_CONTEXT));
    }

    pDslhCpeController = DslhCreateCpeController(NULL, NULL, NULL);

    if ( !pDslhCpeController )
    {
        CcspTraceWarning(("CANNOT Create pDslhCpeController... Exit!\n"));

        return ANSC_STATUS_RESOURCES;
    }

    return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
SlapEcoUoaInvokeObject
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hSlapObject,
        char*                       method_name,
        SLAP_PARAMETER_LIST*        params_in,
        SLAP_PARAMETER_LIST**       params_out,
        SLAP_VARIABLE**             return_var
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PSLAP_ENV_CONTROLLER_OBJECT     pMyObject         = (PSLAP_ENV_CONTROLLER_OBJECT)hThisObject;
    PSLAP_OBJ_MAPPER_OBJECT         pSlapObjMapper    = (PSLAP_OBJ_MAPPER_OBJECT    )pMyObject->hSlapObjMapper;
    PSLAP_OBJ_CONTAINER_OBJECT      pSlapObjContainer = (PSLAP_OBJ_CONTAINER_OBJECT )NULL;
    PSLAP_OBJ_ENTITY_OBJECT         pSlapObjEntity    = (PSLAP_OBJ_ENTITY_OBJECT    )NULL;
    PSLAP_OBJ_RECORD_OBJECT         pSlapObjRecord    = (PSLAP_OBJ_RECORD_OBJECT    )hSlapObject;
    PSLAP_SRV_COMPONENT_OBJECT      pSlapSrvComponent = (PSLAP_SRV_COMPONENT_OBJECT )pSlapObjRecord->hSlapSrvComponent;
    ULONG                           ulObjType         = (ULONG                      )0;

    pMyObject->bCallPending         = TRUE;
    pMyObject->PendingCallTimestamp = AnscGetTickInSeconds();

    AnscZeroMemory(pMyObject->PendingCallName, 256);
    AnscCopyString(pMyObject->PendingCallName, method_name);

    /*
     * There're certain object methods should not be simply relayed to the target logic object. For
     * example, the external modules may try to invoke method "Remove" to delete the target object.
     * Handling of such methods should be taken care by UOA interface.
     */
    if ( AnscEqualString(method_name, "Remove", FALSE) &&
         (params_in             != NULL              ) &&
         (params_in->ParamCount == 0                 ) )
    {
        returnStatus =
            pMyObject->UoaDeleteObject
                (
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)pSlapObjRecord
                );

        pMyObject->bCallPending = FALSE;

        return  returnStatus;
    }

    if ( !pSlapSrvComponent )
    {
        pMyObject->bCallPending = FALSE;

        return  ANSC_STATUS_UNAPPLICABLE;
    }
    else
    {
        ulObjType = pSlapSrvComponent->ObjType;

        if ( ulObjType & SLAP_OBJ_TYPE_serializedCalls )
        {
            pSlapObjRecord->AcqAccess((ANSC_HANDLE)pSlapObjRecord);
        }

        returnStatus =
            pSlapSrvComponent->InvokeDispatch
                (
                    (ANSC_HANDLE)pSlapSrvComponent,
                    method_name,
                    params_in,
                    params_out,
                    return_var
                );

        if ( ulObjType & SLAP_OBJ_TYPE_serializedCalls )
        {
            pSlapObjRecord->RelAccess((ANSC_HANDLE)pSlapObjRecord);
        }
    }

    pMyObject->bCallPending = FALSE;

    return  returnStatus;
}
ANSC_STATUS
BwspScoWsrAttachWebHost
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hHostDescr
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBWSP_SITE_CREATOR_OBJECT       pMyObject    = (PBWSP_SITE_CREATOR_OBJECT    )hThisObject;
    PBWSP_SITE_CREATOR_PROPERTY     pProperty    = (PBWSP_SITE_CREATOR_PROPERTY  )&pMyObject->Property;
    PWEB_HEM_INTERFACE              pWebHemIf    = (PWEB_HEM_INTERFACE           )pMyObject->hWebHemIf;
    PHTTP_HELPER_CONTAINER_OBJECT   pHttpHco     = (PHTTP_HELPER_CONTAINER_OBJECT)pWebHemIf->GetHttpHco(pWebHemIf->hOwnerContext);
    PBWSP_WEB_HOST_DESCRIPTOR       pWebHostDesp = (PBWSP_WEB_HOST_DESCRIPTOR    )hHostDescr;
    PBWSP_PORTAL_HOST_OBJECT        pPortalHost  = (PBWSP_PORTAL_HOST_OBJECT     )NULL;
    BWSP_PORTAL_HOST_PROPERTY       bwspPhoProperty;
    WEB_LSM_INTERFACE               webLsmIf;

    if ( !pMyObject->bActive )
    {
        return  ANSC_STATUS_NOT_READY;
    }
    else
    {
        pPortalHost =
            (PBWSP_PORTAL_HOST_OBJECT)BwspCreatePortalHost
                (
                    pHttpHco,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );
    }

    if ( !pPortalHost )
    {
        return  ANSC_STATUS_UNAPPLICABLE;
    }

    if ( TRUE )
    {
        AnscZeroMemory(&bwspPhoProperty, sizeof(BWSP_PORTAL_HOST_PROPERTY));

        AnscCopyString(bwspPhoProperty.HostName,      pWebHostDesp->HostName     );
        AnscCopyString(bwspPhoProperty.VhoCookieName, pProperty   ->PhoCookieName);
        AnscCopyString(bwspPhoProperty.LsmCookieName, pProperty   ->LsmCookieName);

        bwspPhoProperty.HostPort               = pWebHostDesp->HostPort;
        bwspPhoProperty.bEnableSessionTracking = pWebHostDesp->bSessionTracking;
        bwspPhoProperty.bDefaultVirtualHost    = pWebHostDesp->bDefaultHost;
        bwspPhoProperty.SessionTimeOut         = pProperty   ->SessionTimeout;
        bwspPhoProperty.VhoCookieMaxAge        = pProperty   ->PhoCookieMaxAge;
        bwspPhoProperty.LsmCookieMaxAge        = pProperty   ->LsmCookieMaxAge;

        pPortalHost->SetProperty((ANSC_HANDLE)pPortalHost, (ANSC_HANDLE)&bwspPhoProperty);
    }

    if ( TRUE )
    {
        AnscZeroMemory(&webLsmIf, sizeof(WEB_LSM_INTERFACE));

        AnscCopyString(webLsmIf.Name, WEB_LSM_INTERFACE_NAME);

        webLsmIf.InterfaceId    = WEB_LSM_INTERFACE_ID;
        webLsmIf.hOwnerContext  = pWebHostDesp->hHostContext;
        webLsmIf.Size           = sizeof(WEB_LSM_INTERFACE);

        webLsmIf.NewContact     = (PFN_WEBLSMIF_NEW     )pWebHostDesp->NewContact;
        webLsmIf.ClassifyClient = (PFN_WEBLSMIF_CLASSIFY)pWebHostDesp->ClassifyClient;
        webLsmIf.ExpireSession  = (PFN_WEBLSMIF_EXPIRE  )pWebHostDesp->ExpireSession;
        webLsmIf.EndSession     = (PFN_WEBLSMIF_END     )pWebHostDesp->EndSession;

        pPortalHost->SetLsmIf((ANSC_HANDLE)pPortalHost, (ANSC_HANDLE)&webLsmIf);
    }

    if ( TRUE )
    {
        pPortalHost->Engage((ANSC_HANDLE)pPortalHost);
    }

    returnStatus =
        pWebHemIf->AttachWebVho
            (
                pWebHemIf->hOwnerContext,
                (ANSC_HANDLE)pPortalHost
            );

    if ( returnStatus != ANSC_STATUS_SUCCESS )
    {
        pPortalHost->Cancel((ANSC_HANDLE)pPortalHost);
        pPortalHost->Remove((ANSC_HANDLE)pPortalHost);
    }

    return  returnStatus;
}
ANSC_STATUS
BwspScoWsrAttachServlet
    (
        ANSC_HANDLE                 hThisObject,
        char*                       host_name,
        ANSC_HANDLE                 hServletDescr
    )
{
    ANSC_STATUS                     returnStatus = ANSC_STATUS_SUCCESS;
    PBWSP_SITE_CREATOR_OBJECT       pMyObject    = (PBWSP_SITE_CREATOR_OBJECT    )hThisObject;
    PBWSP_SITE_CREATOR_PROPERTY     pProperty    = (PBWSP_SITE_CREATOR_PROPERTY  )&pMyObject->Property;
    PWEB_HEM_INTERFACE              pWebHemIf    = (PWEB_HEM_INTERFACE           )pMyObject->hWebHemIf;
    PHTTP_HELPER_CONTAINER_OBJECT   pHttpHco     = (PHTTP_HELPER_CONTAINER_OBJECT)pWebHemIf->GetHttpHco(pWebHemIf->hOwnerContext);
    PBWSP_SERVLET_DESCRIPTOR        pServletDesp = (PBWSP_SERVLET_DESCRIPTOR     )hServletDescr;
    PBWSP_WEB_SERVLET_OBJECT        pWebServlet  = (PBWSP_WEB_SERVLET_OBJECT     )NULL;
    BWSP_WEB_SERVLET_PROPERTY       bwspWsoProperty;
    BWSP_WSH_INTERFACE              bwspWshIf;

    if ( !pMyObject->bActive )
    {
        return  ANSC_STATUS_NOT_READY;
    }
    else
    {
        pWebServlet =
            (PBWSP_WEB_SERVLET_OBJECT)BwspCreateWebServlet
                (
                    pHttpHco,
                    (ANSC_HANDLE)pMyObject,
                    (ANSC_HANDLE)NULL
                );
    }

    if ( !pWebServlet )
    {
        return  ANSC_STATUS_UNAPPLICABLE;
    }

    if ( TRUE )
    {
        AnscZeroMemory(&bwspWsoProperty, sizeof(BWSP_WEB_SERVLET_PROPERTY));

        AnscCopyString(bwspWsoProperty.RootPath, pServletDesp->WebRootPath);
        AnscCopyString(bwspWsoProperty.RegPath,  pServletDesp->ServletPath);

        bwspWsoProperty.OwnerFlag  = pServletDesp->bMainPage   ? WEB_ROO_FLAG_STANDARD | WEB_ROO_FLAG_DEFAULT : WEB_ROO_FLAG_STANDARD;
        bwspWsoProperty.OwnerFlag |= pServletDesp->bUpnpSupport? WEB_ROO_FLAG_UPNP_SUPPORT: 0;
        bwspWsoProperty.OwnerType  = WEB_ROO_TYPE_GENERAL_CGI;
        bwspWsoProperty.AuthType   = WEB_ROO_AUTH_TYPE_NONE;

        pWebServlet->SetProperty((ANSC_HANDLE)pWebServlet, (ANSC_HANDLE)&bwspWsoProperty);
    }

    if ( TRUE )
    {
        AnscZeroMemory(&bwspWshIf, sizeof(BWSP_WSH_INTERFACE));

        AnscCopyString(bwspWshIf.Name, BWSP_WSH_INTERFACE_NAME);

        bwspWshIf.InterfaceId   = BWSP_WSH_INTERFACE_ID;
        bwspWshIf.hOwnerContext = pServletDesp->hServletContext;
        bwspWshIf.Size          = sizeof(BWSP_WSH_INTERFACE);

        bwspWshIf.DoOptions     = (PFN_BWSPWSHIF_DO_OPTIONS    )pServletDesp->DoOptions;
        bwspWshIf.DoGet         = (PFN_BWSPWSHIF_DO_GET        )pServletDesp->DoGet;
        bwspWshIf.DoHead        = (PFN_BWSPWSHIF_DO_HEAD       )pServletDesp->DoHead;
        bwspWshIf.DoPost        = (PFN_BWSPWSHIF_DO_POST       )pServletDesp->DoPost;
        bwspWshIf.DoPut         = (PFN_BWSPWSHIF_DO_PUT        )pServletDesp->DoPut;
        bwspWshIf.DoDelete      = (PFN_BWSPWSHIF_DO_DELETE     )pServletDesp->DoDelete;
        bwspWshIf.DoTrace       = (PFN_BWSPWSHIF_DO_TRACE      )pServletDesp->DoTrace;
        bwspWshIf.DoConnect     = (PFN_BWSPWSHIF_DO_CONNECT    )pServletDesp->DoConnect;

        bwspWshIf.DoNotify      = (PFN_BWSPWSHIF_DO_NOTIFY     )pServletDesp->DoNotify;
        bwspWshIf.DoSearch      = (PFN_BWSPWSHIF_DO_SEARCH     )pServletDesp->DoSearch;
        bwspWshIf.DoMSearch     = (PFN_BWSPWSHIF_DO_M_SEARCH   )pServletDesp->DoMSearch;
        bwspWshIf.DoMPost       = (PFN_BWSPWSHIF_DO_M_POST     )pServletDesp->DoMPost;
        bwspWshIf.DoSubscribe   = (PFN_BWSPWSHIF_DO_SUBSCRIBE  )pServletDesp->DoSubscribe;
        bwspWshIf.DoUnsubscribe = (PFN_BWSPWSHIF_DO_UNSUBSCRIBE)pServletDesp->DoUnsubscribe;

        pWebServlet->SetBwspWshIf((ANSC_HANDLE)pWebServlet, (ANSC_HANDLE)&bwspWshIf);
    }

    if ( TRUE )
    {
        pWebServlet->Engage((ANSC_HANDLE)pWebServlet);
    }

    returnStatus =
        pWebHemIf->AttachWebRoo
            (
                pWebHemIf->hOwnerContext,
                host_name,
                (ANSC_HANDLE)pWebServlet
            );

    if ( returnStatus != ANSC_STATUS_SUCCESS )
    {
        pWebServlet->Cancel((ANSC_HANDLE)pWebServlet);
        pWebServlet->Remove((ANSC_HANDLE)pWebServlet);
    }

    return  returnStatus;
}
ANSC_STATUS
CosaUsersInitialize
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;
    PCOSA_DATAMODEL_USERS           pMyObject         = (PCOSA_DATAMODEL_USERS)hThisObject;
    PPOAM_IREP_FOLDER_OBJECT        pPoamIrepFoCOSA   = NULL;
    PPOAM_IREP_FOLDER_OBJECT        pPoamIrepFoUser   = NULL;
 
    /* We need call the initiation function of backend firstly */
    returnStatus = CosaDmlUserInit( NULL, NULL );
    if ( returnStatus != ANSC_STATUS_SUCCESS )
    {
        return returnStatus;
    }

    /* Initiation all functions */
    AnscSListInitializeHeader( &pMyObject->UserList );
    pMyObject->maxInstanceOfUser    = 0;
    pMyObject->hIrepFolderUser      = NULL;
    AnscZeroMemory(pMyObject->AliasOfUser, sizeof(pMyObject->AliasOfUser));

    /*We need to get Instance Info from cosa configuration*/
    pPoamIrepFoCOSA = (PPOAM_IREP_FOLDER_OBJECT)g_GetRegistryRootFolder(g_pDslhDmlAgent);

    if ( !pPoamIrepFoCOSA )
    {
        returnStatus = ANSC_STATUS_FAILURE;

        goto  EXIT;
    }

    pPoamIrepFoUser = 
        (PPOAM_IREP_FOLDER_OBJECT)pPoamIrepFoCOSA->GetFolder
            (
                (ANSC_HANDLE)pPoamIrepFoCOSA,
                COSA_IREP_FOLDER_NAME_USER
            );

    if ( !pPoamIrepFoUser )
    {
        pPoamIrepFoCOSA->EnableFileSync((ANSC_HANDLE)pPoamIrepFoCOSA, FALSE);
    
        pPoamIrepFoUser =
            pPoamIrepFoCOSA->AddFolder
                (
                    (ANSC_HANDLE)pPoamIrepFoCOSA,
                    COSA_IREP_FOLDER_NAME_USER,
                    0
                );

        pPoamIrepFoCOSA->EnableFileSync((ANSC_HANDLE)pPoamIrepFoCOSA, TRUE);

    }

    if ( !pPoamIrepFoUser )
    {
        returnStatus = ANSC_STATUS_FAILURE;

        goto  EXIT;
    }
    else
    {
        pMyObject->hIrepFolderUser = (ANSC_HANDLE)pPoamIrepFoUser;
    }

    /* We need get NextInstanceNumber from backend. By the way, the whole tree 
            was created. Moreover, we also need get delay-added entry and put them
            into our tree. */
    CosaUsersRegGetUserInfo((ANSC_HANDLE)pMyObject);

    /* Firstly we create the whole system from backend */
    CosaUsersBackendGetUserInfo((ANSC_HANDLE)pMyObject);

EXIT:
    
    return returnStatus;

}