ANSC_STATUS CosaBridgingRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_BRIDGING pMyObject = (PCOSA_DATAMODEL_BRIDGING )hThisObject; PSLIST_HEADER pBridgeHead = (PSLIST_HEADER )&pMyObject->BridgeList; PCOSA_CONTEXT_LINK_OBJECT pCosaContext2 = (PCOSA_CONTEXT_LINK_OBJECT )NULL; PCOSA_DML_BRG_FULL_ALL pDmlBridge = (PCOSA_DML_BRG_FULL_ALL )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; PSLIST_HEADER pListHead = (PSLIST_HEADER )NULL; PSINGLE_LINK_ENTRY pSLinkEntry2 = (PSINGLE_LINK_ENTRY )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext3 = (PCOSA_CONTEXT_LINK_OBJECT )NULL; PCOSA_DML_BRG_PORT_FULL pPort = (PCOSA_DML_BRG_PORT_FULL )NULL; pSLinkEntry = AnscSListGetFirstEntry(pBridgeHead); while ( pSLinkEntry ) { pCosaContext2 = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pDmlBridge = (PCOSA_DML_BRG_FULL_ALL)pCosaContext2->hContext; if ( pDmlBridge ) { AnscSListPopEntryByLink(pBridgeHead, &pCosaContext2->Linkage); pListHead = &pDmlBridge->PortList; pSLinkEntry2 = AnscSListGetFirstEntry(pListHead); while ( pSLinkEntry2 ) { pCosaContext3 = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry2); pSLinkEntry2 = AnscSListGetNextEntry(pSLinkEntry2); pPort = (PCOSA_DML_BRG_PORT_FULL)pCosaContext3->hContext; AnscSListPopEntryByLink(pListHead, &pCosaContext3->Linkage); if ( pPort ) { AnscFreeMemory(pPort); } AnscFreeMemory(pCosaContext3); } AnscFreeMemory(pDmlBridge); AnscFreeMemory(pCosaContext2); } } AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS CosaNatRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_NAT pMyObject = (PCOSA_DATAMODEL_NAT)hThisObject; PSINGLE_LINK_ENTRY pLink = NULL; PCOSA_CONTEXT_LINK_OBJECT pNat = NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFo = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderNat; PPOAM_IREP_FOLDER_OBJECT pPoamIrepPt = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderNatPt; /* Remove resource of writable entry link */ for( pLink = AnscSListPopEntry(&pMyObject->NatPMappingList); pLink; ) { pNat = (PCOSA_CONTEXT_LINK_OBJECT)ACCESS_COSA_CONTEXT_LINK_OBJECT(pLink); pLink = AnscSListGetNextEntry(pLink); AnscFreeMemory(pNat->hContext); AnscFreeMemory(pNat); } for( pLink = AnscSListPopEntry(&pMyObject->NatPTriggerList); pLink; ) { pNat = (PCOSA_CONTEXT_LINK_OBJECT)ACCESS_COSA_CONTEXT_LINK_OBJECT(pLink); pLink = AnscSListGetNextEntry(pLink); AnscFreeMemory(pNat->hContext); AnscFreeMemory(pNat); } if ( pPoamIrepPt ) { pPoamIrepPt->Remove( (ANSC_HANDLE)pPoamIrepPt); } if ( pPoamIrepFo ) { pPoamIrepFo->Remove( (ANSC_HANDLE)pPoamIrepFo); } /* Remove self */ AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS CosaTSIPRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_TSIP pMyObject = (PCOSA_DATAMODEL_TSIP)hThisObject; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = NULL; /* Remove necessary resounce */ if (AnscSListQueryDepth(&pMyObject->SubnetList) != 0) { pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->SubnetList); while ( pSLinkEntry ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); AnscSListPopEntryByLink(&pMyObject->SubnetList, &pCosaContext->Linkage); AnscFreeMemory(pCosaContext->hContext); AnscFreeMemory(pCosaContext); } } if (AnscSListQueryDepth(&pMyObject->RuleList) != 0) { pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->RuleList); while ( pSLinkEntry ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); AnscSListPopEntryByLink(&pMyObject->RuleList, &pCosaContext->Linkage); AnscFreeMemory(pCosaContext->hContext); AnscFreeMemory(pCosaContext); } } /* Remove self */ AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS CosaUsersRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_USERS pMyObject = (PCOSA_DATAMODEL_USERS)hThisObject; PSINGLE_LINK_ENTRY pSListEntry = NULL; PCOSA_CONTEXT_LINK_OBJECT pCxtLink = NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFo = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderUser; /* Remove necessary resource */ pSListEntry = AnscSListPopEntry(&pMyObject->UserList); while( pSListEntry != NULL) { pCxtLink = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSListEntry); pSListEntry = AnscSListGetNextEntry(pSListEntry); AnscFreeMemory(pCxtLink->hContext); AnscFreeMemory(pCxtLink); } if ( pPoamIrepFo ) { pPoamIrepFo->Remove( (ANSC_HANDLE)pPoamIrepFo); } /* Remove self */ AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS CosaNeighdiscRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_NEIGHDISC pMyObject = (PCOSA_DATAMODEL_NEIGHDISC)hThisObject; PSLIST_HEADER pNeighdiscIFHead = (PSLIST_HEADER)&pMyObject->InterfaceList; PCOSA_DML_NEIGHDISC_IF_FULL pNeighdiscInterface = (PCOSA_DML_NEIGHDISC_IF_FULL)NULL; PSINGLE_LINK_ENTRY pLink = (PSINGLE_LINK_ENTRY )NULL; PSINGLE_LINK_ENTRY pSubLink = (PSINGLE_LINK_ENTRY )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PCOSA_CONTEXT_LINK_OBJECT pSubCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)NULL; /*free the back end memory*/ CosaDmlNeighdiscIfBERemove(); /* Neighdisc Interface List */ pLink = AnscSListGetFirstEntry(pNeighdiscIFHead); while ( pLink ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pLink); pLink = AnscSListGetNextEntry(pLink); pNeighdiscInterface = (PCOSA_DML_NEIGHDISC_IF_FULL)pCosaContext->hContext; if ( pNeighdiscInterface ) { AnscSListPopEntryByLink(pNeighdiscIFHead, &pCosaContext->Linkage); AnscFreeMemory(pNeighdiscInterface); AnscFreeMemory(pCosaContext); } } /* Remove self */ pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderNeighdiscInterfaceHA; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderNeighdiscInterface; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS CosaDdnsRemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_DDNS pMyObject = (PCOSA_DATAMODEL_DDNS )hThisObject; PSLIST_HEADER pListHead = (PSLIST_HEADER )&pMyObject->ContextHead; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoDdns = (PPOAM_IREP_FOLDER_OBJECT )pMyObject->hIrepFolderDdns; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFo = (PPOAM_IREP_FOLDER_OBJECT )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PCOSA_DML_DDNS_SERVICE pDdnsEntry = (PCOSA_DML_DDNS_SERVICE )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; /* Remove necessary resounce */ pSLinkEntry = AnscSListGetFirstEntry(pListHead); while ( pSLinkEntry ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pDdnsEntry = (PCOSA_DML_DDNS_SERVICE)pCosaContext->hContext; if ( pDdnsEntry ) { AnscSListPopEntryByLink(pListHead, &pCosaContext->Linkage); AnscFreeMemory(pDdnsEntry); pPoamIrepFo = pCosaContext->hPoamIrepFo; if ( pPoamIrepFo ) { pPoamIrepFo->Remove((ANSC_HANDLE)pPoamIrepFo); } AnscFreeMemory(pCosaContext); } } if ( pPoamIrepFoDdns ) { pPoamIrepFoDdns->Remove((ANSC_HANDLE)pPoamIrepFoDdns); } /* Remove self */ AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ULONG IPv6rdIF_DelEntry( ANSC_HANDLE hInsContext, ULONG hInstance) { PCOSA_DATAMODEL_IPV6RD pMyObject = (PCOSA_DATAMODEL_IPV6RD)g_pCosaBEManager->hIPv6rd; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)hInstance; PCOSA_CONTEXT_LINK_OBJECT pCosaContext2 = NULL; PCOSA_DML_IPV6RD_IF pEntry = (PCOSA_DML_IPV6RD_IF)pCosaContext->hContext; PCOSA_DML_IPV6RD_IF pNewEntry = NULL; PSLIST_HEADER pListHead = (PSLIST_HEADER)&pMyObject->IfList; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; if (CosaDml_IPv6rdDelEntry(NULL, pEntry->InstanceNumber) != ANSC_STATUS_SUCCESS) { CcspTraceError(("IPv6rdIF_DelEntry: CosaDml_IPv6rdDelEntry error\n")); /* may fail if object is add be PSM config is not set. * so do not return here */ /* return ANSC_STATUS_FAILURE; */ } pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->IfList); while (pSLinkEntry) { pCosaContext2 = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pNewEntry = (PCOSA_DML_IPV6RD_IF)pCosaContext2->hContext; if (pNewEntry && AnscEqualString(pNewEntry->Alias, pEntry->Alias, FALSE)) { AnscSListPopEntryByLink(pListHead, &pCosaContext2->Linkage); if (pCosaContext->bNew) CosaIPv6rdIfRegDelInfo((ANSC_HANDLE)pMyObject, (ANSC_HANDLE)pCosaContext2); AnscFreeMemory(pNewEntry); AnscFreeMemory(pCosaContext2); break; } } return ANSC_STATUS_SUCCESS; }
ANSC_HANDLE IPv6rdIF_GetEntry( ANSC_HANDLE hInsContext, ULONG nIndex, ULONG *pInsNumber) { PCOSA_DATAMODEL_IPV6RD pMyObject = (PCOSA_DATAMODEL_IPV6RD)g_pCosaBEManager->hIPv6rd; PCOSA_CONTEXT_LINK_OBJECT pLinkObject = NULL; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; PCOSA_DML_IPV6RD_IF pEntry = NULL; if (!pMyObject) return NULL; pSLinkEntry = AnscSListGetEntryByIndex(&pMyObject->IfList, nIndex); if (!pSLinkEntry) return NULL; pLinkObject = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); if (!pLinkObject) return NULL; *pInsNumber = pLinkObject->InstanceNumber; pEntry = pLinkObject->hContext; if (!pEntry) return NULL; if (CosaDml_IPv6rdGetEntry(NULL, pEntry->InstanceNumber, pEntry) != ANSC_STATUS_SUCCESS) { /* * It may happen object is add, but parameters are not set, * so node may save some where and load when Init, * but for backend (PSM) this instance is not exist. */ CcspTraceError(("IPv6rdIF_GetEntry: !!!!!!!! CosaDml_IPv6rdGetEntry error, " "but also return pLinkObject for edit later (it's alloced)\n")); /* memset(pEntry, 0, sizeof(COSA_DML_IPV6RD_IF)); */ /* don't return NULL */ } return pLinkObject; }
ANSC_STATUS CosaNatRegSetNatInfo ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_NAT pMyObject = (PCOSA_DATAMODEL_NAT )hThisObject; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoNat = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderNat; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoNatPt = (PPOAM_IREP_FOLDER_OBJECT)NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoEnumNat = (PPOAM_IREP_FOLDER_OBJECT)NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaNatContext = NULL; PCOSA_DML_NAT_PMAPPING pCosaNat = NULL; PCOSA_DML_NAT_PTRIGGER pCosaNatPt = NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; PSLAP_VARIABLE pSlapVariable = NULL; ULONG ulEntryCount = 0; ULONG ulIndex = 0; ULONG uInstanceNumber = 0; char* pAliasNat = NULL; char* pFolderName = NULL; char FolderName[16] = {0}; if ( !pPoamIrepFoNat ) { return ANSC_STATUS_FAILURE; } else { pPoamIrepFoNat->EnableFileSync((ANSC_HANDLE)pPoamIrepFoNat, FALSE); } if ( TRUE ) { pPoamIrepFoNat->Clear((ANSC_HANDLE)pPoamIrepFoNat); SlapAllocVariable(pSlapVariable); if ( !pSlapVariable ) { returnStatus = ANSC_STATUS_RESOURCES; goto EXIT1; } } /* This is saved structure for Nat ***************************************** <Nat> <PortMapping> <1> <alias>xxx</> <bNew>false</> </1> <2> <alias>xxx</> <bNew>false</> </2> </PortMapping> </Nat> ******************************************/ pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->NatPMappingList); while ( pSLinkEntry ) { /* create nat.{i} */ pCosaNatContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pCosaNat = (PCOSA_DML_NAT_PMAPPING)pCosaNatContext->hContext; if ( !pCosaNatContext->bNew ) { continue; } _ansc_sprintf(FolderName, "%d", pCosaNat->InstanceNumber); pPoamIrepFoEnumNat = pPoamIrepFoNat->AddFolder ( (ANSC_HANDLE)pPoamIrepFoNat, FolderName, 0 ); if ( !pPoamIrepFoEnumNat ) { continue; } /* add nat.{i}.Alias */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_string; pSlapVariable->Variant.varString = AnscCloneString(pCosaNat->Alias); returnStatus = pPoamIrepFoEnumNat->AddRecord ( (ANSC_HANDLE)pPoamIrepFoEnumNat, COSA_DML_RR_NAME_NATAlias, SYS_REP_RECORD_TYPE_ASTR, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } /* add nat.{i}.bNew */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_bool; pSlapVariable->Variant.varBool = pCosaNatContext->bNew; returnStatus = pPoamIrepFoEnumNat->AddRecord ( (ANSC_HANDLE)pPoamIrepFoEnumNat, COSA_DML_RR_NAME_NATbNew, SYS_REP_RECORD_TYPE_BOOL, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } /*release some resource */ pPoamIrepFoEnumNat->Remove((ANSC_HANDLE)pPoamIrepFoEnumNat); pPoamIrepFoEnumNat = NULL; } /* For PortTrigger */ /* This is saved structure for Nat ***************************************** <Nat> <PortTrigger> <NextInsNumber>xxx</> <1> <alias>xxx</> <bNew>true</> </1> <2> <alias>xxx</> <bNew>true</> </2> </PortTrigger> </Nat> ******************************************/ pPoamIrepFoNatPt = pPoamIrepFoNat->AddFolder ( (ANSC_HANDLE)pPoamIrepFoNat, COSA_IREP_FOLDER_NAME_PORTTRIGGER, 0 ); if ( !pPoamIrepFoNatPt ) { returnStatus = ANSC_STATUS_FAILURE; goto EXIT1; } /* Save next instance number for port trigger */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_uint32; pSlapVariable->Variant.varUint32 = pMyObject->ulPtNextInstanceNumber; returnStatus = pPoamIrepFoNatPt->AddRecord ( (ANSC_HANDLE)pPoamIrepFoNatPt, COSA_DML_RR_NAME_NATNextInsNumber, SYS_REP_RECORD_TYPE_UINT, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->NatPTriggerList); while ( pSLinkEntry ) { /* create nat.PortTrigger.{i} */ pCosaNatContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pCosaNatPt = (PCOSA_DML_NAT_PTRIGGER)pCosaNatContext->hContext; if ( !pCosaNatContext->bNew ) { continue; } _ansc_sprintf(FolderName, "%d", pCosaNatPt->InstanceNumber); pPoamIrepFoEnumNat = pPoamIrepFoNatPt->AddFolder ( (ANSC_HANDLE)pPoamIrepFoNatPt, FolderName, 0 ); if ( !pPoamIrepFoEnumNat ) { continue; } /* add PortTrigger.{i}.Alias */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_string; pSlapVariable->Variant.varString = AnscCloneString(pCosaNatPt->Alias); returnStatus = pPoamIrepFoEnumNat->AddRecord ( (ANSC_HANDLE)pPoamIrepFoEnumNat, COSA_DML_RR_NAME_NATAlias, SYS_REP_RECORD_TYPE_ASTR, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } /* add PortTrigger.{i}.bNew */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_bool; pSlapVariable->Variant.varBool = pCosaNatContext->bNew; returnStatus = pPoamIrepFoEnumNat->AddRecord ( (ANSC_HANDLE)pPoamIrepFoEnumNat, COSA_DML_RR_NAME_NATbNew, SYS_REP_RECORD_TYPE_BOOL, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } /*release some resource */ pPoamIrepFoEnumNat->Remove((ANSC_HANDLE)pPoamIrepFoEnumNat); pPoamIrepFoEnumNat = NULL; } EXIT1: if ( pSlapVariable ) { SlapFreeVariable(pSlapVariable); pSlapVariable = NULL; } if ( pPoamIrepFoEnumNat ) pPoamIrepFoEnumNat->Remove((ANSC_HANDLE)pPoamIrepFoEnumNat); pPoamIrepFoNat->EnableFileSync((ANSC_HANDLE)pPoamIrepFoNat, TRUE); return returnStatus; }
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; }
ANSC_STATUS CosaUsersRegSetUserInfo ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_USERS pMyObject = (PCOSA_DATAMODEL_USERS )hThisObject; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoUser = (PPOAM_IREP_FOLDER_OBJECT )pMyObject->hIrepFolderUser; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoEnumUser = (PPOAM_IREP_FOLDER_OBJECT )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaUserContext = NULL; PCOSA_DML_USER pCosaUser = NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; PSLAP_VARIABLE pSlapVariable = NULL; ULONG ulEntryCount = 0; ULONG ulIndex = 0; ULONG uInstanceNumber = 0; char* pAliasUser = NULL; char* pFolderName = NULL; char FolderName[16] = {0}; if ( !pPoamIrepFoUser ) { return ANSC_STATUS_FAILURE; } else { pPoamIrepFoUser->EnableFileSync((ANSC_HANDLE)pPoamIrepFoUser, FALSE); } if ( TRUE ) { pPoamIrepFoUser->Clear((ANSC_HANDLE)pPoamIrepFoUser); SlapAllocVariable(pSlapVariable); if ( !pSlapVariable ) { returnStatus = ANSC_STATUS_RESOURCES; goto EXIT1; } } /* This is saved structure for user ***************************************** <User> <NextInstanceNumber> xxx </> <1> <alias>xxx</> <bNew>false</> </1> <2> <alias>xxx</> <bNew>false</> </2> </User> **************************************************** */ /* add client.{i}.maxInstanceNumber */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_uint32; pSlapVariable->Variant.varUint32 = pMyObject->maxInstanceOfUser; returnStatus = pPoamIrepFoUser->AddRecord ( (ANSC_HANDLE)pPoamIrepFoUser, COSA_DML_RR_NAME_UserNextInsNunmber, SYS_REP_RECORD_TYPE_UINT, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } pSLinkEntry = AnscSListGetFirstEntry(&pMyObject->UserList); while ( pSLinkEntry ) { /* create user.{i} */ pCosaUserContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pCosaUser = (PCOSA_DML_USER)pCosaUserContext->hContext; if ( !pCosaUserContext->bNew) { continue; } _ansc_sprintf(FolderName, "%d", pCosaUser->InstanceNumber); pPoamIrepFoEnumUser = pPoamIrepFoUser->AddFolder ( (ANSC_HANDLE)pPoamIrepFoUser, FolderName, 0 ); if ( !pPoamIrepFoEnumUser ) { continue; } /* add user.{i}.Username */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_string; pSlapVariable->Variant.varString = AnscCloneString(pCosaUser->Username); returnStatus = pPoamIrepFoEnumUser->AddRecord ( (ANSC_HANDLE)pPoamIrepFoEnumUser, COSA_DML_RR_NAME_UserAlias, SYS_REP_RECORD_TYPE_ASTR, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } /* add user.{i}.bNew */ if ( TRUE ) { pSlapVariable->Syntax = SLAP_VAR_SYNTAX_bool; pSlapVariable->Variant.varBool = pCosaUserContext->bNew; returnStatus = pPoamIrepFoEnumUser->AddRecord ( (ANSC_HANDLE)pPoamIrepFoEnumUser, COSA_DML_RR_NAME_UserbNew, SYS_REP_RECORD_TYPE_BOOL, SYS_RECORD_CONTENT_DEFAULT, pSlapVariable, 0 ); SlapCleanVariable(pSlapVariable); SlapInitVariable (pSlapVariable); } /*release some resource */ pPoamIrepFoEnumUser->Remove((ANSC_HANDLE)pPoamIrepFoEnumUser); pPoamIrepFoEnumUser = NULL; } EXIT1: if ( pSlapVariable ) { SlapFreeVariable(pSlapVariable); pSlapVariable = NULL; } if ( pPoamIrepFoEnumUser ) pPoamIrepFoEnumUser->Remove((ANSC_HANDLE)pPoamIrepFoEnumUser); pPoamIrepFoUser->EnableFileSync((ANSC_HANDLE)pPoamIrepFoUser, TRUE); return returnStatus; }
ANSC_STATUS CosaRaRegGetInfo ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_RA pMyObject = (PCOSA_DATAMODEL_RA)hThisObject; PSLIST_HEADER pRAIFHead = (PSLIST_HEADER)&pMyObject->InterfaceList; PCOSA_DML_RA_IF_FULL2 pRAInterface = (PCOSA_DML_RA_IF_FULL2)NULL; PCOSA_DML_RA_IF_FULL2 pRAEntry = (PCOSA_DML_RA_IF_FULL2)NULL; PCOSA_DML_RA_OPTION pRAOption = (PCOSA_DML_RA_OPTION)NULL; PSINGLE_LINK_ENTRY pLink = (PSINGLE_LINK_ENTRY )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PCOSA_CONTEXT_LINK_OBJECT pSubCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoRAHA = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderRAInterfaceHA; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoRAIF = (PPOAM_IREP_FOLDER_OBJECT)NULL; PSLAP_VARIABLE pSlapVariable = (PSLAP_VARIABLE )NULL; ULONG ulEntryCount = 0; ULONG ulIndex = 0; ULONG ulInstanceNumber = 0; ULONG ulUpperInstanceNumber = 0; char* pFolderName = NULL; char* pAlias = NULL; if ( !pPoamIrepFoRAHA ) { return ANSC_STATUS_FAILURE; } /* Load the newly added but not yet commited entries */ ulEntryCount = pPoamIrepFoRAHA->GetFolderCount((ANSC_HANDLE)pPoamIrepFoRAHA); for ( ulIndex = 0; ulIndex < ulEntryCount; ulIndex++ ) { pFolderName = pPoamIrepFoRAHA->EnumFolder ( (ANSC_HANDLE)pPoamIrepFoRAHA, ulIndex ); if ( !pFolderName ) { continue; } pPoamIrepFoRAIF = (PPOAM_IREP_FOLDER_OBJECT)pPoamIrepFoRAHA->GetFolder ( (ANSC_HANDLE)pPoamIrepFoRAHA, pFolderName ); if ( !pPoamIrepFoRAIF ) { continue; } if ( _ansc_strstr(pFolderName, COSA_DML_RR_NAME_RAIF_Prefix) ) { pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoRAIF->GetRecord ( (ANSC_HANDLE)pPoamIrepFoRAIF, COSA_DML_RR_NAME_RAIF_InsNum, NULL ); if ( pSlapVariable ) { ulInstanceNumber = pSlapVariable->Variant.varUint32; SlapFreeVariable(pSlapVariable); } pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoRAIF->GetRecord ( (ANSC_HANDLE)pPoamIrepFoRAIF, COSA_DML_RR_NAME_RAIF_Alias, NULL ); if ( pSlapVariable ) { pAlias = AnscCloneString(pSlapVariable->Variant.varString); SlapFreeVariable(pSlapVariable); } pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)AnscAllocateMemory(sizeof(COSA_CONTEXT_LINK_OBJECT)); if ( !pCosaContext ) { returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } pRAInterface = (PCOSA_DML_RA_IF_FULL2)AnscAllocateMemory(sizeof(COSA_DML_RA_IF_FULL2)); if ( !pRAInterface ) { AnscFreeMemory(pCosaContext); returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } AnscSListInitializeHeader(&pRAInterface->OptionList); pRAInterface->ulNextOptionInsNum = 1; pRAInterface->Cfg.InstanceNumber = ulInstanceNumber; AnscCopyString(pRAInterface->Cfg.Alias, pAlias); pCosaContext->InstanceNumber = ulInstanceNumber; pCosaContext->bNew = TRUE; pCosaContext->hContext = (ANSC_HANDLE)pRAInterface; pCosaContext->hParentTable = NULL; pCosaContext->hPoamIrepUpperFo = (ANSC_HANDLE)pPoamIrepFoRAHA; pCosaContext->hPoamIrepFo = (ANSC_HANDLE)pPoamIrepFoRAIF; CosaSListPushEntryByInsNum(pRAIFHead, pCosaContext); } else { pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoRAIF->GetRecord ( (ANSC_HANDLE)pPoamIrepFoRAIF, COSA_DML_RR_NAME_RAIF_Upper_InsNum, NULL ); if ( pSlapVariable ) { ulUpperInstanceNumber = pSlapVariable->Variant.varUint32; SlapFreeVariable(pSlapVariable); } if ( ulUpperInstanceNumber != 0 ) { pLink = AnscSListGetFirstEntry(pRAIFHead); while ( pLink ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pLink); pLink = AnscSListGetNextEntry(pLink); pRAEntry = (PCOSA_DML_RA_IF_FULL2)pCosaContext->hContext; if ( pRAEntry && (pRAEntry->Cfg.InstanceNumber == ulUpperInstanceNumber) ) { break; } } if ( !pRAEntry ) { returnStatus = ANSC_STATUS_FAILURE; goto EXIT; } } else { returnStatus = ANSC_STATUS_FAILURE; goto EXIT; } pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoRAIF->GetRecord ( (ANSC_HANDLE)pPoamIrepFoRAIF, COSA_DML_RR_NAME_RAIF_InsNum, NULL ); if ( pSlapVariable ) { ulInstanceNumber = pSlapVariable->Variant.varUint32; SlapFreeVariable(pSlapVariable); } pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoRAIF->GetRecord ( (ANSC_HANDLE)pPoamIrepFoRAIF, COSA_DML_RR_NAME_RAIF_Alias, NULL ); if ( pSlapVariable ) { pAlias = AnscCloneString(pSlapVariable->Variant.varString); SlapFreeVariable(pSlapVariable); } if ( _ansc_strstr(pFolderName, COSA_DML_RR_NAME_RAIF_OPTION_Prefix) ) { pRAOption = (PCOSA_DML_RA_OPTION)AnscAllocateMemory(sizeof(COSA_DML_RA_OPTION)); if ( !pRAOption ) { returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } pSubCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)AnscAllocateMemory(sizeof(COSA_CONTEXT_LINK_OBJECT)); if ( !pSubCosaContext ) { AnscFreeMemory(pRAOption); returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } pRAOption->InstanceNumber = ulInstanceNumber; AnscCopyString(pRAOption->Alias, pAlias); pSubCosaContext->InstanceNumber = ulInstanceNumber; pSubCosaContext->hContext = (ANSC_HANDLE)pRAOption; pSubCosaContext->hParentTable = (ANSC_HANDLE)pRAEntry; pSubCosaContext->bNew = TRUE; pSubCosaContext->hPoamIrepUpperFo = (ANSC_HANDLE)pPoamIrepFoRAHA; pSubCosaContext->hPoamIrepFo = (ANSC_HANDLE)pPoamIrepFoRAIF; CosaSListPushEntryByInsNum(&pRAEntry->OptionList, pSubCosaContext); } } if ( pAlias ) { AnscFreeMemory(pAlias); pAlias = NULL; } if ( pFolderName ) { AnscFreeMemory(pFolderName); pFolderName = NULL; } } EXIT: if ( pAlias ) { AnscFreeMemory(pAlias); } return returnStatus; }
ANSC_STATUS CosaRARemove ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_RA pMyObject = (PCOSA_DATAMODEL_RA)hThisObject; PSLIST_HEADER pRAIFHead = (PSLIST_HEADER)&pMyObject->InterfaceList; PSLIST_HEADER pRAOptionHead = (PSLIST_HEADER)NULL; PCOSA_DML_RA_IF_FULL2 pRAInterface = (PCOSA_DML_RA_IF_FULL2)NULL; PCOSA_DML_RA_OPTION pRAOption = (PCOSA_DML_RA_OPTION)NULL; PSINGLE_LINK_ENTRY pLink = (PSINGLE_LINK_ENTRY )NULL; PSINGLE_LINK_ENTRY pSubLink = (PSINGLE_LINK_ENTRY )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PCOSA_CONTEXT_LINK_OBJECT pSubCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)NULL; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)NULL; /*free the back end memory*/ CosaDmlRaIfBERemove(); /* RA Interface List */ pLink = AnscSListGetFirstEntry(pRAIFHead); while ( pLink ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pLink); pLink = AnscSListGetNextEntry(pLink); pRAInterface = (PCOSA_DML_RA_IF_FULL2)pCosaContext->hContext; if ( pRAInterface ) { AnscSListPopEntryByLink(pRAIFHead, &pCosaContext->Linkage); pRAOptionHead = &pRAInterface->OptionList; /* Option List */ pSubLink = AnscSListGetFirstEntry(pRAOptionHead); while ( pSubLink ) { pSubCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSubLink); pSubLink = AnscSListGetNextEntry(pSubLink); pRAOption = (PCOSA_DML_RA_OPTION)pSubCosaContext->hContext; AnscSListPopEntryByLink(pRAOptionHead, &pSubCosaContext->Linkage); if ( pRAOption ) { AnscFreeMemory(pRAOption); } AnscFreeMemory(pSubCosaContext); } AnscFreeMemory(pRAInterface); AnscFreeMemory(pCosaContext); } } /* Remove self */ pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderRAInterfaceHA; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } pPoamIrepFoTemp = (PPOAM_IREP_FOLDER_OBJECT)pMyObject->hIrepFolderRAInterface; if ( pPoamIrepFoTemp ) { pPoamIrepFoTemp->Remove(pPoamIrepFoTemp); } AnscFreeMemory((ANSC_HANDLE)pMyObject); return returnStatus; }
ANSC_STATUS CosaBridgingRegGetInfo ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PCOSA_DATAMODEL_BRIDGING pMyObject = (PCOSA_DATAMODEL_BRIDGING )hThisObject; PSLIST_HEADER pBridgeHead = (PSLIST_HEADER )&pMyObject->BridgeList; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoBRGHA = (PPOAM_IREP_FOLDER_OBJECT )pMyObject->hIrepFolderBRGHA; PPOAM_IREP_FOLDER_OBJECT pPoamIrepFoBRGBrg = (PPOAM_IREP_FOLDER_OBJECT )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT )NULL; PCOSA_CONTEXT_LINK_OBJECT pCosaContext2 = (PCOSA_CONTEXT_LINK_OBJECT )NULL; PCOSA_DML_BRG_FULL_ALL pDmlBridge = (PCOSA_DML_BRG_FULL_ALL )NULL; PCOSA_DML_BRG_FULL_ALL pDmlBrgEntry = (PCOSA_DML_BRG_FULL_ALL )NULL; PCOSA_DML_BRG_PORT_FULL pPort = (PCOSA_DML_BRG_PORT_FULL )NULL; PSLAP_VARIABLE pSlapVariable = (PSLAP_VARIABLE )NULL; PSINGLE_LINK_ENTRY pSLinkEntry = (PSINGLE_LINK_ENTRY )NULL; ULONG ulEntryCount = 0; ULONG ulIndex = 0; ULONG ulInstanceNumber = 0; ULONG ulUpperInstanceNumber = 0; char* pFolderName = NULL; char* pBridgeName = NULL; char* pAlias = NULL; BOOLEAN found = FALSE; if ( !pPoamIrepFoBRGHA ) { return ANSC_STATUS_FAILURE; } /* Load the newly added but not yet commited entries */ ulEntryCount = pPoamIrepFoBRGHA->GetFolderCount((ANSC_HANDLE)pPoamIrepFoBRGHA); for ( ulIndex = 0; ulIndex < ulEntryCount; ulIndex++ ) { pFolderName = pPoamIrepFoBRGHA->EnumFolder ( (ANSC_HANDLE)pPoamIrepFoBRGHA, ulIndex ); if ( !pFolderName ) { continue; } pPoamIrepFoBRGBrg = pPoamIrepFoBRGHA->GetFolder((ANSC_HANDLE)pPoamIrepFoBRGHA, pFolderName); if ( !pPoamIrepFoBRGBrg ) { continue; } if ( _ansc_strstr(pFolderName, "Bridge") ) { if ( TRUE ) { pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoBRGBrg->GetRecord ( (ANSC_HANDLE)pPoamIrepFoBRGBrg, COSA_DML_RR_NAME_Bridge_InsNum, NULL ); if ( pSlapVariable ) { ulInstanceNumber = pSlapVariable->Variant.varUint32; SlapFreeVariable(pSlapVariable); } } if ( TRUE ) { pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoBRGBrg->GetRecord ( (ANSC_HANDLE)pPoamIrepFoBRGBrg, COSA_DML_RR_NAME_Bridge_Alias, NULL ); if ( pSlapVariable ) { pAlias = AnscCloneString(pSlapVariable->Variant.varString); SlapFreeVariable(pSlapVariable); } } pCosaContext = (PCOSA_CONTEXT_LINK_OBJECT)AnscAllocateMemory(sizeof(COSA_CONTEXT_LINK_OBJECT)); if ( !pCosaContext ) { returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } pDmlBridge = (PCOSA_DML_BRG_FULL_ALL)AnscAllocateMemory(sizeof(COSA_DML_BRG_FULL_ALL)); if ( !pDmlBridge ) { AnscFreeMemory(pCosaContext); returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } AnscSListInitializeHeader(&pDmlBridge->PortList ); AnscSListInitializeHeader(&pDmlBridge->VLANList ); AnscSListInitializeHeader(&pDmlBridge->VLANPortList); pDmlBridge->ulNextPortInsNum = 1; pDmlBridge->ulNextVLANInsNum = 1; pDmlBridge->ulNextVLANPortInsNum = 1; pDmlBridge->Cfg.bAllowDelete = TRUE; pDmlBridge->Cfg.InstanceNumber = ulInstanceNumber; AnscCopyString(pDmlBridge->Cfg.Alias, pAlias); pCosaContext->InstanceNumber = ulInstanceNumber; pCosaContext->bNew = TRUE; pCosaContext->hContext = (ANSC_HANDLE)pDmlBridge; pCosaContext->hParentTable = NULL; pCosaContext->hPoamIrepUpperFo = (ANSC_HANDLE)pPoamIrepFoBRGHA; pCosaContext->hPoamIrepFo = (ANSC_HANDLE)pPoamIrepFoBRGBrg; CosaSListPushEntryByInsNum(pBridgeHead, pCosaContext); } else { found = FALSE; if ( TRUE ) { pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoBRGBrg->GetRecord ( (ANSC_HANDLE)pPoamIrepFoBRGBrg, COSA_DML_RR_NAME_Bridge_Upper_InsNum, NULL ); if ( pSlapVariable ) { ulUpperInstanceNumber = pSlapVariable->Variant.varUint32; SlapFreeVariable(pSlapVariable); } if ( ulUpperInstanceNumber != 0 ) { pSLinkEntry = AnscSListGetFirstEntry(pBridgeHead); while ( pSLinkEntry ) { pCosaContext = ACCESS_COSA_CONTEXT_LINK_OBJECT(pSLinkEntry); pSLinkEntry = AnscSListGetNextEntry(pSLinkEntry); pDmlBrgEntry = (PCOSA_DML_BRG_FULL_ALL)pCosaContext->hContext; if ( pDmlBrgEntry && (pDmlBrgEntry->Cfg.InstanceNumber == ulUpperInstanceNumber) ) { found = TRUE; break; } } } else { return ANSC_STATUS_FAILURE; } } if (found==FALSE) { //$HL 4/29/2013 pPoamIrepFoBRGHA->EnableFileSync((ANSC_HANDLE)pPoamIrepFoBRGHA, FALSE); pPoamIrepFoBRGBrg->Close((ANSC_HANDLE)pPoamIrepFoBRGBrg); pPoamIrepFoBRGHA->DelFolder ( (ANSC_HANDLE)pPoamIrepFoBRGHA, pPoamIrepFoBRGBrg->GetFolderName((ANSC_HANDLE)pPoamIrepFoBRGBrg) ); pPoamIrepFoBRGHA->EnableFileSync((ANSC_HANDLE)pPoamIrepFoBRGHA, TRUE); AnscFreeMemory(pPoamIrepFoBRGBrg); continue; } if ( TRUE ) { pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoBRGBrg->GetRecord ( (ANSC_HANDLE)pPoamIrepFoBRGBrg, COSA_DML_RR_NAME_Bridge_InsNum, NULL ); if ( pSlapVariable ) { ulInstanceNumber = pSlapVariable->Variant.varUint32; SlapFreeVariable(pSlapVariable); } } if ( TRUE ) { pSlapVariable = (PSLAP_VARIABLE)pPoamIrepFoBRGBrg->GetRecord ( (ANSC_HANDLE)pPoamIrepFoBRGBrg, COSA_DML_RR_NAME_Bridge_Alias, NULL ); if ( pSlapVariable ) { pAlias = AnscCloneString(pSlapVariable->Variant.varString); SlapFreeVariable(pSlapVariable); } } if ( _ansc_strstr(pFolderName, "Port") ) { pPort = (PCOSA_DML_BRG_PORT_FULL)AnscAllocateMemory(sizeof(COSA_DML_BRG_PORT_FULL)); if ( !pPort ) { returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } pCosaContext2 = (PCOSA_CONTEXT_LINK_OBJECT)AnscAllocateMemory(sizeof(COSA_CONTEXT_LINK_OBJECT)); if ( !pCosaContext2 ) { AnscFreeMemory(pPort); returnStatus = ANSC_STATUS_RESOURCES; goto EXIT; } pPort->Cfg.InstanceNumber = ulInstanceNumber; AnscCopyString(pPort->Cfg.Alias, pAlias); pPort->Cfg.bAllowDelete = TRUE; pCosaContext2->InstanceNumber = ulInstanceNumber; pCosaContext2->hContext = (ANSC_HANDLE)pPort; pCosaContext2->hParentTable = (ANSC_HANDLE)pDmlBrgEntry; pCosaContext2->bNew = TRUE; pCosaContext2->hPoamIrepUpperFo = (ANSC_HANDLE)pPoamIrepFoBRGHA; pCosaContext2->hPoamIrepFo = (ANSC_HANDLE)pPoamIrepFoBRGBrg; //$HL 5/1/2013 pDmlBrgEntry->ulNextPortInsNum = ulInstanceNumber >=pDmlBrgEntry->ulNextPortInsNum ? ulInstanceNumber+1:pDmlBrgEntry->ulNextPortInsNum; CosaSListPushEntryByInsNum(&pDmlBrgEntry->PortList, pCosaContext2); } } } EXIT: AnscFreeMemory(pAlias); return returnStatus; }