blob: e21e547dcadda3f1ca11804f43e7b86a1ffe6133 [file] [log] [blame]
akmhoque3d06e792014-05-27 16:23:20 -05001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
Nick Gordonc6a85222017-01-03 16:54:34 -06003 * Copyright (c) 2014-2017, The University of Memphis,
Vince Lehmanc2e51f62015-01-20 15:03:11 -06004 * Regents of the University of California,
5 * Arizona Board of Regents.
akmhoque3d06e792014-05-27 16:23:20 -05006 *
7 * This file is part of NLSR (Named-data Link State Routing).
8 * See AUTHORS.md for complete list of NLSR authors and contributors.
9 *
10 * NLSR is free software: you can redistribute it and/or modify it under the terms
11 * of the GNU General Public License as published by the Free Software Foundation,
12 * either version 3 of the License, or (at your option) any later version.
13 *
14 * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
15 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16 * PURPOSE. See the GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along with
19 * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
akmhoque3d06e792014-05-27 16:23:20 -050020 **/
Vince Lehmanc2e51f62015-01-20 15:03:11 -060021
dmcoomese689dd62017-03-29 11:05:12 -050022#ifndef NLSR_CONF_PARAMETER_HPP
23#define NLSR_CONF_PARAMETER_HPP
akmhoque53353462014-04-22 08:43:45 -050024
Ashlesh Gawande3909aa12017-07-28 16:01:35 -050025#include "logger.hpp"
26
akmhoque53353462014-04-22 08:43:45 -050027#include <iostream>
akmhoquefdbddb12014-05-02 18:35:19 -050028#include <boost/cstdint.hpp>
akmhoque31d1d4b2014-05-05 22:08:14 -050029#include <ndn-cxx/common.hpp>
30#include <ndn-cxx/face.hpp>
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -070031#include <ndn-cxx/util/time.hpp>
akmhoque53353462014-04-22 08:43:45 -050032
33namespace nlsr {
akmhoque157b0a42014-05-13 00:26:37 -050034
35enum {
36 LSA_REFRESH_TIME_MIN = 240,
37 LSA_REFRESH_TIME_DEFAULT = 1800,
38 LSA_REFRESH_TIME_MAX = 7200
39};
40
41enum {
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -070042 LSA_INTEREST_LIFETIME_MIN = 1,
43 LSA_INTEREST_LIFETIME_DEFAULT = 4,
44 LSA_INTEREST_LIFETIME_MAX = 60
45};
46
47enum {
Vince Lehman7b616582014-10-17 16:25:39 -050048 ADJ_LSA_BUILD_INTERVAL_MIN = 0,
49 ADJ_LSA_BUILD_INTERVAL_DEFAULT = 5,
50 ADJ_LSA_BUILD_INTERVAL_MAX = 5
51};
52
53enum {
54 FIRST_HELLO_INTERVAL_MIN = 0,
55 FIRST_HELLO_INTERVAL_DEFAULT = 10,
56 FIRST_HELLO_INTERVAL_MAX = 10
57};
58
59enum {
60 ROUTING_CALC_INTERVAL_MIN = 0,
61 ROUTING_CALC_INTERVAL_DEFAULT = 15,
62 ROUTING_CALC_INTERVAL_MAX = 15
63};
64
Nick Gordond5c1a372016-10-31 13:56:23 -050065
66enum {
67 FACE_DATASET_FETCH_TRIES_MIN = 1,
68 FACE_DATASET_FETCH_TRIES_MAX = 10,
69 FACE_DATASET_FETCH_TRIES_DEFAULT = 3
70};
71
72enum {
73 FACE_DATASET_FETCH_INTERVAL_MIN = 1800,
74 FACE_DATASET_FETCH_INTERVAL_MAX = 5400,
75 FACE_DATASET_FETCH_INTERVAL_DEFAULT = 3600
76};
77
Vince Lehman7b616582014-10-17 16:25:39 -050078enum {
akmhoque157b0a42014-05-13 00:26:37 -050079 HELLO_RETRIES_MIN = 1,
80 HELLO_RETRIES_DEFAULT = 3,
81 HELLO_RETRIES_MAX = 15
82};
83
84enum {
85 HELLO_TIMEOUT_MIN = 1,
86 HELLO_TIMEOUT_DEFAULT = 3,
87 HELLO_TIMEOUT_MAX = 15
88};
89
90enum {
91 HELLO_INTERVAL_MIN = 30,
92 HELLO_INTERVAL_DEFAULT = 60,
93 HELLO_INTERVAL_MAX =90
94};
95
96enum {
97 MAX_FACES_PER_PREFIX_MIN = 0,
alvya2228c62014-12-09 10:25:11 -060098 MAX_FACES_PER_PREFIX_DEFAULT = 0,
akmhoque157b0a42014-05-13 00:26:37 -050099 MAX_FACES_PER_PREFIX_MAX = 60
100};
101
Nick Gordon5c467f02016-07-13 13:40:10 -0500102enum HyperbolicState {
akmhoque157b0a42014-05-13 00:26:37 -0500103 HYPERBOLIC_STATE_OFF = 0,
104 HYPERBOLIC_STATE_ON = 1,
alvya2228c62014-12-09 10:25:11 -0600105 HYPERBOLIC_STATE_DRY_RUN = 2,
106 HYPERBOLIC_STATE_DEFAULT = 0
akmhoque157b0a42014-05-13 00:26:37 -0500107};
108
akmhoque53353462014-04-22 08:43:45 -0500109class ConfParameter
110{
111
112public:
113 ConfParameter()
akmhoque157b0a42014-05-13 00:26:37 -0500114 : m_lsaRefreshTime(LSA_REFRESH_TIME_DEFAULT)
Vince Lehman7b616582014-10-17 16:25:39 -0500115 , m_adjLsaBuildInterval(ADJ_LSA_BUILD_INTERVAL_DEFAULT)
116 , m_firstHelloInterval(FIRST_HELLO_INTERVAL_DEFAULT)
117 , m_routingCalcInterval(ROUTING_CALC_INTERVAL_DEFAULT)
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500118 , m_faceDatasetFetchInterval(ndn::time::seconds(static_cast<int>(FACE_DATASET_FETCH_INTERVAL_DEFAULT)))
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700119 , m_lsaInterestLifetime(ndn::time::seconds(static_cast<int>(LSA_INTEREST_LIFETIME_DEFAULT)))
Alexander Afanasyev1cf1e102014-08-17 19:47:57 -0700120 , m_routerDeadInterval(2 * LSA_REFRESH_TIME_DEFAULT)
akmhoque157b0a42014-05-13 00:26:37 -0500121 , m_logLevel("INFO")
122 , m_interestRetryNumber(HELLO_RETRIES_DEFAULT)
123 , m_interestResendTime(HELLO_TIMEOUT_DEFAULT)
124 , m_infoInterestInterval(HELLO_INTERVAL_DEFAULT)
125 , m_hyperbolicState(HYPERBOLIC_STATE_OFF)
akmhoque53353462014-04-22 08:43:45 -0500126 , m_corR(0)
akmhoque157b0a42014-05-13 00:26:37 -0500127 , m_maxFacesPerPrefix(MAX_FACES_PER_PREFIX_MIN)
Muktadir R Chowdhurybfa27602014-10-31 10:57:41 -0500128 , m_isLog4cxxConfAvailable(false)
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700129 {
130 }
akmhoque53353462014-04-22 08:43:45 -0500131
132 void
akmhoque157b0a42014-05-13 00:26:37 -0500133 setNetwork(const ndn::Name& networkName)
akmhoque53353462014-04-22 08:43:45 -0500134 {
akmhoque157b0a42014-05-13 00:26:37 -0500135 m_network = networkName;
Ashlesh Gawande44395232016-12-13 14:35:29 -0600136
137 m_chronosyncPrefix.append("localhop");
Ashlesh Gawande8bfd1242017-06-21 14:55:27 -0500138 m_chronosyncPrefix.append(m_network);
akmhoquea816bee2014-06-24 14:37:40 -0500139 m_chronosyncPrefix.append("NLSR");
akmhoque157b0a42014-05-13 00:26:37 -0500140 m_chronosyncPrefix.append("sync");
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700141
Ashlesh Gawande6077ea92017-01-19 11:48:29 -0600142 m_lsaPrefix.append("localhop");
143 m_lsaPrefix.append(m_network);
akmhoquea816bee2014-06-24 14:37:40 -0500144 m_lsaPrefix.append("NLSR");
akmhoque157b0a42014-05-13 00:26:37 -0500145 m_lsaPrefix.append("LSA");
akmhoque53353462014-04-22 08:43:45 -0500146 }
147
akmhoque31d1d4b2014-05-05 22:08:14 -0500148 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700149 getNetwork() const
akmhoque53353462014-04-22 08:43:45 -0500150 {
151 return m_network;
152 }
153
154 void
akmhoque157b0a42014-05-13 00:26:37 -0500155 setRouterName(const ndn::Name& routerName)
156 {
157 m_routerName = routerName;
158 }
159
160 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700161 getRouterName() const
akmhoque157b0a42014-05-13 00:26:37 -0500162 {
163 return m_routerName;
164 }
165
166 void
167 setSiteName(const ndn::Name& siteName)
168 {
169 m_siteName = siteName;
170 }
171
172 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700173 getSiteName() const
akmhoque157b0a42014-05-13 00:26:37 -0500174 {
175 return m_siteName;
176 }
177
178 void
akmhoque53353462014-04-22 08:43:45 -0500179 buildRouterPrefix()
180 {
akmhoque31d1d4b2014-05-05 22:08:14 -0500181 m_routerPrefix = m_network;
182 m_routerPrefix.append(m_siteName);
183 m_routerPrefix.append(m_routerName);
akmhoque53353462014-04-22 08:43:45 -0500184 }
185
akmhoque31d1d4b2014-05-05 22:08:14 -0500186 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700187 getRouterPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500188 {
189 return m_routerPrefix;
190 }
191
akmhoque157b0a42014-05-13 00:26:37 -0500192
akmhoque31d1d4b2014-05-05 22:08:14 -0500193 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700194 getChronosyncPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500195 {
akmhoque157b0a42014-05-13 00:26:37 -0500196 return m_chronosyncPrefix;
akmhoque53353462014-04-22 08:43:45 -0500197 }
198
akmhoque157b0a42014-05-13 00:26:37 -0500199 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700200 getLsaPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500201 {
akmhoque157b0a42014-05-13 00:26:37 -0500202 return m_lsaPrefix;
akmhoque53353462014-04-22 08:43:45 -0500203 }
204
205 void
alvy5a454952014-12-15 12:49:54 -0600206 setLsaRefreshTime(uint32_t lrt)
akmhoque53353462014-04-22 08:43:45 -0500207 {
208 m_lsaRefreshTime = lrt;
akmhoque53353462014-04-22 08:43:45 -0500209 }
210
alvy5a454952014-12-15 12:49:54 -0600211 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700212 getLsaRefreshTime() const
akmhoque53353462014-04-22 08:43:45 -0500213 {
214 return m_lsaRefreshTime;
215 }
216
217 void
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700218 setLsaInterestLifetime(const ndn::time::seconds& lifetime)
219 {
220 m_lsaInterestLifetime = lifetime;
221 }
222
223 const ndn::time::seconds&
224 getLsaInterestLifetime() const
225 {
226 return m_lsaInterestLifetime;
227 }
228
229 void
Vince Lehman7b616582014-10-17 16:25:39 -0500230 setAdjLsaBuildInterval(uint32_t interval)
231 {
232 m_adjLsaBuildInterval = interval;
233 }
234
235 uint32_t
236 getAdjLsaBuildInterval() const
237 {
238 return m_adjLsaBuildInterval;
239 }
240
241 void
242 setFirstHelloInterval(uint32_t interval)
243 {
244 m_firstHelloInterval = interval;
245 }
246
247 uint32_t
248 getFirstHelloInterval() const
249 {
250 return m_firstHelloInterval;
251 }
252
253 void
254 setRoutingCalcInterval(uint32_t interval)
255 {
256 m_routingCalcInterval = interval;
257 }
258
259 uint32_t
260 getRoutingCalcInterval() const
261 {
262 return m_routingCalcInterval;
263 }
264
265 void
alvy5a454952014-12-15 12:49:54 -0600266 setRouterDeadInterval(uint32_t rdt)
akmhoque53353462014-04-22 08:43:45 -0500267 {
268 m_routerDeadInterval = rdt;
269 }
270
alvy5a454952014-12-15 12:49:54 -0600271 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700272 getRouterDeadInterval() const
akmhoque53353462014-04-22 08:43:45 -0500273 {
274 return m_routerDeadInterval;
275 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700276
277 void
Nick Gordond5c1a372016-10-31 13:56:23 -0500278 setFaceDatasetFetchTries(uint32_t count)
279 {
280 m_faceDatasetFetchTries = count;
281 }
282
283 uint32_t
284 getFaceDatasetFetchTries() const
285 {
286 return m_faceDatasetFetchTries;
287 }
288
289 void
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500290 setFaceDatasetFetchInterval(uint32_t interval)
Nick Gordond5c1a372016-10-31 13:56:23 -0500291 {
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500292 m_faceDatasetFetchInterval = ndn::time::seconds(interval);
Nick Gordond5c1a372016-10-31 13:56:23 -0500293 }
294
295 const ndn::time::seconds
296 getFaceDatasetFetchInterval() const
297 {
298 return m_faceDatasetFetchInterval;
299 }
300
301 void
akmhoque157b0a42014-05-13 00:26:37 -0500302 setLogLevel(const std::string& logLevel)
303 {
304 m_logLevel = logLevel;
305 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700306
307 const std::string&
308 getLogLevel() const
akmhoque157b0a42014-05-13 00:26:37 -0500309 {
310 return m_logLevel;
311 }
akmhoque53353462014-04-22 08:43:45 -0500312
313 void
akmhoque157b0a42014-05-13 00:26:37 -0500314 setInterestRetryNumber(uint32_t irn)
akmhoque53353462014-04-22 08:43:45 -0500315 {
akmhoque157b0a42014-05-13 00:26:37 -0500316 m_interestRetryNumber = irn;
317 }
318
319 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700320 getInterestRetryNumber() const
akmhoque157b0a42014-05-13 00:26:37 -0500321 {
322 return m_interestRetryNumber;
323 }
324
325 void
alvy5a454952014-12-15 12:49:54 -0600326 setInterestResendTime(uint32_t irt)
akmhoque157b0a42014-05-13 00:26:37 -0500327 {
328 m_interestResendTime = irt;
akmhoque53353462014-04-22 08:43:45 -0500329 }
330
alvy5a454952014-12-15 12:49:54 -0600331 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700332 getInterestResendTime() const
akmhoque53353462014-04-22 08:43:45 -0500333 {
akmhoque157b0a42014-05-13 00:26:37 -0500334 return m_interestResendTime;
akmhoque53353462014-04-22 08:43:45 -0500335 }
336
alvy5a454952014-12-15 12:49:54 -0600337 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700338 getInfoInterestInterval() const
akmhoque53353462014-04-22 08:43:45 -0500339 {
akmhoque157b0a42014-05-13 00:26:37 -0500340 return m_infoInterestInterval;
akmhoque53353462014-04-22 08:43:45 -0500341 }
342
343 void
alvy5a454952014-12-15 12:49:54 -0600344 setInfoInterestInterval(uint32_t iii)
akmhoque53353462014-04-22 08:43:45 -0500345 {
akmhoque157b0a42014-05-13 00:26:37 -0500346 m_infoInterestInterval = iii;
347 }
348
349 void
350 setHyperbolicState(int32_t ihc)
351 {
352 m_hyperbolicState = ihc;
akmhoque53353462014-04-22 08:43:45 -0500353 }
354
akmhoquefdbddb12014-05-02 18:35:19 -0500355 int32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700356 getHyperbolicState() const
akmhoque53353462014-04-22 08:43:45 -0500357 {
akmhoque157b0a42014-05-13 00:26:37 -0500358 return m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500359 }
360
akmhoque157b0a42014-05-13 00:26:37 -0500361 bool
akmhoque53353462014-04-22 08:43:45 -0500362 setCorR(double cr)
363 {
akmhoque157b0a42014-05-13 00:26:37 -0500364 if ( cr >= 0 ) {
365 m_corR = cr;
366 return true;
367 }
368 return false;
akmhoque53353462014-04-22 08:43:45 -0500369 }
370
371 double
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700372 getCorR() const
akmhoque53353462014-04-22 08:43:45 -0500373 {
374 return m_corR;
375 }
376
377 void
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600378 setCorTheta(const std::vector<double>& ct)
akmhoque53353462014-04-22 08:43:45 -0500379 {
380 m_corTheta = ct;
381 }
382
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600383 std::vector<double>
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700384 getCorTheta() const
akmhoque53353462014-04-22 08:43:45 -0500385 {
386 return m_corTheta;
387 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700388
akmhoque53353462014-04-22 08:43:45 -0500389 void
Vince Lehman942eb7b2014-10-02 10:09:27 -0500390 setMaxFacesPerPrefix(uint32_t mfpp)
akmhoque53353462014-04-22 08:43:45 -0500391 {
akmhoque157b0a42014-05-13 00:26:37 -0500392 m_maxFacesPerPrefix = mfpp;
akmhoque53353462014-04-22 08:43:45 -0500393 }
394
Vince Lehman942eb7b2014-10-02 10:09:27 -0500395 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700396 getMaxFacesPerPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500397 {
akmhoque157b0a42014-05-13 00:26:37 -0500398 return m_maxFacesPerPrefix;
akmhoque53353462014-04-22 08:43:45 -0500399 }
400
401 void
akmhoque674b0b12014-05-20 14:33:28 -0500402 setLogDir(const std::string& logDir)
403 {
404 m_logDir = logDir;
405 }
406
407 const std::string&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700408 getLogDir() const
akmhoque674b0b12014-05-20 14:33:28 -0500409 {
410 return m_logDir;
411 }
412
413 void
akmhoque157b0a42014-05-13 00:26:37 -0500414 setSeqFileDir(const std::string& ssfd)
akmhoque53353462014-04-22 08:43:45 -0500415 {
akmhoque157b0a42014-05-13 00:26:37 -0500416 m_seqFileDir = ssfd;
akmhoque53353462014-04-22 08:43:45 -0500417 }
418
akmhoque157b0a42014-05-13 00:26:37 -0500419 const std::string&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700420 getSeqFileDir() const
akmhoque53353462014-04-22 08:43:45 -0500421 {
akmhoque157b0a42014-05-13 00:26:37 -0500422 return m_seqFileDir;
akmhoque53353462014-04-22 08:43:45 -0500423 }
424
Muktadir R Chowdhurybfa27602014-10-31 10:57:41 -0500425 bool
426 isLog4CxxConfAvailable() const
427 {
428 return m_isLog4cxxConfAvailable;
429 }
430
431 void
432 setLog4CxxConfPath(const std::string& path)
433 {
434 m_log4CxxConfPath = path;
435 m_isLog4cxxConfAvailable = true;
436 }
437
438 const std::string&
439 getLog4CxxConfPath() const
440 {
441 return m_log4CxxConfPath;
442 }
443
akmhoque674b0b12014-05-20 14:33:28 -0500444 void
445 writeLog();
akmhoque53353462014-04-22 08:43:45 -0500446
447private:
akmhoque31d1d4b2014-05-05 22:08:14 -0500448 ndn::Name m_routerName;
449 ndn::Name m_siteName;
450 ndn::Name m_network;
akmhoque53353462014-04-22 08:43:45 -0500451
akmhoque31d1d4b2014-05-05 22:08:14 -0500452 ndn::Name m_routerPrefix;
453 ndn::Name m_lsaRouterPrefix;
akmhoque53353462014-04-22 08:43:45 -0500454
akmhoque157b0a42014-05-13 00:26:37 -0500455 ndn::Name m_chronosyncPrefix;
456 ndn::Name m_lsaPrefix;
457
alvy5a454952014-12-15 12:49:54 -0600458 uint32_t m_lsaRefreshTime;
Vince Lehman7b616582014-10-17 16:25:39 -0500459
460 uint32_t m_adjLsaBuildInterval;
461 uint32_t m_firstHelloInterval;
462 uint32_t m_routingCalcInterval;
463
Nick Gordond5c1a372016-10-31 13:56:23 -0500464 uint32_t m_faceDatasetFetchTries;
465 ndn::time::seconds m_faceDatasetFetchInterval;
466
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700467 ndn::time::seconds m_lsaInterestLifetime;
alvy5a454952014-12-15 12:49:54 -0600468 uint32_t m_routerDeadInterval;
akmhoque157b0a42014-05-13 00:26:37 -0500469 std::string m_logLevel;
akmhoque53353462014-04-22 08:43:45 -0500470
akmhoquefdbddb12014-05-02 18:35:19 -0500471 uint32_t m_interestRetryNumber;
alvy5a454952014-12-15 12:49:54 -0600472 uint32_t m_interestResendTime;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700473
alvy5a454952014-12-15 12:49:54 -0600474 uint32_t m_infoInterestInterval;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700475
akmhoque157b0a42014-05-13 00:26:37 -0500476 int32_t m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500477 double m_corR;
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600478 std::vector<double> m_corTheta;
akmhoque53353462014-04-22 08:43:45 -0500479
Vince Lehman942eb7b2014-10-02 10:09:27 -0500480 uint32_t m_maxFacesPerPrefix;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700481
akmhoque674b0b12014-05-20 14:33:28 -0500482 std::string m_logDir;
akmhoque157b0a42014-05-13 00:26:37 -0500483 std::string m_seqFileDir;
akmhoque53353462014-04-22 08:43:45 -0500484
Muktadir R Chowdhurybfa27602014-10-31 10:57:41 -0500485 bool m_isLog4cxxConfAvailable;
486 std::string m_log4CxxConfPath;
akmhoque53353462014-04-22 08:43:45 -0500487};
488
akmhoque53353462014-04-22 08:43:45 -0500489} // namespace nlsr
490
dmcoomese689dd62017-03-29 11:05:12 -0500491#endif // NLSR_CONF_PARAMETER_HPP