// 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; }
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; }