blob: ac32e04e355c8e2a4e9f799dcf830638fbe73d1d [file] [log] [blame]
akmhoque3d06e792014-05-27 16:23:20 -05001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
dmcoomescf8d0ed2017-02-21 11:39:01 -06003 * Copyright (c) 2014-2018, 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
Nick Gordone98480b2017-05-24 11:23:03 -050025#include "common.hpp"
Ashlesh Gawande3909aa12017-07-28 16:01:35 -050026#include "logger.hpp"
27
akmhoque53353462014-04-22 08:43:45 -050028#include <iostream>
akmhoquefdbddb12014-05-02 18:35:19 -050029#include <boost/cstdint.hpp>
akmhoque31d1d4b2014-05-05 22:08:14 -050030#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
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600109enum {
110 SYNC_INTEREST_LIFETIME_MIN = 1000,
111 SYNC_INTEREST_LIFETIME_DEFAULT = 60000,
112 SYNC_INTEREST_LIFETIME_MAX = 120000,
113};
114
Nick Gordond0a7df32017-05-30 16:44:34 -0500115/*! \brief A class to house all the configuration parameters for NLSR.
116 *
117 * This class is conceptually a singleton (but not mechanically) which
118 * is just a collection of attributes that serve as a
119 * separation-of-data for NLSR's configuration variables. NLSR refers
120 * to an instance of this class for all its configuration
121 * parameters. This object is typically populated by a
122 * ConfFileProcessor reading a configuration file.
123 *
124 * \sa nlsr::ConfFileProcessor
125 */
akmhoque53353462014-04-22 08:43:45 -0500126class ConfParameter
127{
128
129public:
130 ConfParameter()
akmhoque157b0a42014-05-13 00:26:37 -0500131 : m_lsaRefreshTime(LSA_REFRESH_TIME_DEFAULT)
Vince Lehman7b616582014-10-17 16:25:39 -0500132 , m_adjLsaBuildInterval(ADJ_LSA_BUILD_INTERVAL_DEFAULT)
133 , m_firstHelloInterval(FIRST_HELLO_INTERVAL_DEFAULT)
134 , m_routingCalcInterval(ROUTING_CALC_INTERVAL_DEFAULT)
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500135 , m_faceDatasetFetchInterval(ndn::time::seconds(static_cast<int>(FACE_DATASET_FETCH_INTERVAL_DEFAULT)))
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700136 , m_lsaInterestLifetime(ndn::time::seconds(static_cast<int>(LSA_INTEREST_LIFETIME_DEFAULT)))
Alexander Afanasyev1cf1e102014-08-17 19:47:57 -0700137 , m_routerDeadInterval(2 * LSA_REFRESH_TIME_DEFAULT)
akmhoque157b0a42014-05-13 00:26:37 -0500138 , m_logLevel("INFO")
139 , m_interestRetryNumber(HELLO_RETRIES_DEFAULT)
140 , m_interestResendTime(HELLO_TIMEOUT_DEFAULT)
141 , m_infoInterestInterval(HELLO_INTERVAL_DEFAULT)
142 , m_hyperbolicState(HYPERBOLIC_STATE_OFF)
akmhoque53353462014-04-22 08:43:45 -0500143 , m_corR(0)
akmhoque157b0a42014-05-13 00:26:37 -0500144 , m_maxFacesPerPrefix(MAX_FACES_PER_PREFIX_MIN)
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700145 {
146 }
akmhoque53353462014-04-22 08:43:45 -0500147
148 void
akmhoque157b0a42014-05-13 00:26:37 -0500149 setNetwork(const ndn::Name& networkName)
akmhoque53353462014-04-22 08:43:45 -0500150 {
akmhoque157b0a42014-05-13 00:26:37 -0500151 m_network = networkName;
Ashlesh Gawande44395232016-12-13 14:35:29 -0600152
153 m_chronosyncPrefix.append("localhop");
Ashlesh Gawande8bfd1242017-06-21 14:55:27 -0500154 m_chronosyncPrefix.append(m_network);
akmhoquea816bee2014-06-24 14:37:40 -0500155 m_chronosyncPrefix.append("NLSR");
akmhoque157b0a42014-05-13 00:26:37 -0500156 m_chronosyncPrefix.append("sync");
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700157
Ashlesh Gawande6077ea92017-01-19 11:48:29 -0600158 m_lsaPrefix.append("localhop");
159 m_lsaPrefix.append(m_network);
akmhoquea816bee2014-06-24 14:37:40 -0500160 m_lsaPrefix.append("NLSR");
akmhoque157b0a42014-05-13 00:26:37 -0500161 m_lsaPrefix.append("LSA");
akmhoque53353462014-04-22 08:43:45 -0500162 }
163
akmhoque31d1d4b2014-05-05 22:08:14 -0500164 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700165 getNetwork() const
akmhoque53353462014-04-22 08:43:45 -0500166 {
167 return m_network;
168 }
169
170 void
akmhoque157b0a42014-05-13 00:26:37 -0500171 setRouterName(const ndn::Name& routerName)
172 {
173 m_routerName = routerName;
174 }
175
176 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700177 getRouterName() const
akmhoque157b0a42014-05-13 00:26:37 -0500178 {
179 return m_routerName;
180 }
181
182 void
183 setSiteName(const ndn::Name& siteName)
184 {
185 m_siteName = siteName;
186 }
187
188 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700189 getSiteName() const
akmhoque157b0a42014-05-13 00:26:37 -0500190 {
191 return m_siteName;
192 }
193
194 void
akmhoque53353462014-04-22 08:43:45 -0500195 buildRouterPrefix()
196 {
akmhoque31d1d4b2014-05-05 22:08:14 -0500197 m_routerPrefix = m_network;
198 m_routerPrefix.append(m_siteName);
199 m_routerPrefix.append(m_routerName);
akmhoque53353462014-04-22 08:43:45 -0500200 }
201
akmhoque31d1d4b2014-05-05 22:08:14 -0500202 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700203 getRouterPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500204 {
205 return m_routerPrefix;
206 }
207
akmhoque157b0a42014-05-13 00:26:37 -0500208
akmhoque31d1d4b2014-05-05 22:08:14 -0500209 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700210 getChronosyncPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500211 {
akmhoque157b0a42014-05-13 00:26:37 -0500212 return m_chronosyncPrefix;
akmhoque53353462014-04-22 08:43:45 -0500213 }
214
akmhoque157b0a42014-05-13 00:26:37 -0500215 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700216 getLsaPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500217 {
akmhoque157b0a42014-05-13 00:26:37 -0500218 return m_lsaPrefix;
akmhoque53353462014-04-22 08:43:45 -0500219 }
220
221 void
alvy5a454952014-12-15 12:49:54 -0600222 setLsaRefreshTime(uint32_t lrt)
akmhoque53353462014-04-22 08:43:45 -0500223 {
224 m_lsaRefreshTime = lrt;
akmhoque53353462014-04-22 08:43:45 -0500225 }
226
alvy5a454952014-12-15 12:49:54 -0600227 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700228 getLsaRefreshTime() const
akmhoque53353462014-04-22 08:43:45 -0500229 {
230 return m_lsaRefreshTime;
231 }
232
233 void
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700234 setLsaInterestLifetime(const ndn::time::seconds& lifetime)
235 {
236 m_lsaInterestLifetime = lifetime;
237 }
238
239 const ndn::time::seconds&
240 getLsaInterestLifetime() const
241 {
242 return m_lsaInterestLifetime;
243 }
244
245 void
Vince Lehman7b616582014-10-17 16:25:39 -0500246 setAdjLsaBuildInterval(uint32_t interval)
247 {
248 m_adjLsaBuildInterval = interval;
249 }
250
251 uint32_t
252 getAdjLsaBuildInterval() const
253 {
254 return m_adjLsaBuildInterval;
255 }
256
257 void
258 setFirstHelloInterval(uint32_t interval)
259 {
260 m_firstHelloInterval = interval;
261 }
262
263 uint32_t
264 getFirstHelloInterval() const
265 {
266 return m_firstHelloInterval;
267 }
268
269 void
270 setRoutingCalcInterval(uint32_t interval)
271 {
272 m_routingCalcInterval = interval;
273 }
274
275 uint32_t
276 getRoutingCalcInterval() const
277 {
278 return m_routingCalcInterval;
279 }
280
281 void
alvy5a454952014-12-15 12:49:54 -0600282 setRouterDeadInterval(uint32_t rdt)
akmhoque53353462014-04-22 08:43:45 -0500283 {
284 m_routerDeadInterval = rdt;
285 }
286
alvy5a454952014-12-15 12:49:54 -0600287 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700288 getRouterDeadInterval() const
akmhoque53353462014-04-22 08:43:45 -0500289 {
290 return m_routerDeadInterval;
291 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700292
293 void
Nick Gordond5c1a372016-10-31 13:56:23 -0500294 setFaceDatasetFetchTries(uint32_t count)
295 {
296 m_faceDatasetFetchTries = count;
297 }
298
299 uint32_t
300 getFaceDatasetFetchTries() const
301 {
302 return m_faceDatasetFetchTries;
303 }
304
305 void
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500306 setFaceDatasetFetchInterval(uint32_t interval)
Nick Gordond5c1a372016-10-31 13:56:23 -0500307 {
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500308 m_faceDatasetFetchInterval = ndn::time::seconds(interval);
Nick Gordond5c1a372016-10-31 13:56:23 -0500309 }
310
311 const ndn::time::seconds
312 getFaceDatasetFetchInterval() const
313 {
314 return m_faceDatasetFetchInterval;
315 }
316
317 void
akmhoque157b0a42014-05-13 00:26:37 -0500318 setLogLevel(const std::string& logLevel)
319 {
320 m_logLevel = logLevel;
321 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700322
323 const std::string&
324 getLogLevel() const
akmhoque157b0a42014-05-13 00:26:37 -0500325 {
326 return m_logLevel;
327 }
akmhoque53353462014-04-22 08:43:45 -0500328
329 void
akmhoque157b0a42014-05-13 00:26:37 -0500330 setInterestRetryNumber(uint32_t irn)
akmhoque53353462014-04-22 08:43:45 -0500331 {
akmhoque157b0a42014-05-13 00:26:37 -0500332 m_interestRetryNumber = irn;
333 }
334
335 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700336 getInterestRetryNumber() const
akmhoque157b0a42014-05-13 00:26:37 -0500337 {
338 return m_interestRetryNumber;
339 }
340
341 void
alvy5a454952014-12-15 12:49:54 -0600342 setInterestResendTime(uint32_t irt)
akmhoque157b0a42014-05-13 00:26:37 -0500343 {
344 m_interestResendTime = irt;
akmhoque53353462014-04-22 08:43:45 -0500345 }
346
alvy5a454952014-12-15 12:49:54 -0600347 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700348 getInterestResendTime() const
akmhoque53353462014-04-22 08:43:45 -0500349 {
akmhoque157b0a42014-05-13 00:26:37 -0500350 return m_interestResendTime;
akmhoque53353462014-04-22 08:43:45 -0500351 }
352
alvy5a454952014-12-15 12:49:54 -0600353 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700354 getInfoInterestInterval() const
akmhoque53353462014-04-22 08:43:45 -0500355 {
akmhoque157b0a42014-05-13 00:26:37 -0500356 return m_infoInterestInterval;
akmhoque53353462014-04-22 08:43:45 -0500357 }
358
359 void
alvy5a454952014-12-15 12:49:54 -0600360 setInfoInterestInterval(uint32_t iii)
akmhoque53353462014-04-22 08:43:45 -0500361 {
akmhoque157b0a42014-05-13 00:26:37 -0500362 m_infoInterestInterval = iii;
363 }
364
365 void
366 setHyperbolicState(int32_t ihc)
367 {
368 m_hyperbolicState = ihc;
akmhoque53353462014-04-22 08:43:45 -0500369 }
370
akmhoquefdbddb12014-05-02 18:35:19 -0500371 int32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700372 getHyperbolicState() const
akmhoque53353462014-04-22 08:43:45 -0500373 {
akmhoque157b0a42014-05-13 00:26:37 -0500374 return m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500375 }
376
akmhoque157b0a42014-05-13 00:26:37 -0500377 bool
akmhoque53353462014-04-22 08:43:45 -0500378 setCorR(double cr)
379 {
akmhoque157b0a42014-05-13 00:26:37 -0500380 if ( cr >= 0 ) {
381 m_corR = cr;
382 return true;
383 }
384 return false;
akmhoque53353462014-04-22 08:43:45 -0500385 }
386
387 double
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700388 getCorR() const
akmhoque53353462014-04-22 08:43:45 -0500389 {
390 return m_corR;
391 }
392
393 void
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600394 setCorTheta(const std::vector<double>& ct)
akmhoque53353462014-04-22 08:43:45 -0500395 {
396 m_corTheta = ct;
397 }
398
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600399 std::vector<double>
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700400 getCorTheta() const
akmhoque53353462014-04-22 08:43:45 -0500401 {
402 return m_corTheta;
403 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700404
akmhoque53353462014-04-22 08:43:45 -0500405 void
Vince Lehman942eb7b2014-10-02 10:09:27 -0500406 setMaxFacesPerPrefix(uint32_t mfpp)
akmhoque53353462014-04-22 08:43:45 -0500407 {
akmhoque157b0a42014-05-13 00:26:37 -0500408 m_maxFacesPerPrefix = mfpp;
akmhoque53353462014-04-22 08:43:45 -0500409 }
410
Vince Lehman942eb7b2014-10-02 10:09:27 -0500411 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700412 getMaxFacesPerPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500413 {
akmhoque157b0a42014-05-13 00:26:37 -0500414 return m_maxFacesPerPrefix;
akmhoque53353462014-04-22 08:43:45 -0500415 }
416
417 void
akmhoque157b0a42014-05-13 00:26:37 -0500418 setSeqFileDir(const std::string& ssfd)
akmhoque53353462014-04-22 08:43:45 -0500419 {
akmhoque157b0a42014-05-13 00:26:37 -0500420 m_seqFileDir = ssfd;
akmhoque53353462014-04-22 08:43:45 -0500421 }
422
akmhoque157b0a42014-05-13 00:26:37 -0500423 const std::string&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700424 getSeqFileDir() const
akmhoque53353462014-04-22 08:43:45 -0500425 {
akmhoque157b0a42014-05-13 00:26:37 -0500426 return m_seqFileDir;
akmhoque53353462014-04-22 08:43:45 -0500427 }
428
akmhoque674b0b12014-05-20 14:33:28 -0500429 void
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600430 setSyncInterestLifetime(uint32_t syncInterestLifetime)
431 {
432 m_syncInterestLifetime = ndn::time::milliseconds(syncInterestLifetime);
433 }
434
435 const ndn::time::milliseconds&
436 getSyncInterestLifetime() const
437 {
438 return m_syncInterestLifetime;
439 }
440
441 void
akmhoque674b0b12014-05-20 14:33:28 -0500442 writeLog();
akmhoque53353462014-04-22 08:43:45 -0500443
444private:
akmhoque31d1d4b2014-05-05 22:08:14 -0500445 ndn::Name m_routerName;
446 ndn::Name m_siteName;
447 ndn::Name m_network;
akmhoque53353462014-04-22 08:43:45 -0500448
akmhoque31d1d4b2014-05-05 22:08:14 -0500449 ndn::Name m_routerPrefix;
450 ndn::Name m_lsaRouterPrefix;
akmhoque53353462014-04-22 08:43:45 -0500451
akmhoque157b0a42014-05-13 00:26:37 -0500452 ndn::Name m_chronosyncPrefix;
453 ndn::Name m_lsaPrefix;
454
alvy5a454952014-12-15 12:49:54 -0600455 uint32_t m_lsaRefreshTime;
Vince Lehman7b616582014-10-17 16:25:39 -0500456
457 uint32_t m_adjLsaBuildInterval;
458 uint32_t m_firstHelloInterval;
459 uint32_t m_routingCalcInterval;
460
Nick Gordond5c1a372016-10-31 13:56:23 -0500461 uint32_t m_faceDatasetFetchTries;
462 ndn::time::seconds m_faceDatasetFetchInterval;
463
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700464 ndn::time::seconds m_lsaInterestLifetime;
alvy5a454952014-12-15 12:49:54 -0600465 uint32_t m_routerDeadInterval;
akmhoque157b0a42014-05-13 00:26:37 -0500466 std::string m_logLevel;
akmhoque53353462014-04-22 08:43:45 -0500467
akmhoquefdbddb12014-05-02 18:35:19 -0500468 uint32_t m_interestRetryNumber;
alvy5a454952014-12-15 12:49:54 -0600469 uint32_t m_interestResendTime;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700470
alvy5a454952014-12-15 12:49:54 -0600471 uint32_t m_infoInterestInterval;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700472
akmhoque157b0a42014-05-13 00:26:37 -0500473 int32_t m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500474 double m_corR;
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600475 std::vector<double> m_corTheta;
akmhoque53353462014-04-22 08:43:45 -0500476
Vince Lehman942eb7b2014-10-02 10:09:27 -0500477 uint32_t m_maxFacesPerPrefix;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700478
akmhoque157b0a42014-05-13 00:26:37 -0500479 std::string m_seqFileDir;
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600480 ndn::time::milliseconds m_syncInterestLifetime;
akmhoque53353462014-04-22 08:43:45 -0500481};
482
akmhoque53353462014-04-22 08:43:45 -0500483} // namespace nlsr
484
dmcoomese689dd62017-03-29 11:05:12 -0500485#endif // NLSR_CONF_PARAMETER_HPP