BOOL
VideoService_GetParamBoolValue
    (
        ANSC_HANDLE                 hInsContext,
        char*                       ParamName,
        BOOL*                       pBool
    )
{

    if (AnscEqualString(ParamName, "Enabled", TRUE))
    {
        char buf[5] = {0};
        syscfg_get( NULL, "X_RDKCENTRAL-COM_VIDEOSERVICE", buf, sizeof(buf));
        if( buf != NULL )
        {
                if (strcmp(buf,"1") == 0)
                {
                        *pBool = TRUE;
                        return TRUE;
                }
        }

        *pBool = FALSE;

        return TRUE;
    }

    return FALSE;
}
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, &parameterval);
            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;
}
BOOL
ConnectivityTest_GetParamIntValue
    (
        ANSC_HANDLE                 hInsContext,
        char*                       ParamName,
        int*                        pInt
    )
{
    PCOSA_DATAMODEL_SELFHEAL            pMyObject           = (PCOSA_DATAMODEL_SELFHEAL)g_pCosaBEManager->hSelfHeal;

    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_RebootInterval", TRUE))
    {
        /* collect value */
	   *pInt = pMyObject->pConnTest->RouterRebootInterval ;
	   return TRUE;
    }

    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_CurrentCount", TRUE))
    {
        /* collect value */
        char buf[16]={0};
        syscfg_get( NULL, "todays_reset_count", buf, sizeof(buf));
        if( buf[0] != '\0' )
        {
                    *pInt = atoi(buf);
                     return TRUE;
        }
    }
    
    return FALSE;
}
BOOL
ConnectivityTest_GetParamUlongValue
    (
        ANSC_HANDLE                 hInsContext,
        char*                       ParamName,
        ULONG*                      pUlong
    )
{

    PCOSA_DATAMODEL_SELFHEAL            pMyObject           = (PCOSA_DATAMODEL_SELFHEAL)g_pCosaBEManager->hSelfHeal;
    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_PingInterval", TRUE))
    {
        /* collect value */
		*pUlong = pMyObject->pConnTest->PingInterval; 
        return TRUE;
    }

    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_NumPingsPerServer", TRUE))
    {
        /* collect value */
		*pUlong = pMyObject->pConnTest->PingCount; 
        return TRUE;
    }

    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_MinNumPingServer", TRUE))
    {
        /* collect value */
		*pUlong = pMyObject->pConnTest->MinPingServer; 
        return TRUE;
    }

    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_PingRespWaitTime", TRUE))
    {
        /* collect value */
		*pUlong = pMyObject->pConnTest->WaitTime; 
        return TRUE;
    }

    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_LastReboot", TRUE))
    {
        /* collect value */
	char buf[64]={0};
	syscfg_get( NULL, "last_router_reboot_time", buf, sizeof(buf));
	if( buf[0] != '\0' )
	{
		*pUlong = atoi(buf);
		return TRUE;
	}
    }

    return FALSE;
}
Exemple #5
0
void alarm_handler(int signal)
{
	char buf[4];
	memset(buf, 0, sizeof(buf));
	syscfg_get(NULL, "HomeSecurityEthernet4Flag", buf, sizeof(buf));

	if(strcmp(buf, "1") && signal == SIGALRM)
	{
		//system("date");
		homesecurity_timeout_handler();
		log_printf(LOG_WARNING, "received alarm signal, stopping eth4 Home Security\n");
	}
}
ANSC_STATUS
	CosaDmlDiGetCloudCapable
	(
     	BOOL *pValue
	)
{
	int rc;
    char buf[5];

	memset(buf, 0, sizeof(buf));
	rc = syscfg_get( NULL, "cloud_capable_flag", buf, sizeof(buf));
    if( rc == 0 )
    {
        if (strcmp(buf,"1") == 0)
            *pValue = TRUE;
        else
    		*pValue = FALSE;
    }
	return ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
CosaUsersBackendGetUserInfo
    (
        ANSC_HANDLE                 hThisObject
    )
{
    ANSC_STATUS                     returnStatus      = ANSC_STATUS_SUCCESS;    
    PCOSA_DATAMODEL_USERS           pMyObject         = (PCOSA_DATAMODEL_USERS)hThisObject;
    PCOSA_DML_USER                  pCosaUser         = NULL;
    ULONG                           clientCount       = 0;
    ULONG                           count             = 0;
    ULONG                           ulIndex           = 0;

    PCOSA_CONTEXT_LINK_OBJECT       pUserCxtLink      = NULL;    
    PCOSA_CONTEXT_LINK_OBJECT       pUserCxtLink2     = NULL;    
    PCOSA_CONTEXT_LINK_OBJECT       pCxtLink          = NULL;
    BOOL                            bNeedSave         = FALSE;

    /* Get Users.user.{i} */
    clientCount = CosaDmlUserGetNumberOfEntries(NULL);
    for ( ulIndex = 0; ulIndex < clientCount; ulIndex++ )
    {
        pCosaUser  = (PCOSA_DML_USER)AnscAllocateMemory( sizeof(COSA_DML_USER) );
        if ( !pCosaUser )
        {
            break;
        }

        USERS_USER_SET_DEFAULTVALUE(pCosaUser);
        pCosaUser->NumOfFailedAttempts=0;     
        returnStatus = CosaDmlUserGetEntry(NULL, ulIndex, pCosaUser);
        if ( returnStatus != ANSC_STATUS_SUCCESS )
        {
            AnscFreeMemory(pCosaUser);
            break;
        }
        if (ulIndex == 2)
        {
           char buff[128]={'\0'};
           syscfg_get( NULL, "hash_password_3",buff, sizeof(buff));
           if( buff[0] != '\0' && pCosaUser->HashedPassword[0]== '\0')
           {
             _ansc_strncpy(pCosaUser->HashedPassword,buff,sizeof(pCosaUser->HashedPassword));
           }
        }
#if defined(_COSA_FOR_BCI_)
        if (ulIndex == 1)
        {
           char buff[128]={'\0'};
           syscfg_get( NULL, "hash_password_2",buff, sizeof(buff));
           if( buff[0] != '\0' && pCosaUser->HashedPassword[0]== '\0')
           {
             _ansc_strncpy(pCosaUser->HashedPassword,buff,sizeof(pCosaUser->HashedPassword));
           }
           pCosaUser->LockOutRemainingTime = 0 ;
           memset(buff,0,sizeof(buff));
           syscfg_get( NULL, "PasswordLockoutAttempts", buff, sizeof(buff));
           if( atoi ( buff ) != 10 )
           {
		memset(buff,0,sizeof(buff));
		sprintf(buff, "%d", 10);
		syscfg_set(NULL, "PasswordLockoutAttempts", buff) ;
		syscfg_commit() ;
           }

           memset(buff,0,sizeof(buff));
           syscfg_get( NULL, "NumOfFailedAttempts_2", buff, sizeof(buff));
           if( buff[0] != '\0' )
           {
               pCosaUser->NumOfFailedAttempts = atoi(buff) ;
           }
           memset(buff,0,sizeof(buff));
           syscfg_get( NULL, "PasswordLoginCounts_2", buff, sizeof(buff));
           if( buff[0] != '\0' )
           {
               pCosaUser->LoginCounts = atoi(buff) ;
           }
        }
#endif
        pUserCxtLink = (PCOSA_CONTEXT_LINK_OBJECT)AnscAllocateMemory( sizeof(COSA_CONTEXT_LINK_OBJECT) );
        if ( !pUserCxtLink )
        {
            AnscFreeMemory(pCosaUser);
            break;
        }

        COSA_CONTEXT_LINK_INITIATION_CONTENT(pUserCxtLink)
        pUserCxtLink->hContext       = (ANSC_HANDLE)pCosaUser;
        pUserCxtLink->bNew           = FALSE;

        if ( !pCosaUser->InstanceNumber )
        {
            if ( !++pMyObject->maxInstanceOfUser )
            {
                pMyObject->maxInstanceOfUser = 1;
            }
            bNeedSave                    = TRUE;

            pCosaUser->InstanceNumber    = pMyObject->maxInstanceOfUser;
            pUserCxtLink->InstanceNumber = pCosaUser->InstanceNumber;

            _ansc_sprintf(pCosaUser->Username, "Username%d", pCosaUser->InstanceNumber);

            returnStatus = CosaDmlUserSetValues
                            (
                                NULL,
                                ulIndex,
                                pCosaUser->InstanceNumber
                            );

            if ( returnStatus != ANSC_STATUS_SUCCESS )
            {
                AnscFreeMemory(pCosaUser);
                AnscFreeMemory(pUserCxtLink);
                break;
            }

            /* Put into our list */
            CosaSListPushEntryByInsNum(&pMyObject->UserList, pUserCxtLink);
        }
        else
        {
            pUserCxtLink->InstanceNumber = pCosaUser->InstanceNumber;

            if ( pMyObject->maxInstanceOfUser < pUserCxtLink->InstanceNumber )
            {
                pMyObject->maxInstanceOfUser  = pUserCxtLink->InstanceNumber;                
                bNeedSave                     = TRUE;
            }
            
            /* if this entry is in link tree already because it's the parent of delay_added table.
                      */
            pUserCxtLink2 = (PCOSA_CONTEXT_LINK_OBJECT)CosaSListGetEntryByInsNum(&pMyObject->UserList, pUserCxtLink->InstanceNumber);
            if ( !pUserCxtLink2 )
            {
                CosaSListPushEntryByInsNum(&pMyObject->UserList, pUserCxtLink);
            }
            else
            {
                AnscFreeMemory( pUserCxtLink2->hContext );
                pUserCxtLink2->hContext       = (ANSC_HANDLE)pCosaUser;
                if ( pUserCxtLink2->bNew )
                {
                    pUserCxtLink2->bNew       = FALSE;
                    bNeedSave                 = TRUE;
                }

                AnscFreeMemory(pUserCxtLink);
                pUserCxtLink                  = pUserCxtLink2;
                pUserCxtLink2                 = NULL;
            }            
        }
    }
    
    /* Max InstanceNumber is changed. Save now.*/
    if (bNeedSave)
    {
        CosaUsersRegSetUserInfo(pMyObject);
    }

    return returnStatus;    
}
int hotspot_update_circuit_ids(int greinst, int queuestart) {
    int retval = 0;
    char localinterfaces[200];
    char paramname[60];
    char circuitid[100];
    char outdata[80];
    char* save = NULL;
    char* curInt = NULL;
    int nameSave = 0;
    int circuitSave = 0;
    int ssidInst = 0;
    int size;
    int inst;
    parameterValStruct_t varStruct;
    varStruct.parameterName = paramname;
    varStruct.parameterValue = outdata;
//     /*if (ppComponents == NULL) {
//         initWifiComp();
//     }*/
    
    //snprintf(paramname, sizeof(paramname), 
    GrePsmGetStr(GRE_PARAM_LOCALIFS, greinst, localinterfaces, sizeof(localinterfaces));
    
    curInt = strtok_r(localinterfaces, ",", &save);
    
    while (curInt) {
        circuitSave=0;
        //Trim off the trailing dot if it exists
        size = strlen(curInt);
        if (curInt[size -1] == '.')
            curInt[size - 1]='\0';
        
        inst = atoi(strrchr(curInt,'.')+1);
        
        size = sizeof(outdata);
        
        if (syscfg_get(NULL, "wan_physical_ifname", paramname, sizeof(paramname)) != 0) {
            AnscTraceWarning(("fail to get wan_physical_ifname\n"));
            snprintf(paramname, sizeof(paramname), "erouter0");
        }
        if (get_if_hwaddr(paramname, circuitid, sizeof(circuitid)) != 0) {
            AnscTraceWarning(("fail to get HW Addr for %s\n", paramname));
            snprintf(circuitid, sizeof(circuitid), "00:00:00:00:00:00");
        }

        circuitSave = strlen(circuitid);
        circuitSave += snprintf(circuitid + circuitSave, sizeof(circuitid) - circuitSave, ";");
#if 0
        snprintf(paramname, sizeof(paramname), "%s.%s", curInt, "BSSID");
        retval = COSAGetParamValueByPathName(bus_handle, &varStruct, &size);
        if ( retval != ANSC_STATUS_SUCCESS)
            return -1;
        circuitSave = snprintf(circuitid, sizeof(circuitid), "%s;", varStruct.parameterValue);
#endif
        
        size = sizeof(outdata);
        snprintf(paramname, sizeof(paramname),"%s.%s", curInt, "SSID");
        retval = COSAGetParamValueByPathName(bus_handle, &varStruct, &size);
        if ( retval != ANSC_STATUS_SUCCESS)
            return -1;
        circuitSave += snprintf(circuitid + circuitSave, sizeof(circuitid) - circuitSave, "%s;", varStruct.parameterValue);
        
        size = sizeof(outdata);
        snprintf(paramname, sizeof(paramname), "Device.WiFi.AccessPoint.%d.Security.ModeEnabled", inst);
        retval = COSAGetParamValueByPathName(bus_handle, &varStruct, &size);
        if ( retval != ANSC_STATUS_SUCCESS)
            return -1;
        if(strcmp("None", varStruct.parameterValue)) {
            snprintf(circuitid + circuitSave, sizeof(circuitid) - circuitSave, "s");
        } else {
            snprintf(circuitid + circuitSave, sizeof(circuitid) - circuitSave, "o");
        }
        
        snprintf(paramname, sizeof(paramname), "snooper-queue%d-circuitID", queuestart);
        
        sysevent_set(sysevent_fd, sysevent_token, paramname, circuitid, 0);
        
        snprintf(paramname, sizeof(paramname), "snooper-ssid%d-index", queuestart++);
        snprintf(outdata, sizeof(outdata), "%d", inst);
        
        sysevent_set(sysevent_fd, sysevent_token, paramname, outdata, 0);
        
        //sysevent set snoopereventforcircuitid_queuestart++ circuitid
        
        curInt = strtok_r(NULL, ",", &save);
    }
    
    return queuestart;
    ////get_wifi_param(dm, buf);
    //get local interfaces
    //foreach
        //read bssid
        //read ssid
        //read security type
        //sysevent set circuit id
    //ef
}
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;

}
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);
}
Exemple #11
0
/*
 * hnapsrv main entry point
 */
int main(int argc, char *argv[])
{
    int port;
    int fdSock, ret;
    struct sockaddr_in addrServer;
	struct ifreq ifr;
	char buf[4];

    openlog ("hs_log", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
#ifdef INCLUDE_BREAKPAD
    breakpad_ExceptionHandler();
#endif
    /* Command line */
    if (argc < 2)
    {
        perror("Error: No port provided\n");
        exit(1);
    }
    port = atoi(argv[1]);	
	syscfg_init();
	/* Bind to the socket */
    fdSock = socket(AF_INET, SOCK_STREAM, 0);
    if (fdSock < 0)
    {
        perror("Error: Failure opening socket\n");
        exit(1);
    }
    memset(&addrServer, 0, sizeof(addrServer));
    addrServer.sin_family = AF_INET;
    addrServer.sin_addr.s_addr = INADDR_ANY;
    addrServer.sin_port = htons(port);

	memset(&ifr, 0, sizeof(ifr));
	strncpy(ifr.ifr_name, "brlan1", IFNAMSIZ);
	//binding interface 
	while (setsockopt(fdSock, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr)) < 0) {
		log_printf(LOG_WARNING, "Failure binding interface");
		sleep(1);
	}
    if (bind(fdSock, (struct sockaddr*)&addrServer, sizeof(addrServer)) < 0)
    {
        perror("Error: Failure binding socket");
        exit(1);
    }
	mbus_init();

	//If HomeSecurityEthernet4Flag was not set, need toggle Ethernet port 4 again to aviod
	//unexpected reboot during previous SetBridgeConnect method
	memset(buf, 0, sizeof(buf));
	ret = syscfg_get(NULL, "HomeSecurityEthernet4Flag", buf, sizeof(buf));

	//printf("*************************** %s\n", buf);
	if(ret == -1 || strcmp(buf, "1"))
	{
		homesecurity_timeout_handler();
	}

	//For SetBridgeConnect timer 
	signal( SIGALRM, alarm_handler);

    /* Loop forever... */
    while (1)
    {
        int fdRequest;
        socklen_t cbRequest;
        struct sockaddr_in addrRequest;

        /* Listen on the socket */
        listen(fdSock, 5);
        cbRequest = sizeof(addrRequest);
        fdRequest = accept(fdSock, (struct sockaddr*)&addrRequest, &cbRequest);
        if (fdRequest >= 0)
        {
            /* Create the request file streams */
            FILE* pfhRead = fdopen(fdRequest, "r+b");
            FILE* pfhWrite = fdopen(fdRequest, "w+b");
            if (pfhRead && pfhWrite)
            {
                HTTP_HandleRequest(pfhRead, pfhWrite);
            }

            /* Close the socket */
            if (pfhWrite)
            {
                fflush(pfhWrite);
                fclose(pfhWrite);
            }
            if (pfhRead)
            {
                fclose(pfhRead);
            }
        }
    }

    return 0;
}
/**********************************************************************  

    caller:     owner of this object 

    prototype: 

        ULONG
        DeviceInfo_GetParamStringValue_Custom
            (
                ANSC_HANDLE                 hInsContext,
                char*                       ParamName,
                char*                       pValue,
                ULONG*                      pUlSize
            );

    description:

        This function is called to retrieve string parameter value; 

    argument:   ANSC_HANDLE                 hInsContext,
                The instance handle;

                char*                       ParamName,
                The parameter name;

                char*                       pValue,
                The string value buffer;

                ULONG*                      pUlSize
                The buffer of length of string value;
                Usually size of 1023 will be used.
                If it's not big enough, put required size here and return 1;

    return:     0 if succeeded;
                1 if short of buffer size; (*pUlSize = required size)
                -1 if not supported.

**********************************************************************/
ULONG
DeviceInfo_GetParamStringValue_Custom
    (
        ANSC_HANDLE                 hInsContext,
        char*                       ParamName,
        char*                       pValue,
        ULONG*                      pulSize
    )
{
    PCOSA_DATAMODEL_DEVICEINFO      pMyObject = (PCOSA_DATAMODEL_DEVICEINFO)g_pCosaBEManager->hDeviceInfo;

#ifdef CONFIG_INTERNET2P0   
    if( AnscEqualString(ParamName, "X_RDKCENTRAL-COM_CloudUIWebURL", TRUE))
    { 
	syscfg_get(NULL, "redirection_url", pMyObject->WebURL, sizeof(pMyObject->WebURL));
	AnscCopyString(pValue, pMyObject->WebURL);
        return 0;
    } 
#endif

#ifdef CONFIG_VENDOR_CUSTOMER_COMCAST
	if( AnscEqualString(ParamName, "X_COMCAST-COM_CM_MAC", TRUE))
	{
	   CosaDmlDiGetCMMacAddress(NULL, pValue,pulSize);
	   return 0;
	}

	if( AnscEqualString(ParamName, "X_COMCAST-COM_WAN_MAC", TRUE))
	{
	   CosaDmlDiGetRouterMacAddress(NULL, pValue,pulSize);
	   return 0;
	}

	if( AnscEqualString(ParamName, "X_COMCAST-COM_AP_MAC", TRUE))
	{
	   CosaDmlDiGetRouterMacAddress(NULL, pValue,pulSize);
	   return 0;
	}

	if( AnscEqualString(ParamName, "X_COMCAST-COM_MTA_MAC", TRUE))
	{
	   CosaDmlDiGetMTAMacAddress(NULL, pValue,pulSize);
	   return 0;
	}

	if( AnscEqualString(ParamName, "X_COMCAST-COM_CM_IP", TRUE))
	{
	   CosaDmlDiGetCMIPAddress(NULL, pValue,pulSize);
	   return 0;
	}

	if( AnscEqualString(ParamName, "X_COMCAST-COM_WAN_IP", TRUE))
	{
	   CosaDmlDiGetRouterIPAddress(NULL, pValue,pulSize);
	   return 0;
	}

	if( AnscEqualString(ParamName, "X_COMCAST-COM_WAN_IPv6", TRUE))
	{
	   CosaDmlDiGetRouterIPv6Address(NULL, pValue,pulSize);
	   return 0;
	}

	if( AnscEqualString(ParamName, "X_COMCAST-COM_MTA_IP", TRUE))
	{
	   CosaDmlDiGetMTAIPAddress(NULL, pValue,pulSize);
	   return 0;
	}
#endif

    /* CcspTraceWarning(("Unsupported parameter '%s'\n", ParamName)); */
    return -1;
}
/**********************************************************************  

    caller:     owner of this object 

    prototype: 

        BOOL
        DeviceInfo_GetParamBoolValue_Custom
            (
                ANSC_HANDLE                 hInsContext,
                char*                       ParamName,
                BOOL*                       pBool
            );

    description:

        This function is called to retrieve Boolean parameter value; 

    argument:   ANSC_HANDLE                 hInsContext,
                The instance handle;

                char*                       ParamName,
                The parameter name;

                BOOL*                       pBool
                The buffer of returned boolean value;

    return:     TRUE if succeeded.

**********************************************************************/
BOOL
DeviceInfo_GetParamBoolValue_Custom
    (
        ANSC_HANDLE                 hInsContext,
        char*                       ParamName,
        BOOL*                       pBool
    )
{
    PCOSA_DATAMODEL_DEVICEINFO      pMyObject = (PCOSA_DATAMODEL_DEVICEINFO)g_pCosaBEManager->hDeviceInfo;
    char *param_value = NULL;

#ifdef CONFIG_INTERNET2P0
    if (AnscEqualString(ParamName, "X_RDKCENTRAL-COM_ConfigureWiFi", TRUE))
    {
        PSM_Get_Record_Value2(bus_handle,g_Subsystem, "Device.DeviceInfo.X_RDKCENTRAL-COM_ConfigureWiFi", NULL, &param_value);
	if(strcmp(param_value,"true") == 0)
		pMyObject->bWiFiConfigued = TRUE;
	else
		pMyObject->bWiFiConfigued = FALSE;
       *pBool = pMyObject->bWiFiConfigued;
	return TRUE;
    }
    if (AnscEqualString(ParamName, "X_RDKCENTRAL-COM_WiFiNeedsPersonalization",TRUE))
    {
	    char buf[5];
        syscfg_get( NULL, "redirection_flag", buf, sizeof(buf));
    	if( buf != NULL )
    	{
    		if (strcmp(buf,"true") == 0)
    		        *pBool = TRUE;
    		    else
    		        *pBool = FALSE;
    	}
	    return TRUE;
    }
	    if (AnscEqualString(ParamName, "X_RDKCENTRAL-COM_CaptivePortalEnable", TRUE))
    {
 //      *pBool = pMyObject->bCaptivePortalEnable;
        if (CosaDmlGetCaptivePortalEnable(&pMyObject->bCaptivePortalEnable) != ANSC_STATUS_SUCCESS)
            return FALSE;
       *pBool = pMyObject->bCaptivePortalEnable;
	return TRUE;
    }
    if (AnscEqualString(ParamName, "X_RDKCENTRAL-COM_CloudUICapable", TRUE))
    {

	    *pBool = pMyObject->bCloudCapable;
	     return TRUE;

    }
    if (AnscEqualString(ParamName, "X_RDKCENTRAL-COM_CloudUIEnable", TRUE))
    {
       *pBool = pMyObject->bCloudEnable;
	char buf[5];
        syscfg_get( NULL, "cloud_enable_flag", buf, sizeof(buf));
    	if( buf != NULL )
    		{
    		    if (strcmp(buf,"1") == 0)
    		        pMyObject->bCloudEnable = TRUE;
    		    else
    		        pMyObject->bCloudEnable = FALSE;
    		}
	*pBool = pMyObject->bCloudEnable;
	return TRUE;
    }
#endif
 
#ifdef CONFIG_CISCO_HOTSPOT
    /* check the parameter name and return the corresponding value */
    if (AnscEqualString(ParamName, "X_COMCAST-COM_xfinitywifiCapableCPE", TRUE))
    {
        if (CosaDmlDiGetXfinityWiFiCapable(pBool) != ANSC_STATUS_SUCCESS)
            return FALSE;
        return TRUE;
    }
    if (AnscEqualString(ParamName, "X_COMCAST_COM_xfinitywifiEnable", TRUE))
    {
         if (CosaDmlDiGetXfinityWiFiEnable(pBool) != ANSC_STATUS_SUCCESS)
             return FALSE;
			// printf("%s : bxfinitywifiEnable value is : %d\n",__FUNCTION__,pMyObject->bxfinitywifiEnable);
			//*pBool = pMyObject->bxfinitywifiEnable;
        return TRUE;
    }
#endif

    if (AnscEqualString(ParamName, "X_COMCAST-COM_rdkbPlatformCapable", TRUE))
    {
       *pBool = TRUE;
	    return TRUE;
    }

    /* CcspTraceWarning(("Unsupported parameter '%s'\n", ParamName)); */
    return FALSE;
}