Пример #1
0
// read variables from config.ini file
bool GatewayConfig::ReadGWVariables()
{
    // **********************CIniParser************************//

    CIniParser gwVarConfig;
    net_address stNetAddr;

    if (!gwVarConfig.Load(FILE_PATH_CONFIGINI))
    {
        LOG("------- NO CONFIG.INI FILE -------");
        return 0;
    }

    if (!gwVarConfig.GetVar("NETWORK_MANAGER", "NETWORK_MANAGER", &stNetAddr))
        return 0;

    m_nNetworkManagerPort = ntohs(stNetAddr.m_dwPortNo);
    strcpy(m_szNetworkManagerHost, inet_ntoa(*(in_addr*) &stNetAddr.m_nIP));

    // ****************CConfig**********************************//

    if (!CConfig::Init("WH_GATEWAY", FILE_PATH_CONFIGINI ))
    {
        LOG("-------------NO CONFIG.INI FILE--------------");
        return 0;
    }

    READ_MANDATORY_VARIABLE("GATEWAY", stNetAddr);

    m_nListenAccessPointPort = ntohs(stNetAddr.m_dwPortNo);
    m_u32IpAddress = stNetAddr.m_nIP;

    READ_MANDATORY_VARIABLE("NM_CLIENT_LISTEN_PORT",m_nNmClientListenPort );

    //READ_MANDATORY_VARIABLE ("LISTEN_AP_PORT", m_nListenAccessPointPort);

    READ_MANDATORY_VARIABLE ("AP_CLIENT_MIN_PORT", m_nAccessPointClientMinPort);

    READ_MANDATORY_VARIABLE ("AP_CLIENT_MAX_PORT", m_nAccessPointClientMaxPort);

    READ_MANDATORY_VARIABLE ("HOSTAPP_LISTEN_PORT", m_nHostApp_ListenPort);

    READ_MANDATORY_VARIABLE ("HOSTAPP_MIN_PORT", m_nHostApp_MinPort);

    READ_MANDATORY_VARIABLE("HOSTAPP_MAX_PORT", m_nHostApp_MaxPort);

    READ_DEFAULT_VARIABLE_INT("GW_REQUEST_SERVICE",m_nGwRequestService, 0);

    READ_DEFAULT_VARIABLE_FLOAT("BURST_MODE_NOTIFICATION_RATE", m_fBurstNotificationRate, 0.25);
    m_fBurstNotificationRate *= 1000; //miliseconds
    READ_DEFAULT_VARIABLE_FLOAT("EVENT_NOTIFICATION_RATE", m_fEventNotificationRate, 1);
    m_fEventNotificationRate *= 1000; //miliseconds
    READ_DEFAULT_VARIABLE_FLOAT("DEVICE_STATUS_NOTIFICATION_RATE", m_fDeviceStatusNotificationRate, 5);
    m_fDeviceStatusNotificationRate *= 1000; //miliseconds
    READ_DEFAULT_VARIABLE_FLOAT("DEVICE_CONFIGURATION_NOTIFICATION_RATE", m_fDeviceConfigurationNotificationRate, 5);
    m_fDeviceConfigurationNotificationRate *= 1000; //miliseconds
    READ_DEFAULT_VARIABLE_FLOAT("TOPOLOGY_NOTIFICATION_RATE", m_fTopologyNotificationRate, 5);
    m_fTopologyNotificationRate *= 1000; //miliseconds
    READ_DEFAULT_VARIABLE_FLOAT("SCHEDULE_NOTIFICATION_RATE", m_fScheduleNotificationRate, 5);
    m_fScheduleNotificationRate *= 1000; //miliseconds

    READ_DEFAULT_VARIABLE_INT("GW_MOCK_MODE",m_nMockMode, 0);
    READ_DEFAULT_VARIABLE_INT("SEND_ID_INFO_CMDS",m_nSendIdInfoCmds, 1);

    return 1;
}
Пример #2
0
bool GatewayConfig::RuntimeReload()
{
    READ_MANDATORY_VARIABLE_STRING("AppJoinKey", m_u8AppJoinKey);

    READ_MANDATORY_VARIABLE("GW_REQ_TIMEOUT", m_nGwReqTimeout);
    m_nGwReqTimeout *= sysconf(_SC_CLK_TCK);

    READ_DEFAULT_VARIABLE_INT("GW_REQ_RETRY_TIMEOUT", m_nGwReqRetryTimeout, 15);
    m_nGwReqRetryTimeout = m_nGwReqRetryTimeout * 60 * sysconf(_SC_CLK_TCK); // from minutes to clock ticks

    READ_DEFAULT_VARIABLE_INT("LOG_INTERNAL_STATUS_PERIOD", m_nLogInternalStatusPeriod, 0);
    READ_DEFAULT_VARIABLE_INT("LOG_INTERNAL_REQUEST_STATISTICS_PERIOD", m_nLogInternalRequestsStatisticsPeriod, 0);

    READ_MANDATORY_VARIABLE("CACHE_BURST_RESP_TIMEOUT", m_nGwBurstRespTimeout);
    READ_MANDATORY_VARIABLE("CACHE_READ_RESP_TIMEOUT", m_nGwRespTimeout);

    READ_MANDATORY_VARIABLE("GW_DRM_TIMEOUT", m_nGwDrmTimeout);
    m_nGwDrmTimeout *= sysconf(_SC_CLK_TCK);

    READ_MANDATORY_VARIABLE("GW_REQ_MAX_RETRY_NO", m_nGwReqMaxRetryNo);

    READ_DEFAULT_VARIABLE_INT("LOCAL_GW_RETRIES", m_nLocalGwRetries, 3);

    READ_DEFAULT_VARIABLE_INT("DEVICES_REFRESH_INTERVAL", m_nDevicesRefreshInterval, 5);

    READ_DEFAULT_VARIABLE_INT("LOG_LEVEL_STACK", m_nLogLevelStack, 4); //4-debug, 3-info
    READ_DEFAULT_VARIABLE_INT("LOG_LEVEL_APP", m_nLogLevelApp, 4); //4-debug, 3-info

    int granularity_keepalive;
    READ_DEFAULT_VARIABLE_INT("GRANULARITY_KEEPALIVE", granularity_keepalive, 60);
    m_u8GranularityKeepAlive = (uint8_t) granularity_keepalive;

    READ_DEFAULT_VARIABLE_INT("MAX_CMDS_PER_APDU", m_nMaxCmdsPerAPDU, 5);

    READ_DEFAULT_VARIABLE_YES_NO("NM_BURSTS_CACHING_ENABLED", m_bNmBurstsCachingEnabled, "YES");

    READ_DEFAULT_VARIABLE_YES_NO("USE_SUBDEV_POLLING_ADDRESSES", m_bUseSubdevPollingAddresses, "YES");

    READ_DEFAULT_VARIABLE_YES_NO("DONT_ACK_C119_WHEN_TIME_MINUS_1", m_bDontAckC119WhenTime_minus1, "NO");

    READ_DEFAULT_VARIABLE_YES_NO("SEND_DIRECT_WIRED_DEVICE_BURST", m_bSendDirectWiredDeviceBurst, "NO");
    READ_DEFAULT_VARIABLE_YES_NO("BUILD_UNIV_CMDS_CACHE", m_bBuildUnivCommandsCache, "NO");

    READ_DEFAULT_VARIABLE_INT("DRM_TYPE", m_nDrmType, GatewayConfig::DRM_TYPE_CACHE_BASED);

    // READ_DEFAULT_VARIABLE_STRING("GATEWAY_TAG", m_szTag, "GwTag" );

    READ_DEFAULT_VARIABLE_INT("DRM_ENTRY_LIFETIME", m_nDrmEntryLifetime, 1200);

    READ_DEFAULT_VARIABLE_YES_NO("SEND_INVALID_REQUEST_TO_DEVICE", m_bSendInvalidRequestToDevice, "NO");


    EnableLog(m_nLogLevelStack);//4-debug, 3-info
    EnableLog_APP(m_nLogLevelApp);//4-debug, 3-info

    LOG_INFO_APP("GatewayConfig DONE logLevel stack=" << m_nLogLevelStack << " app=" << m_nLogLevelApp);

    ReadSpecificCmds();

    BurstSpecificCmds();

    ReadGWUniversalVariables();

    return true;
}
/// Load the config.ini file and parse it to extract various configurations out of it
/// @retval 1 success
/// @retval 0 failure
/// @note DO NOT read same variable in Init() and Reload(). Init calls Reload.
int CISAConfig::Init()
{
	if(!CConfig::Init("GATEWAY"))
	{
		return 0;
	}

	READ_DEFAULT_VARIABLE_INT ("TCP_YGSAP_PORT",  m_nYGSAP_TCPPort, 0);
	READ_DEFAULT_VARIABLE_INT ("TCP_SERVER_PORT", m_nGSAP_TCPPort, 4900);

	READ_DEFAULT_VARIABLE_INT ("TCP_SERVER_PORT_SSL", m_nGSAP_TCPPort_SSL, 0);
	READ_DEFAULT_VARIABLE_INT ("TCP_YGSAP_PORT_SSL", m_nYGSAP_TCPPort_SSL, 0);
	
	READ_DEFAULT_VARIABLE_INT ("SM_LINK_TIMEOUT", m_nPingTimeout, 50);
	READ_DEFAULT_VARIABLE_STRING("GATEWAY_TAG", m_szGWTag, "Nivis Gateway" );

	if ( m_nGSAP_TCPPort_SSL != 0 ||  m_nYGSAP_TCPPort_SSL != 0)
	{
		READ_DEFAULT_VARIABLE_STRING("SSL_SERVER_CERTIF_FILE", m_szSslServerCertif, "/access_node/activity_files/ssl_resources/servercert.pem" );
		READ_DEFAULT_VARIABLE_STRING("SSL_SERVER_KEY_FILE", m_szSslServerKey, "/access_node/activity_files/ssl_resources/serverkey.pem" );
		READ_DEFAULT_VARIABLE_STRING("SSL_CA_CERTIF_FILE", m_szSslCaCertif, "/access_node/activity_files/ssl_resources/cakey.pem" );
	}
	

	if(GetVar("HOST_APP", &m_HostAddr )){
		LOG_HEX( "m_HostAddr(hexdump):", (uint8*)&m_HostAddr, sizeof(net_address));
	}

	READ_MANDATORY_VARIABLE("GATEWAY_IPv6", m_oGWIPv6 );

	char szIPv4[16];
	READ_MANDATORY_VARIABLE_STRING("GATEWAY_IPv4", szIPv4);
	READ_MANDATORY_VARIABLE("GATEWAY_UDPPort", m_nGW_UDPPort)

	if (!AdjustIPv6(&m_oGWIPv6,szIPv4, m_nGW_UDPPort))
	{
		return 0;
	}

	LOG("GW IPv6=%s IPv4=%s UDPPort=%d", m_oGWIPv6.GetPrintIPv6(), szIPv4, m_nGW_UDPPort);

	if(!GetVar("GATEWAY_EUI64", (uint8_t*)m_pu8GWEUI64, sizeof(m_pu8GWEUI64)))
	{
		return 0;
	}

	READ_MANDATORY_VARIABLE("SubnetID", m_nSubnetID);
	LOG("SubnetID %u (0x%X)", m_nSubnetID, m_nSubnetID);
	READ_MANDATORY_VARIABLE_STRING("AppJoinKey", m_u8AppJoinKey);
	
	READ_DEFAULT_VARIABLE_INT ("TLDE_HLIST_SIZE",  m_nTldeHListSize, 100);
	READ_DEFAULT_VARIABLE_INT ("TLDE_HLIST_TIME_WINDOW",  m_nTldeHListTimeWindow, 60);

	Reload();

	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SYSTEM_MANAGER_IPv6", &m_oSMIPv6 ))
	{	return 0;
	}
	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SYSTEM_MANAGER_IPv4", szIPv4, sizeof(szIPv4)))
	{	return 0;
	}
	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SYSTEM_MANAGER_Port", &m_nSMPort))
	{	return 0;
	}
	if(!CIniParser::GetVar("SYSTEM_MANAGER", "CURRENT_UTC_ADJUSTMENT", &m_nCrtUTCAdj))
	{	return 0;
	}
	if (!AdjustIPv6(&m_oSMIPv6,szIPv4, m_nSMPort))
	{	return 0;
	}
	LOG("SM IPv6=%s IPv4=%s Port=%d", m_oSMIPv6.GetPrintIPv6(), szIPv4, m_nSMPort);

	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SECURITY_MANAGER_EUI64", m_u8SecurityManager, sizeof(m_u8SecurityManager)))
	{	return 0;
	}

	LOG("Config loaded");
	//--------------
	return 1;
}