ULONG IPv6rdIF_Commit( ANSC_HANDLE hInsContext ) { PCOSA_DATAMODEL_IPV6RD pMyObject = (PCOSA_DATAMODEL_IPV6RD)g_pCosaBEManager->hIPv6rd; PCOSA_CONTEXT_LINK_OBJECT pLinkObject = (PCOSA_CONTEXT_LINK_OBJECT)hInsContext; PCOSA_DML_IPV6RD_IF pEntry = (PCOSA_DML_IPV6RD_IF)pLinkObject->hContext; if (pLinkObject->bNew) { pLinkObject->bNew = FALSE; if (CosaDml_IPv6rdAddEntry(NULL, pEntry) != ANSC_STATUS_SUCCESS) { CcspTraceError(("IPv6rdIF_Commit: CosaDml_IPv6rdAddEntry error\n")); /* return -1; */ } CosaIPv6rdIfRegDelInfo((ANSC_HANDLE)pMyObject, (ANSC_HANDLE)pLinkObject); } else { if (CosaDml_IPv6rdSetEntry(NULL, pEntry->InstanceNumber, pEntry) != ANSC_STATUS_SUCCESS) { CcspTraceError(("IPv6rdIF_Commit: CosaDml_IPv6rdSetEntry error\n")); /* return -1; */ } } return 0; }
static void waitForEthAgentComponentReady() { char status[32] = {'\0'}; int count = 0; int ret = -1; while(1) { checkComponentHealthStatus(RDKB_ETHAGENT_COMPONENT_NAME, RDKB_ETHAGENT_DBUS_PATH, status,&ret); if(ret == CCSP_SUCCESS && (strcmp(status, "Green") == 0)) { CcspTraceInfo(("%s component health is %s, continue\n", RDKB_ETHAGENT_COMPONENT_NAME, status)); break; } else { count++; if(count > 60) { CcspTraceError(("%s component Health check failed (ret:%d), continue\n",RDKB_ETHAGENT_COMPONENT_NAME, ret)); break; } if(count%5 == 0) { CcspTraceError(("%s component Health, ret:%d, waiting\n", RDKB_ETHAGENT_COMPONENT_NAME, ret)); } sleep(5); } } }
static int check_ethernet_wan_status() { int ret = -1, size =0, val_size =0; char compName[MAX_PARAMETERNAME_LEN/2] = { '\0' }; char dbusPath[MAX_PARAMETERNAME_LEN/2] = { '\0' }; parameterValStruct_t **parameterval = NULL; char *getList[] = {ETH_WAN_STATUS_PARAM}; componentStruct_t ** ppComponents = NULL; char dst_pathname_cr[256] = {0}; char isEthEnabled[64]={'\0'}; if(0 == syscfg_init()) { if( 0 == syscfg_get( NULL, "eth_wan_enabled", isEthEnabled, sizeof(isEthEnabled)) && (isEthEnabled[0] != '\0' && strncmp(isEthEnabled, "true", strlen("true")) == 0)) { CcspTraceInfo(("Ethernet WAN is enabled\n")); ret = CCSP_SUCCESS; } } else { waitForEthAgentComponentReady(); sprintf(dst_pathname_cr, "%s%s", "eRT.", CCSP_DBUS_INTERFACE_CR); ret = CcspBaseIf_discComponentSupportingNamespace(bus_handle, dst_pathname_cr, ETH_WAN_STATUS_PARAM, "", &ppComponents, &size); if ( ret == CCSP_SUCCESS && size >= 1) { strncpy(compName, ppComponents[0]->componentName, sizeof(compName)-1); strncpy(dbusPath, ppComponents[0]->dbusPath, sizeof(compName)-1); } else { CcspTraceError(("Failed to get component for %s ret: %d\n",ETH_WAN_STATUS_PARAM,ret)); } free_componentStruct_t(bus_handle, size, ppComponents); if(strlen(compName) != 0 && strlen(dbusPath) != 0) { ret = CcspBaseIf_getParameterValues(bus_handle, compName, dbusPath, getList, 1, &val_size, ¶meterval); if(ret == CCSP_SUCCESS && val_size > 0) { if(parameterval[0]->parameterValue != NULL && strncmp(parameterval[0]->parameterValue, "true", strlen("true")) == 0) { CcspTraceInfo(("Ethernet WAN is enabled\n")); ret = CCSP_SUCCESS; } else { CcspTraceInfo(("Ethernet WAN is disabled\n")); ret = CCSP_FAILURE; } } else { CcspTraceError(("Failed to get values for %s ret: %d\n",getList[0],ret)); } free_parameterValStruct_t(bus_handle, val_size, parameterval); } } return ret; }
/* * Create a thread to handle the sysevent asynchronously */ void EvtDispterHandleEventAsync(void) { int err; pthread_t event_handle_thread; err = pthread_create(&event_handle_thread, NULL, EvtDispterEventHandler, NULL); if(0 != err) { CcspTraceError(("%s: create the event handle thread error!\n", __FUNCTION__)); } }
ULONG IPv6rd_Rollback( ANSC_HANDLE hInsContext ) { PCOSA_DATAMODEL_IPV6RD pEntry = (PCOSA_DATAMODEL_IPV6RD)g_pCosaBEManager->hIPv6rd; if (CosaDml_IPv6rdGetEnable(NULL, NULL, &pEntry->Enable) != ANSC_STATUS_SUCCESS) { CcspTraceError(("IPv6rd_Rollback: CosaDml_IPv6rdGetEnable error\n")); /* return -1; */ } return 0; }
ULONG IPv6rdIF_Rollback( ANSC_HANDLE hInsContext ) { PCOSA_CONTEXT_LINK_OBJECT pLinkObject = (PCOSA_CONTEXT_LINK_OBJECT)hInsContext; PCOSA_DML_IPV6RD_IF pEntry = (PCOSA_DML_IPV6RD_IF)pLinkObject->hContext; if (CosaDml_IPv6rdGetEntry(NULL, pEntry->InstanceNumber, pEntry) != ANSC_STATUS_SUCCESS) { CcspTraceError(("IPv6rdIF_Rollback: CosaDml_IPv6rdGetEntry error\n")); /* return -1; */ } return 0; }
/* * the sysevent handler in event dispatcher */ void * EvtDispterEventHandler(void *arg) { int ret = EVENT_ERROR; while(EVENT_ERROR == EvtDispterEventInits()) { CcspTraceError(("%s: sysevent init failed!\n", __FUNCTION__)); sleep(1); } /*first check the events status*/ EvtDispterCheckEvtStatus(se_fd, token); while(1) { ret = EvtDispterEventListen(); switch (ret) { case EVENT_LAN_STARTED: EvtDispterCallFuncByEvent("lan-status"); break; case EVENT_LAN_STOPPED: break; case EVENT_WAN_STARTED: EvtDispterCallFuncByEvent("wan-status"); break; case EVENT_WAN_STOPPED: break; default : CcspTraceWarning(("The received event status is not expected!\n")); break; } if (EVENT_HANDLE_EXIT == ret) //end this event handling loop break; sleep(2); } EvtDispterEventClose(); return NULL; }
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; }
int WebpaInterface_DiscoverComponent(char** pcomponentName, char** pcomponentPath ) { char CrName[256] = {0}; int ret = 0; CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s ENTER\n", __FUNCTION__ )); CrName[0] = 0; strcpy(CrName, "eRT."); strcat(CrName, CCSP_DBUS_INTERFACE_CR); componentStruct_t **components = NULL; int compNum = 0; int res = CcspBaseIf_discComponentSupportingNamespace ( bus_handle, CrName, #ifndef _XF3_PRODUCT_REQ_ "Device.X_CISCO_COM_CableModem.MACAddress", #else "Device.DPoE.Mac_address", #endif "", &components, &compNum); if(res != CCSP_SUCCESS || compNum < 1){ CcspTraceError(("WebpaInterface_DiscoverComponent find eRT PAM component error %d\n", res)); ret = -1; } else{ *pcomponentName = LanManager_CloneString(components[0]->componentName); *pcomponentPath = LanManager_CloneString(components[0]->dbusPath); CcspTraceInfo(("WebpaInterface_DiscoverComponent find eRT PAM component %s--%s\n", *pcomponentName, *pcomponentPath)); } free_componentStruct_t(bus_handle, compNum, components); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s EXIT\n", __FUNCTION__ )); return ret; }
/* Init COSA */ BOOL Cosa_Init(void) { #ifdef _COSA_SIM_ //#if 1 snprintf(dst_pathname_cr, sizeof(dst_pathname_cr), "com.cisco.spvtg.ccsp.CR"); #else /* * Hardcoding "eRT." is just a workaround. We need to feed the subsystem * info into this initialization routine. */ sprintf(dst_pathname_cr, "%s%s", CCSP_SNMP_AGENT_PA_SUBSYSTEM, CCSP_DBUS_INTERFACE_CR); #endif if(!bus_handle) { if (CCSP_Message_Bus_Init(COMPONENT_NAME, CONF_FILENAME, &bus_handle, malloc, free) != 0) { AnscTraceError(("%s: CCSP_Message_Bus_Init error\n", __FUNCTION__)); CcspTraceError(("%s: CCSP_Message_Bus_Init error\n", __FUNCTION__)); return FALSE; } } return TRUE; }
void WriteWiFiLog(char *msg) { char LogMsg_arr[512] = {0}; char *LogMsg = LogMsg_arr; char LogLevel[512] = {0}; strcpy (LogLevel, msg); strtok_r (LogLevel, ",",&LogMsg); if( AnscEqualString(LogLevel, "RDK_LOG_ERROR", TRUE)) { CcspTraceError((LogMsg)); } else if( AnscEqualString(LogLevel, "RDK_LOG_WARN", TRUE)) { CcspTraceWarning((LogMsg)); } else if( AnscEqualString(LogLevel, "RDK_LOG_NOTICE", TRUE)) { CcspTraceNotice((LogMsg)); } else if( AnscEqualString(LogLevel, "RDK_LOG_INFO", TRUE)) { CcspTraceInfo((LogMsg)); } else if( AnscEqualString(LogLevel, "RDK_LOG_DEBUG", TRUE)) { CcspTraceDebug((LogMsg)); } else if( AnscEqualString(LogLevel, "RDK_LOG_FATAL", TRUE)) { CcspTraceCritical((LogMsg)); } else { CcspTraceInfo((LogMsg)); } }
/* * Listen sysevent notification message */ int EvtDispterEventListen(void) { int ret = EVENT_TIMEOUT; fd_set rfds; struct timeval tv; int retval; tv.tv_sec = 30; tv.tv_usec=0; FD_ZERO(&rfds); FD_SET(se_fd, &rfds); retval=select(se_fd+1, &rfds, NULL, NULL, NULL); if(retval) { se_buffer msg_buffer; se_notification_msg *msg_body = (se_notification_msg *)msg_buffer; unsigned int msg_size; token_t from; int msg_type; msg_size = sizeof(msg_buffer); msg_type = SE_msg_receive(se_fd, msg_buffer, &msg_size, &from); // if not a notification message then ignore it if (SE_MSG_NOTIFICATION == msg_type) { // extract the name and value from the return message data int name_bytes; int value_bytes; char *name_str; char *value_str; char *data_ptr; data_ptr = (char *)&(msg_body->data); name_str = (char *)SE_msg_get_string(data_ptr, &name_bytes); data_ptr += name_bytes; value_str = (char *)SE_msg_get_string(data_ptr, &value_bytes); if(!strcmp(name_str, "lan-status")) { if (!strncmp(value_str, "started", 7)) ret = EVENT_LAN_STARTED; else if (!strncmp(value_str, "stopped", 7)) ret = EVENT_LAN_STOPPED; } else if(!strcmp(name_str, "wan-status")) { if (!strncmp(value_str, "started", 7)) ret = EVENT_WAN_STARTED; else if (!strncmp(value_str, "stopped", 7)) ret = EVENT_WAN_STOPPED; } } else { CcspTraceWarning(("Received msg that is not a SE_MSG_NOTIFICATION (%d)\n", msg_type)); } } else { CcspTraceError(("%s: Received no event retval=%d\n", __FUNCTION__, retval)); } return ret; }
ANSC_STATUS AnscDstoEngage ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PANSC_DAEMON_SERVER_TCP_OBJECT pMyObject = (PANSC_DAEMON_SERVER_TCP_OBJECT)hThisObject; PANSC_DSTO_WORKER_OBJECT pWorker = (PANSC_DSTO_WORKER_OBJECT )pMyObject->hWorker; int s_result = 0; #ifdef _ANSC_IPV6_COMPATIBLE_ ansc_addrinfo ansc_hints = {0}; ansc_addrinfo* pansc_local_addrinfo = NULL; xskt_addrinfo xskt_hints = {0}; xskt_addrinfo* pxskt_local_addrinfo = NULL; USHORT usPort = 0; char port[6] = {0}; #else /*RDKB-6151, CID-24487,24794; initializing variable before use*/ ansc_socket_addr_in local_addr1 = {0}; xskt_socket_addr_in local_addr2 = {0}; #endif if ( pMyObject->bActive ) { return ANSC_STATUS_SUCCESS; } else if ( !pWorker ) { return ANSC_STATUS_UNAPPLICABLE; } else { pWorker->Init(pWorker->hWorkerContext); pMyObject->StartTime = AnscGetTickInSecondsAbs(); pMyObject->bActive = TRUE; } /* * The underlying socket wrapper may require an explicit startup() call, such is the case on * Microsoft windows platforms. The wrapper initialization has to done for each task. On most * real-time operating systems, this call is not required. */ if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { AnscStartupXsocketWrapper((ANSC_HANDLE)pMyObject); } else { AnscStartupSocketWrapper((ANSC_HANDLE)pMyObject); } #ifdef _ANSC_IPV6_COMPATIBLE_ if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { xskt_hints.ai_family = AF_UNSPEC; xskt_hints.ai_socktype = XSKT_SOCKET_STREAM; xskt_hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; usPort = pMyObject->GetHostPort((ANSC_HANDLE)pMyObject); _ansc_sprintf(port, "%d", usPort); CcspTraceInfo(("!!! Host Name: %s, Host Port: %s !!!\n", pMyObject->HostName, port)); if ( _xskt_getaddrinfo ( pMyObject->HostName[0] ? pMyObject->HostName : "::", port, &xskt_hints, &pxskt_local_addrinfo ) ) { CcspTraceError(("!!! error 1 !!!\n")); returnStatus = ANSC_STATUS_FAILURE; goto EXIT1; } pMyObject->pHostAddr2 = pxskt_local_addrinfo; } else { ansc_hints.ai_family = AF_UNSPEC; ansc_hints.ai_socktype = ANSC_SOCKET_STREAM; ansc_hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG; usPort = pMyObject->GetHostPort((ANSC_HANDLE)pMyObject); _ansc_sprintf(port, "%d", usPort); CcspTraceInfo(("!!! Host Name: %s, Host Port: %s !!!\n", pMyObject->HostName, port)); if ( _ansc_getaddrinfo ( pMyObject->HostName[0] ? pMyObject->HostName : "::", port, &ansc_hints, &pansc_local_addrinfo ) ) { returnStatus = ANSC_STATUS_FAILURE; goto EXIT1; } pMyObject->pHostAddr1 = pansc_local_addrinfo; } #endif /* * To engage the Tcp Daemon, we need to perform following acts in the respective order: * * (1) create the os-dependent socket * (2) manufacture and start all the engines objects * (3) manufacture the global socket object pool * (4) bind to the socket and listen on it */ if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { #ifdef _ANSC_IPV6_COMPATIBLE_ pMyObject->Socket = _xskt_socket(pxskt_local_addrinfo->ai_family, pxskt_local_addrinfo->ai_socktype, 0); #else pMyObject->Socket = _xskt_socket(XSKT_SOCKET_AF_INET, XSKT_SOCKET_STREAM, 0); #endif } else { #ifdef _ANSC_IPV6_COMPATIBLE_ pMyObject->Socket = _ansc_socket(pansc_local_addrinfo->ai_family, pansc_local_addrinfo->ai_socktype, 0); #else pMyObject->Socket = _ansc_socket(ANSC_SOCKET_AF_INET, ANSC_SOCKET_STREAM, 0); #endif } if ( ((pMyObject->Socket == XSKT_SOCKET_INVALID_SOCKET) && (pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET)) || ((pMyObject->Socket == ANSC_SOCKET_INVALID_SOCKET) && !(pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET)) ) { returnStatus = ANSC_STATUS_FAILURE; goto EXIT1; } _ansc_en_reuseaddr(pMyObject->Socket); #ifndef _ANSC_IPV6_COMPATIBLE_ if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { local_addr2.sin_family = XSKT_SOCKET_AF_INET; local_addr2.sin_port = _xskt_htons(pMyObject->HostPort); if ( pMyObject->HostAddress.Value == 0 ) { ((pansc_socket_addr_in)&local_addr2)->sin_addr.s_addr = XSKT_SOCKET_ANY_ADDRESS; } else { ((pansc_socket_addr_in)&local_addr2)->sin_addr.s_addr = pMyObject->HostAddress.Value; } } else { local_addr1.sin_family = ANSC_SOCKET_AF_INET; local_addr1.sin_port = _ansc_htons(pMyObject->HostPort); if ( pMyObject->HostAddress.Value == 0 ) { local_addr1.sin_addr.s_addr = ANSC_SOCKET_ANY_ADDRESS; } else { local_addr1.sin_addr.s_addr = pMyObject->HostAddress.Value; } } #endif #if !defined(_ANSC_KERNEL) || !defined(_ANSC_LINUX) if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { #ifdef _ANSC_IPV6_COMPATIBLE_ s_result = _xskt_bind(pMyObject->Socket, pxskt_local_addrinfo->ai_addr, pxskt_local_addrinfo->ai_addrlen); #else AnscTrace("AnscDstoEngage -- the address is 0x%lX:%d, familty %d.\n", _ansc_ntohl(local_addr2.sin_addr.s_addr), _ansc_ntohs(local_addr2.sin_port), local_addr2.sin_family); s_result = _xskt_bind(pMyObject->Socket, (xskt_socket_addr*)&local_addr2, sizeof(local_addr2)); #endif } else { #ifdef _ANSC_IPV6_COMPATIBLE_ s_result = _ansc_bind(pMyObject->Socket, pansc_local_addrinfo->ai_addr, pansc_local_addrinfo->ai_addrlen); #else s_result = _ansc_bind(pMyObject->Socket, (ansc_socket_addr*)&local_addr1, sizeof(local_addr1)); #endif } #else if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { while ( _xskt_bind(pMyObject->Socket, (ansc_socket_addr*)&local_addr2, sizeof(local_addr2)) != 0 ) { AnscTrace ( "AnscDstoEngage -- failure to bind try again !socket %d family %d port %d address %X \n", pMyObject->Socket, local_addr2.sin_family, local_addr2.sin_port, ((pansc_socket_addr_in)&local_addr2)->sin_addr.s_addr ); AnscSleep(10); } } else { while ( _ansc_bind(pMyObject->Socket, (ansc_socket_addr*)&local_addr1, sizeof(local_addr1)) != 0 ) { AnscTrace ( "AnscDstoEngage -- failure to bind try again !socket %d family %d port %d address %X \n", pMyObject->Socket, local_addr1.sin_family, local_addr1.sin_port, local_addr1.sin_addr.s_addr ); AnscSleep(10); } } #endif if ( s_result != 0 ) { AnscTrace ( "AnscDstoEngage -- failed to bind to the socket, error code is %d!!!\n", (pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET) ? _xskt_get_last_error() : _ansc_get_last_error() ); returnStatus = ANSC_STATUS_FAILURE; goto EXIT2; } pMyObject->ManufactureEnginePool((ANSC_HANDLE)pMyObject); pMyObject->ManufactureSocketPool((ANSC_HANDLE)pMyObject); pMyObject->StartEngines ((ANSC_HANDLE)pMyObject); if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { s_result = _xskt_listen(pMyObject->Socket, ANSC_SOCKET_BACKLOG_VALUE); } else { s_result = _ansc_listen(pMyObject->Socket, ANSC_SOCKET_BACKLOG_VALUE); } if ( s_result != 0 ) { AnscTrace("AnscDstoEngage -- failed to listen on the socket!\n"); returnStatus = ANSC_STATUS_FAILURE; goto EXIT2; } /* * If the compilation option '_ANSC_SOCKET_TLS_LAYER_' is enabled, we can simply let the ANSC * socket layer to perform the SSL/TLS functionality; otherwise, we need to prepare for doing * SSL/TLS internally. */ if ( pMyObject->Mode & ANSC_DSTO_MODE_TLS_ENABLED ) { #ifdef _ANSC_USE_OPENSSL_ pMyObject->bTlsEnabled = TRUE; if ( !openssl_init(SSL_SERVER_CALLS) ) { AnscTrace("AnscSctoEngage - openssl_init() failed!\n"); returnStatus = ANSC_STATUS_FAILURE; goto EXIT2; } #else #ifdef _ANSC_SOCKET_TLS_LAYER_ { _ansc_en_usetls(pMyObject->Socket); pMyObject->bTlsEnabled = FALSE; } #else { pMyObject->hTlsScsIf = (pMyObject->hTlsScsIf != NULL)? pMyObject->hTlsScsIf : AnscSocketTlsGetScsIf(); pMyObject->bTlsEnabled = TRUE; pMyObject->bTlsReqCert = (pMyObject->Mode & ANSC_DSTO_MODE_TLS_REQ_CERT); } #endif #endif } AnscResetEvent(&pMyObject->AcceptEvent); returnStatus = pMyObject->SpawnTask3 ( (ANSC_HANDLE)pMyObject, (void* )pMyObject->AcceptTask, (ANSC_HANDLE)pMyObject, ANSC_DSTO_ACCEPT_TASK_NAME, USER_DEFAULT_TASK_PRIORITY, 2*USER_DEFAULT_TASK_STACK_SIZE ); return ANSC_STATUS_SUCCESS; /****************************************************************** GRACEFUL ROLLBACK PROCEDURES AND EXIT DOORS ******************************************************************/ EXIT2: if ( pMyObject->Mode & ANSC_DSTO_MODE_XSOCKET ) { _xskt_closesocket(pMyObject->Socket); } else { _ansc_closesocket(pMyObject->Socket); } EXIT1: if ( returnStatus != ANSC_STATUS_SUCCESS ) { pMyObject->bActive = FALSE; } return returnStatus; }
char * getDeviceMac() { CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s ENTER\n", __FUNCTION__ )); #if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_IPQ_) // Return without performing any operation as RPi Platform don't have Cable Modem and execution // of this function on RPI puts calling thread in infinite wait. return deviceMAC; #endif while(!strlen(deviceMAC)) { pthread_mutex_lock(&device_mac_mutex); int ret = -1, val_size =0,cnt =0, fd = 0; char *pcomponentName = NULL, *pcomponentPath = NULL; parameterValStruct_t **parameterval = NULL; token_t token; char isEthEnabled[64]={'\0'}; char deviceMACValue[32] = { '\0' }; #ifndef _XF3_PRODUCT_REQ_ char *getList[] = {"Device.X_CISCO_COM_CableModem.MACAddress"}; #else char *getList[] = {"Device.DPoE.Mac_address"}; #endif if (strlen(deviceMAC)) { pthread_mutex_unlock(&device_mac_mutex); break; } fd = s_sysevent_connect(&token); if(CCSP_SUCCESS == check_ethernet_wan_status() && sysevent_get(fd, token, "eth_wan_mac", deviceMACValue, sizeof(deviceMACValue)) == 0 && deviceMACValue[0] != '\0') { strcpy(fullDeviceMAC, deviceMACValue); macToLower(deviceMACValue); CcspTraceInfo(("deviceMAC is %s\n", deviceMAC)); } else { CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Before WebpaInterface_DiscoverComponent ret: %d\n",ret)); if(pcomponentPath == NULL || pcomponentName == NULL) { if(-1 == WebpaInterface_DiscoverComponent(&pcomponentName, &pcomponentPath)){ CcspTraceError(("%s ComponentPath or pcomponentName is NULL\n", __FUNCTION__)); pthread_mutex_unlock(&device_mac_mutex); return NULL; } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, WebpaInterface_DiscoverComponent ret: %d ComponentPath %s ComponentName %s \n",ret, pcomponentPath, pcomponentName)); } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Before GPV ret: %d\n",ret)); ret = CcspBaseIf_getParameterValues(bus_handle, pcomponentName, pcomponentPath, getList, 1, &val_size, ¶meterval); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, After GPV ret: %d\n",ret)); if(ret == CCSP_SUCCESS) { CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, val_size : %d\n",val_size)); for (cnt = 0; cnt < val_size; cnt++) { CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, parameterval[%d]->parameterName : %s\n",cnt,parameterval[cnt]->parameterName)); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, parameterval[%d]->parameterValue : %s\n",cnt,parameterval[cnt]->parameterValue)); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, parameterval[%d]->type :%d\n",cnt,parameterval[cnt]->type)); } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Calling macToLower to get deviceMacId\n")); strcpy(fullDeviceMAC, parameterval[0]->parameterValue); macToLower(parameterval[0]->parameterValue); if(pcomponentName) { AnscFreeMemory(pcomponentName); } if(pcomponentPath) { AnscFreeMemory(pcomponentPath); } } else { CcspLMLiteTrace(("RDK_LOG_ERROR, Failed to get values for %s ret: %d\n",getList[0],ret)); CcspTraceError(("RDK_LOG_ERROR, Failed to get values for %s ret: %d\n",getList[0],ret)); sleep(10); } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Before free_parameterValStruct_t...\n")); free_parameterValStruct_t(bus_handle, val_size, parameterval); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, After free_parameterValStruct_t...\n")); } pthread_mutex_unlock(&device_mac_mutex); } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s EXIT\n", __FUNCTION__ )); return deviceMAC; }
void SetVideoServiceConfig() { int ret = ANSC_STATUS_SUCCESS; BOOL isBridgeMode = FALSE; char bval[2] = {0}; char pMoCAComponentName[64]="eRT.com.cisco.spvtg.ccsp.moca"; char pComponentPath[64]="/com/cisco/spvtg/ccsp/moca"; char *paramNames[]={"Device.MoCA.Interface.1.Enable"}; char buf[5] = {0}; char FirewallLevel[32] = {0}; ULONG len = 0; len = sizeof(FirewallLevel); ret = g_GetParamValueString(g_pDslhDmlAgent, "Device.X_CISCO_COM_Security.Firewall.FirewallLevel", FirewallLevel, &len ); if(ret != ANSC_STATUS_SUCCESS) { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to get Firewall Level \n", __FUNCTION__)); return; } if(!strcmp(FirewallLevel, "High")) { ret = g_SetParamValueString("Device.X_CISCO_COM_Security.Firewall.FirewallLevel", "Medium"); if(ret != ANSC_STATUS_SUCCESS) { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to set Firewall Level to Medium\n", __FUNCTION__)); return; } else { CcspTraceWarning(("Firewall Level being set to MEDIUM when VIDEOSERVICE is ENABLED\n")); } } ret = is_usg_in_bridge_mode(&isBridgeMode); if ( ret == ANSC_STATUS_SUCCESS ) { if(isBridgeMode) { ret = g_SetParamValueString("Device.X_CISCO_COM_DeviceControl.LanManagementEntry.1.LanMode","router"); if(ret != ANSC_STATUS_SUCCESS) { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to set Disable Bridge Mode \n", __FUNCTION__)); return; } else { CcspTraceWarning(("Bridge Mode being DISABLED when VIDEOSERVICE is ENABLED\n")); } } } else { pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); AnscTraceError(("[%s] VideoService : Fail to query bridge mode \n", __FUNCTION__)); return; } syscfg_get( NULL, "moca_enabled", buf, sizeof(buf)); if( buf != NULL ) { if (strcmp(buf,"0") == 0) { parameterValStruct_t value = {"Device.MoCA.Interface.1.Enable", "true", ccsp_boolean}; char compo[256] = "eRT.com.cisco.spvtg.ccsp.moca"; char bus[256] = "/com/cisco/spvtg/ccsp/moca"; char* faultParam = NULL; int ret1 = CCSP_FAILURE; CCSP_MESSAGE_BUS_INFO *bus_info = (CCSP_MESSAGE_BUS_INFO *)bus_handle; ret1 = CcspBaseIf_setParameterValues( bus_handle, compo, bus, 0, 0, &value, 1, TRUE, &faultParam ); if(ret1 != CCSP_SUCCESS) { if(faultParam) { bus_info->freefunc(faultParam); } pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); CcspTraceError(("RDK_LOG_ERROR, [%s] VideoService MoCA Enable FAILED: Failed ret %d\n",__FUNCTION__,ret1)); return; } else { CcspTraceWarning(("MoCA is being ENABLED when VIDEOSERVICE is ENABLED\n")); } } } pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = FALSE; pthread_mutex_unlock(&g_videoservice_mutex); }
BOOL VideoService_SetParamBoolValue ( ANSC_HANDLE hInsContext, char* ParamName, BOOL bValue ) { if (AnscEqualString(ParamName, "Enabled", TRUE)) { char bval[2] = {0}; if( bValue == TRUE ) { char buf[5] = {0}; syscfg_get( NULL, "X_RDKCENTRAL-COM_VIDEOSERVICE", buf, sizeof(buf)); if( buf != NULL ) { if (strcmp(buf,"1") == 0) { return TRUE; } } if(videoServiceEnableInProgress==FALSE) { bval[0] = '1'; pthread_mutex_lock(&g_videoservice_mutex); videoServiceEnableInProgress = TRUE; pthread_t videoServiceThread; if (pthread_create(&videoServiceThread, NULL, &SetVideoServiceConfig, NULL)) { CcspTraceError(("RDK_LOG_ERROR, CcspPandM %s : Failed to Start Thread to start SetVideoServiceConfig \n", __FUNCTION__ )); return FALSE; } pthread_mutex_unlock(&g_videoservice_mutex); CcspTraceWarning(("VIDEOSERVICE is ENABLED\n")); } } else { bval[0] = '0'; CcspTraceWarning(("VIDEOSERVICE is DISABLED\n")); } if (syscfg_set(NULL, "X_RDKCENTRAL-COM_VIDEOSERVICE", bval) != 0) { AnscTraceWarning(("[VideoService] syscfg_set X_RDKCENTRAL-COM_VIDEOSERVICE failed!\n")); } else { if (syscfg_commit() != 0) { AnscTraceWarning(("[VideoService] syscfg_commit X_RDKCENTRAL-COM_VIDEOSERVICE failed!\n")); } } return TRUE; } return FALSE; }
static void *handle_parodus() { int backoffRetryTime = 0; int backoff_max_time = 9; int max_retry_sleep; //Retry Backoff count shall start at c=2 & calculate 2^c - 1. int c =2; int retval=-1; char *parodus_url = NULL; CcspLMLiteConsoleTrace(("RDK_LOG_INFO, ******** Start of handle_parodus ********\n")); pthread_detach(pthread_self()); max_retry_sleep = (int) pow(2, backoff_max_time) -1; CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, max_retry_sleep is %d\n", max_retry_sleep )); get_parodus_url(&parodus_url); if(parodus_url != NULL) { libpd_cfg_t cfg1 = {.service_name = "lmlite", .receive = false, .keepalive_timeout_secs = 0, .parodus_url = parodus_url, .client_url = NULL }; CcspLMLiteConsoleTrace(("RDK_LOG_INFO, Configurations => service_name : %s parodus_url : %s client_url : %s\n", cfg1.service_name, cfg1.parodus_url, cfg1.client_url )); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Call parodus library init api \n")); while(1) { if(backoffRetryTime < max_retry_sleep) { backoffRetryTime = (int) pow(2, c) -1; } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, New backoffRetryTime value calculated as %d seconds\n", backoffRetryTime)); int ret =libparodus_init (&client_instance, &cfg1); CcspLMLiteConsoleTrace(("RDK_LOG_INFO, ret is %d\n",ret)); if(ret ==0) { CcspTraceWarning(("LMLite: Init for parodus Success..!!\n")); break; } else { CcspTraceError(("LMLite: Init for parodus (url %s) failed: '%s'\n", parodus_url, libparodus_strerror(ret))); if( NULL == parodus_url ) { get_parodus_url(&parodus_url); cfg1.parodus_url = parodus_url; } sleep(backoffRetryTime); c++; } retval = libparodus_shutdown(client_instance); } } return 0; }
int ANSC_EXPORT_API COSA_Init ( ULONG uMaxVersionSupported, void* hCosaPlugInfo /* PCOSA_PLUGIN_INFO passed in by the caller */ ) { PCOSA_PLUGIN_INFO pPlugInfo = (PCOSA_PLUGIN_INFO )hCosaPlugInfo; COSAGetParamValueStringProc pGetStringProc = (COSAGetParamValueStringProc )NULL; COSAGetParamValueUlongProc pGetParamValueUlongProc = (COSAGetParamValueUlongProc )NULL; COSAGetCommonHandleProc pGetCHProc = (COSAGetCommonHandleProc )NULL; COSAValidateHierarchyInterfaceProc pValInterfaceProc = (COSAValidateHierarchyInterfaceProc)NULL; COSAGetHandleProc pGetRegistryRootFolder = (COSAGetHandleProc )NULL; COSAGetInstanceNumberByIndexProc pGetInsNumberByIndexProc = (COSAGetInstanceNumberByIndexProc )NULL; COSAGetHandleProc pGetMessageBusHandleProc = (COSAGetHandleProc )NULL; COSAGetInterfaceByNameProc pGetInterfaceByNameProc = (COSAGetInterfaceByNameProc )NULL; if ( uMaxVersionSupported < THIS_PLUGIN_VERSION ) { /* this version is not supported */ return -1; } pPlugInfo->uPluginVersion = THIS_PLUGIN_VERSION; g_pDslhDmlAgent = pPlugInfo->hDmlAgent; /* register the back-end apis for the data model */ pPlugInfo->RegisterFunction(pPlugInfo->hContext, "X_CISCO_COM_ARP_GetParamBoolValue", X_CISCO_COM_ARP_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "X_CISCO_COM_ARP_GetParamIntValue", X_CISCO_COM_ARP_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "X_CISCO_COM_ARP_GetParamUlongValue", X_CISCO_COM_ARP_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "X_CISCO_COM_ARP_GetParamStringValue", X_CISCO_COM_ARP_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_GetEntryCount", ARPTable_GetEntryCount); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_GetEntry", ARPTable_GetEntry); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_IsUpdated", ARPTable_IsUpdated); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_Synchronize", ARPTable_Synchronize); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_GetParamBoolValue", ARPTable_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_GetParamIntValue", ARPTable_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_GetParamUlongValue", ARPTable_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "ARPTable_GetParamStringValue", ARPTable_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_GetParamBoolValue", IPPing_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_GetParamIntValue", IPPing_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_GetParamUlongValue", IPPing_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_GetParamStringValue", IPPing_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_SetParamBoolValue", IPPing_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_SetParamIntValue", IPPing_SetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_SetParamUlongValue", IPPing_SetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_SetParamStringValue", IPPing_SetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_Validate", IPPing_Validate); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_Commit", IPPing_Commit); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "IPPing_Rollback", IPPing_Rollback); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_GetParamBoolValue", TraceRoute_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_GetParamIntValue", TraceRoute_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_GetParamUlongValue", TraceRoute_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_GetParamStringValue", TraceRoute_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_SetParamBoolValue", TraceRoute_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_SetParamIntValue", TraceRoute_SetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_SetParamUlongValue", TraceRoute_SetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_SetParamStringValue", TraceRoute_SetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_Validate", TraceRoute_Validate); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_Commit", TraceRoute_Commit); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "TraceRoute_Rollback", TraceRoute_Rollback); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_GetEntryCount", RouteHops_GetEntryCount); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_GetEntry", RouteHops_GetEntry); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_IsUpdated", RouteHops_IsUpdated); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_Synchronize", RouteHops_Synchronize); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_GetParamBoolValue", RouteHops_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_GetParamIntValue", RouteHops_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_GetParamUlongValue", RouteHops_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "RouteHops_GetParamStringValue", RouteHops_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_GetParamBoolValue", DownloadDiagnostics_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_GetParamIntValue", DownloadDiagnostics_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_GetParamUlongValue", DownloadDiagnostics_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_GetParamStringValue", DownloadDiagnostics_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_SetParamBoolValue", DownloadDiagnostics_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_SetParamIntValue", DownloadDiagnostics_SetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_SetParamUlongValue", DownloadDiagnostics_SetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_SetParamStringValue", DownloadDiagnostics_SetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_Validate", DownloadDiagnostics_Validate); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_Commit", DownloadDiagnostics_Commit); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "DownloadDiagnostics_Rollback", DownloadDiagnostics_Rollback); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_GetParamBoolValue", UploadDiagnostics_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_GetParamIntValue", UploadDiagnostics_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_GetParamUlongValue", UploadDiagnostics_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_GetParamStringValue", UploadDiagnostics_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_SetParamBoolValue", UploadDiagnostics_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_SetParamIntValue", UploadDiagnostics_SetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_SetParamUlongValue", UploadDiagnostics_SetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_SetParamStringValue", UploadDiagnostics_SetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_Validate", UploadDiagnostics_Validate); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_Commit", UploadDiagnostics_Commit); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UploadDiagnostics_Rollback", UploadDiagnostics_Rollback); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_GetParamBoolValue", UDPEchoConfig_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_GetParamIntValue", UDPEchoConfig_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_GetParamUlongValue", UDPEchoConfig_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_GetParamStringValue", UDPEchoConfig_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_SetParamBoolValue", UDPEchoConfig_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_SetParamIntValue", UDPEchoConfig_SetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_SetParamUlongValue", UDPEchoConfig_SetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_SetParamStringValue", UDPEchoConfig_SetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_Validate", UDPEchoConfig_Validate); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_Commit", UDPEchoConfig_Commit); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "UDPEchoConfig_Rollback", UDPEchoConfig_Rollback); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "X_RDKCENTRAL-COM_SpeedTest_GetParamBoolValue", SpeedTest_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "X_RDKCENTRAL-COM_SpeedTest_SetParamBoolValue", SpeedTest_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_GetParamBoolValue", NSLookupDiagnostics_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_GetParamIntValue", NSLookupDiagnostics_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_GetParamUlongValue", NSLookupDiagnostics_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_GetParamStringValue", NSLookupDiagnostics_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_SetParamBoolValue", NSLookupDiagnostics_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_SetParamIntValue", NSLookupDiagnostics_SetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_SetParamUlongValue", NSLookupDiagnostics_SetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_SetParamStringValue", NSLookupDiagnostics_SetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_Validate", NSLookupDiagnostics_Validate); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_Commit", NSLookupDiagnostics_Commit); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "NSLookupDiagnostics_Rollback", NSLookupDiagnostics_Rollback); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_GetEntryCount", Result_GetEntryCount); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_GetEntry", Result_GetEntry); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_IsUpdated", Result_IsUpdated); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_Synchronize", Result_Synchronize); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_GetParamBoolValue", Result_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_GetParamIntValue", Result_GetParamIntValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_GetParamUlongValue", Result_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "Result_GetParamStringValue", Result_GetParamStringValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "LogBackup_GetParamBoolValue", LogBackup_GetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "LogBackup_SetParamBoolValue", LogBackup_SetParamBoolValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "LogBackup_GetParamUlongValue", LogBackup_GetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "LogBackup_SetParamUlongValue", LogBackup_SetParamUlongValue); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "LogBackup_Validate", LogBackup_Validate); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "LogBackup_Commit", LogBackup_Commit); pPlugInfo->RegisterFunction(pPlugInfo->hContext, "LogBackup_Rollback", LogBackup_Rollback); pGetCHProc = (COSAGetCommonHandleProc)pPlugInfo->AcquireFunction("COSAGetDiagPluginInfo"); if( pGetCHProc != NULL) { g_pCosaDiagPluginInfo = pGetCHProc(NULL); } else { goto EXIT; } pGetStringProc = (COSAGetParamValueStringProc)pPlugInfo->AcquireFunction("COSAGetParamValueString"); if( pGetStringProc != NULL) { g_GetParamValueString = pGetStringProc; } else { goto EXIT; } pGetParamValueUlongProc = (COSAGetParamValueUlongProc)pPlugInfo->AcquireFunction("COSAGetParamValueUlong"); if( pGetParamValueUlongProc != NULL) { g_GetParamValueUlong = pGetParamValueUlongProc; } else { goto EXIT; } pValInterfaceProc = (COSAValidateHierarchyInterfaceProc)pPlugInfo->AcquireFunction("COSAValidateHierarchyInterface"); if ( pValInterfaceProc ) { g_ValidateInterface = pValInterfaceProc; } else { goto EXIT; } #ifndef _ANSC_WINDOWSNT #ifdef _SOFTWAREMODULES_SUPPORT_NAF CosaSoftwareModulesInit(hCosaPlugInfo); #endif #endif pGetRegistryRootFolder = (COSAGetHandleProc)pPlugInfo->AcquireFunction("COSAGetRegistryRootFolder"); if ( pGetRegistryRootFolder != NULL ) { g_GetRegistryRootFolder = pGetRegistryRootFolder; } else { printf("!!! haha, catcha !!!\n"); goto EXIT; } pGetInsNumberByIndexProc = (COSAGetInstanceNumberByIndexProc)pPlugInfo->AcquireFunction("COSAGetInstanceNumberByIndex"); if ( pGetInsNumberByIndexProc != NULL ) { g_GetInstanceNumberByIndex = pGetInsNumberByIndexProc; } else { goto EXIT; } pGetInterfaceByNameProc = (COSAGetInterfaceByNameProc)pPlugInfo->AcquireFunction("COSAGetInterfaceByName"); if ( pGetInterfaceByNameProc != NULL ) { g_GetInterfaceByName = pGetInterfaceByNameProc; } else { goto EXIT; } g_pTadCcdIf = g_GetInterfaceByName(g_pDslhDmlAgent, CCSP_CCD_INTERFACE_NAME); if ( !g_pTadCcdIf ) { CcspTraceError(("g_pTadCcdIf is NULL !\n")); goto EXIT; } /* Get Message Bus Handle */ g_GetMessageBusHandle = (PFN_CCSPCCDM_APPLY_CHANGES)pPlugInfo->AcquireFunction("COSAGetMessageBusHandle"); if ( g_GetMessageBusHandle == NULL ) { goto EXIT; } g_MessageBusHandle = (ANSC_HANDLE)g_GetMessageBusHandle(g_pDslhDmlAgent); if ( g_MessageBusHandle == NULL ) { goto EXIT; } g_MessageBusHandle_Irep = g_MessageBusHandle; g_GetSubsystemPrefix = (COSAGetSubsystemPrefixProc)pPlugInfo->AcquireFunction("COSAGetSubsystemPrefix"); if ( g_GetSubsystemPrefix != NULL ) { char* tmpSubsystemPrefix; if ( tmpSubsystemPrefix = g_GetSubsystemPrefix(g_pDslhDmlAgent) ) { AnscCopyString(g_SubSysPrefix_Irep, tmpSubsystemPrefix); } } /* Create backend framework */ g_pCosaBEManager = (PCOSA_BACKEND_MANAGER_OBJECT)CosaBackEndManagerCreate(); if ( g_pCosaBEManager && g_pCosaBEManager->Initialize ) { g_pCosaBEManager->hCosaPluginInfo = pPlugInfo; g_pCosaBEManager->Initialize ((ANSC_HANDLE)g_pCosaBEManager); } if (diag_init() != DIAG_ERR_OK) goto EXIT; return 0; EXIT: return -1; }
ANSC_STATUS BbhmDiagipExpire1 ( ANSC_HANDLE hThisObject ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PBBHM_DIAG_IP_PING_OBJECT pMyObject = (PBBHM_DIAG_IP_PING_OBJECT )hThisObject; PBBHM_IP_PING_PROPERTY pProperty = (PBBHM_IP_PING_PROPERTY )&pMyObject->Property; PBBHM_IP_PING_TDO_OBJECT pStateTimer = (PBBHM_IP_PING_TDO_OBJECT )pMyObject->hStateTimer; PBBHM_IP_PING_SINK_OBJECT pSink = (PBBHM_IP_PING_SINK_OBJECT )pMyObject->hSinkObject; ULONG pktSize = pProperty->PktSize; PICMPV4_ECHO_MESSAGE pIcmpHeader = NULL; /*USHORT oldSeqNumber = AnscIcmpv4EchoGetSeqNumber(pIcmpHeader);*/ ULONG StartTime = 0; /* AnscIcmpv4EchoSetSeqNumber(pIcmpHeader, AnscReadUshort(&pProperty->PktsSent)); AnscIcmpv4UpdateChecksumUshort(pIcmpHeader, oldSeqNumber, AnscReadUshort(&pProperty->PktsSent)); */ if ( pMyObject->IPProtocol == XSKT_SOCKET_AF_INET ) { pIcmpHeader = (PICMPV4_ECHO_MESSAGE)pMyObject->hSendBuffer; AnscIcmpv4EchoSetSeqNumber (pIcmpHeader, (USHORT)pMyObject->GetPktsSent((ANSC_HANDLE)pMyObject)); AnscIcmpv4EchoSetChecksum (pIcmpHeader, 0 ); AnscIcmpv4CalculateChecksum (((PICMPV4_HEADER)pIcmpHeader), pktSize + sizeof(ICMPV4_HEADER) ); StartTime = AnscGetTickInMilliSeconds(); returnStatus = pMyObject->AddEchoEntry ( (ANSC_HANDLE)pMyObject, AnscIcmpv4EchoGetSeqNumber(pIcmpHeader), StartTime ); returnStatus = pMyObject->Send ( (ANSC_HANDLE)pMyObject, (ANSC_HANDLE)pMyObject->hSinkObject, (PVOID)pMyObject->hSendBuffer, pktSize + sizeof(ICMPV4_HEADER) ); } else if ( pMyObject->IPProtocol == XSKT_SOCKET_AF_INET6 ) { pIcmpHeader = (PICMPV6_ECHO_MESSAGE)pMyObject->hSendBuffer; AnscIcmpv6EchoSetSeqNumber (pIcmpHeader, (USHORT)pMyObject->GetPktsSent((ANSC_HANDLE)pMyObject)); AnscIcmpv6EchoSetChecksum (pIcmpHeader, 0 ); StartTime = AnscGetTickInMilliSeconds(); returnStatus = pMyObject->AddEchoEntry ( (ANSC_HANDLE)pMyObject, AnscIcmpv6EchoGetSeqNumber(pIcmpHeader), StartTime ); returnStatus = pMyObject->Send ( (ANSC_HANDLE)pMyObject, (ANSC_HANDLE)pMyObject->hSinkObject, (PVOID)pMyObject->hSendBuffer, pktSize + sizeof(ICMPV6_HEADER) ); } else { CcspTraceError(("IPProtocol error !!\n")); } pProperty->PktsSent++; return returnStatus; }
void sendWebpaMsg(char *serviceName, char *dest, char *trans_id, char *contentType, char *payload, unsigned int payload_len) { pthread_mutex_lock(&webpa_mutex); #ifdef PARODUS_ENABLE wrp_msg_t *wrp_msg ; int retry_count = 0, backoffRetryTime = 0, c = 2; int sendStatus = -1; char source[MAX_PARAMETERNAME_LEN/2] = {'\0'}; #else char* faultParam = NULL; int ret = -1; parameterValStruct_t val = {0}; char * packedMsg = NULL; CCSP_MESSAGE_BUS_INFO *bus_info = (CCSP_MESSAGE_BUS_INFO *)bus_handle; #endif CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s ENTER\n", __FUNCTION__ )); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, <======== Start of sendWebpaMsg =======>\n")); #ifdef PARODUS_ENABLE CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, deviceMAC *********:%s\n",deviceMAC)); if(serviceName!= NULL){ CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, serviceName :%s\n",serviceName)); snprintf(source, sizeof(source), "mac:%s/%s", deviceMAC, serviceName); } if(dest!= NULL){ CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, dest :%s\n",dest)); } if(trans_id!= NULL){ CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, transaction_id :%s\n",trans_id)); } if(contentType!= NULL){ CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, contentType :%s\n",contentType)); } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, payload_len :%d\n",payload_len)); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Received DeviceMac from Atom side: %s\n",deviceMAC)); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Source derived is %s\n", source)); wrp_msg = (wrp_msg_t *)malloc(sizeof(wrp_msg_t)); if(wrp_msg != NULL) { memset(wrp_msg, 0, sizeof(wrp_msg_t)); wrp_msg->msg_type = WRP_MSG_TYPE__EVENT; wrp_msg->u.event.payload = (void *)payload; wrp_msg->u.event.payload_size = payload_len; wrp_msg->u.event.source = source; wrp_msg->u.event.dest = dest; wrp_msg->u.event.content_type = contentType; CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, wrp_msg->msg_type :%d\n",wrp_msg->msg_type)); if(wrp_msg->u.event.payload!=NULL) CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, wrp_msg->u.event.payload :%s\n",(char *)(wrp_msg->u.event.payload))); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, wrp_msg->u.event.payload_size :%d\n",wrp_msg->u.event.payload_size)); if(wrp_msg->u.event.source != NULL) CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, wrp_msg->u.event.source :%s\n",wrp_msg->u.event.source)); if(wrp_msg->u.event.dest!=NULL) CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, wrp_msg->u.event.dest :%s\n",wrp_msg->u.event.dest)); if(wrp_msg->u.event.content_type!=NULL) CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, wrp_msg->u.event.content_type :%s\n",wrp_msg->u.event.content_type)); while(retry_count<=5) { backoffRetryTime = (int) pow(2, c) -1; CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, retry_count : %d\n",retry_count)); sendStatus = libparodus_send(client_instance, wrp_msg); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, sendStatus is %d\n",sendStatus)); if(sendStatus == 0) { retry_count = 0; CcspTraceInfo(("Sent message successfully to parodus\n")); break; } else { CcspTraceError(("Failed to send message: '%s', retrying ....\n",libparodus_strerror(sendStatus))); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, backoffRetryTime %d seconds\n", backoffRetryTime)); sleep(backoffRetryTime); c++; retry_count++; } } CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, Before freeing wrp_msg\n")); free(wrp_msg); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, After freeing wrp_msg\n")); } #else // Pack the message using msgpck WRP notification format and then using base64 packedMsg = packStructure(serviceName, dest, trans_id, payload, contentType,payload_len); /* if(consoleDebugEnable) { fprintf(stderr, "RDK_LOG_DEBUG, base64 encoded msgpack packed data containing %d bytes is : %s\n",strlen(packedMsg),packedMsg); }*/ // set this packed message as value of WebPA Post parameter val.parameterValue = packedMsg; val.type = ccsp_base64; val.parameterName = WEBPA_PARAMETER_NAME; CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, val.parameterName %s, val.type %d\n",val.parameterName,val.type)); ret = CcspBaseIf_setParameterValues(bus_handle, WEBPA_COMPONENT_NAME, WEBPA_DBUS_PATH, 0, 0x0000000C, /* session id and write id */ &val, 1, TRUE, /* no commit */ &faultParam); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, CcspBaseIf_setParameterValues ret %d\n",ret)); if (ret != CCSP_SUCCESS) { CcspLMLiteTrace(("RDK_LOG_ERROR, ~~~~ Error:Failed to SetValue - ret : %d\n", ret)); if(faultParam) { CcspLMLiteTrace(("RDK_LOG_ERROR, ~~~~ Error:Failed to SetValue for param : '%s'\n", faultParam)); bus_info->freefunc(faultParam); } } if(packedMsg != NULL) { free(packedMsg); packedMsg = NULL; } #endif CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, <======== End of sendWebpaMsg =======>\n")); CcspLMLiteConsoleTrace(("RDK_LOG_DEBUG, LMLite %s EXIT\n", __FUNCTION__ )); pthread_mutex_unlock(&webpa_mutex); }
int ANSC_EXPORT_API COSA_Init ( ULONG uMaxVersionSupported, void* hCosaPlugInfo /* PCOSA_PLUGIN_INFO passed in by the caller */ ) { PCOSA_PLUGIN_INFO pPlugInfo = (PCOSA_PLUGIN_INFO )hCosaPlugInfo; COSAGetParamValueByPathNameProc pGetParamValueByPathNameProc = (COSAGetParamValueByPathNameProc)NULL; COSASetParamValueByPathNameProc pSetParamValueByPathNameProc = (COSASetParamValueByPathNameProc)NULL; COSAGetParamValueStringProc pGetStringProc = (COSAGetParamValueStringProc )NULL; COSAGetParamValueUlongProc pGetParamValueUlongProc = (COSAGetParamValueUlongProc )NULL; COSAGetParamValueIntProc pGetParamValueIntProc = (COSAGetParamValueIntProc )NULL; COSAGetParamValueBoolProc pGetParamValueBoolProc = (COSAGetParamValueBoolProc )NULL; COSASetParamValueStringProc pSetStringProc = (COSASetParamValueStringProc )NULL; COSASetParamValueUlongProc pSetParamValueUlongProc = (COSASetParamValueUlongProc )NULL; COSASetParamValueIntProc pSetParamValueIntProc = (COSASetParamValueIntProc )NULL; COSASetParamValueBoolProc pSetParamValueBoolProc = (COSASetParamValueBoolProc )NULL; COSAGetInstanceNumbersProc pGetInstanceNumbersProc = (COSAGetInstanceNumbersProc )NULL; COSAGetCommonHandleProc pGetCHProc = (COSAGetCommonHandleProc )NULL; COSAValidateHierarchyInterfaceProc pValInterfaceProc = (COSAValidateHierarchyInterfaceProc)NULL; COSAGetHandleProc pGetRegistryRootFolder = (COSAGetHandleProc )NULL; COSAGetInstanceNumberByIndexProc pGetInsNumberByIndexProc = (COSAGetInstanceNumberByIndexProc )NULL; COSAGetHandleProc pGetMessageBusHandleProc = (COSAGetHandleProc )NULL; COSAGetInterfaceByNameProc pGetInterfaceByNameProc = (COSAGetInterfaceByNameProc )NULL; ULONG ret = 0; if ( uMaxVersionSupported < THIS_PLUGIN_VERSION ) { /* this version is not supported */ return -1; } pPlugInfo->uPluginVersion = THIS_PLUGIN_VERSION; g_pDslhDmlAgent = pPlugInfo->hDmlAgent; /* pGetCHProc = (COSAGetCommonHandleProc)pPlugInfo->AcquireFunction("COSAGetDiagPluginInfo"); if( pGetCHProc != NULL) { g_pCosaDiagPluginInfo = pGetCHProc(NULL); } else { goto EXIT; } */ pGetParamValueByPathNameProc = (COSAGetParamValueByPathNameProc)pPlugInfo->AcquireFunction("COSAGetParamValueByPathName"); if( pGetParamValueByPathNameProc != NULL) { g_GetParamValueByPathNameProc = pGetParamValueByPathNameProc; } else { goto EXIT; } pSetParamValueByPathNameProc = (COSASetParamValueByPathNameProc)pPlugInfo->AcquireFunction("COSASetParamValueByPathName"); if( pSetParamValueByPathNameProc != NULL) { g_SetParamValueByPathNameProc = pSetParamValueByPathNameProc; } else { goto EXIT; } pGetStringProc = (COSAGetParamValueStringProc)pPlugInfo->AcquireFunction("COSAGetParamValueString"); if( pGetStringProc != NULL) { g_GetParamValueString = pGetStringProc; } else { goto EXIT; } pGetParamValueUlongProc = (COSAGetParamValueUlongProc)pPlugInfo->AcquireFunction("COSAGetParamValueUlong"); if( pGetParamValueUlongProc != NULL) { g_GetParamValueUlong = pGetParamValueUlongProc; } else { goto EXIT; } pGetParamValueIntProc = (COSAGetParamValueUlongProc)pPlugInfo->AcquireFunction("COSAGetParamValueInt"); if( pGetParamValueIntProc != NULL) { g_GetParamValueInt = pGetParamValueIntProc; } else { goto EXIT; } pGetParamValueBoolProc = (COSAGetParamValueBoolProc)pPlugInfo->AcquireFunction("COSAGetParamValueBool"); if( pGetParamValueBoolProc != NULL) { g_GetParamValueBool = pGetParamValueBoolProc; } else { goto EXIT; } pSetStringProc = (COSASetParamValueStringProc)pPlugInfo->AcquireFunction("COSASetParamValueString"); if( pSetStringProc != NULL) { g_SetParamValueString = pSetStringProc; } else { goto EXIT; } pSetParamValueUlongProc = (COSASetParamValueUlongProc)pPlugInfo->AcquireFunction("COSASetParamValueUlong"); if( pSetParamValueUlongProc != NULL) { g_SetParamValueUlong = pSetParamValueUlongProc; } else { goto EXIT; } pSetParamValueIntProc = (COSASetParamValueIntProc)pPlugInfo->AcquireFunction("COSASetParamValueInt"); if( pSetParamValueIntProc != NULL) { g_SetParamValueInt = pSetParamValueIntProc; } else { goto EXIT; } pSetParamValueBoolProc = (COSASetParamValueBoolProc)pPlugInfo->AcquireFunction("COSASetParamValueBool"); if( pSetParamValueBoolProc != NULL) { g_SetParamValueBool = pSetParamValueBoolProc; } else { goto EXIT; } pGetInstanceNumbersProc = (COSAGetInstanceNumbersProc)pPlugInfo->AcquireFunction("COSAGetInstanceNumbers"); if( pGetInstanceNumbersProc != NULL) { g_GetInstanceNumbers = pGetInstanceNumbersProc; } else { goto EXIT; } pValInterfaceProc = (COSAValidateHierarchyInterfaceProc)pPlugInfo->AcquireFunction("COSAValidateHierarchyInterface"); if ( pValInterfaceProc ) { g_ValidateInterface = pValInterfaceProc; } else { goto EXIT; } /* #ifndef _ANSC_WINDOWSNT #ifdef _SOFTWAREMODULES_SUPPORT_NAF CosaSoftwareModulesInit(hCosaPlugInfo); #endif #endif */ pGetRegistryRootFolder = (COSAGetHandleProc)pPlugInfo->AcquireFunction("COSAGetRegistryRootFolder"); if ( pGetRegistryRootFolder != NULL ) { g_GetRegistryRootFolder = pGetRegistryRootFolder; } else { printf("!!! haha, catcha !!!\n"); goto EXIT; } pGetInsNumberByIndexProc = (COSAGetInstanceNumberByIndexProc)pPlugInfo->AcquireFunction("COSAGetInstanceNumberByIndex"); if ( pGetInsNumberByIndexProc != NULL ) { g_GetInstanceNumberByIndex = pGetInsNumberByIndexProc; } else { goto EXIT; } pGetInterfaceByNameProc = (COSAGetInterfaceByNameProc)pPlugInfo->AcquireFunction("COSAGetInterfaceByName"); if ( pGetInterfaceByNameProc != NULL ) { g_GetInterfaceByName = pGetInterfaceByNameProc; } else { goto EXIT; } g_pPnmCcdIf = g_GetInterfaceByName(g_pDslhDmlAgent, CCSP_CCD_INTERFACE_NAME); if ( !g_pPnmCcdIf ) { CcspTraceError(("g_pPnmCcdIf is NULL !\n")); goto EXIT; } g_RegisterCallBackAfterInitDml = (COSARegisterCallBackAfterInitDmlProc)pPlugInfo->AcquireFunction("COSARegisterCallBackAfterInitDml"); if ( !g_RegisterCallBackAfterInitDml ) { goto EXIT; } g_COSARepopulateTable = (COSARepopulateTableProc)pPlugInfo->AcquireFunction("COSARepopulateTable"); if ( !g_COSARepopulateTable ) { goto EXIT; } /* Get Message Bus Handle */ g_GetMessageBusHandle = (PFN_CCSPCCDM_APPLY_CHANGES)pPlugInfo->AcquireFunction("COSAGetMessageBusHandle"); if ( g_GetMessageBusHandle == NULL ) { goto EXIT; } g_MessageBusHandle = (ANSC_HANDLE)g_GetMessageBusHandle(g_pDslhDmlAgent); if ( g_MessageBusHandle == NULL ) { goto EXIT; } g_MessageBusHandle_Irep = g_MessageBusHandle; /* Get Subsystem prefix */ g_GetSubsystemPrefix = (COSAGetSubsystemPrefixProc)pPlugInfo->AcquireFunction("COSAGetSubsystemPrefix"); if ( g_GetSubsystemPrefix != NULL ) { char* tmpSubsystemPrefix; if ( tmpSubsystemPrefix = g_GetSubsystemPrefix(g_pDslhDmlAgent) ) { AnscCopyString(g_SubSysPrefix_Irep, tmpSubsystemPrefix); } /* retrieve the subsystem prefix */ g_SubsystemPrefix = g_GetSubsystemPrefix(g_pDslhDmlAgent); } /* Create backend framework */ g_pCosaBEManager = (PCOSA_BACKEND_MANAGER_OBJECT)CosaBackEndManagerCreate(); if ( g_pCosaBEManager && g_pCosaBEManager->Initialize ) { g_pCosaBEManager->hCosaPluginInfo = pPlugInfo; g_pCosaBEManager->Initialize ((ANSC_HANDLE)g_pCosaBEManager); } return 0; EXIT: return -1; }