blob: df90cdac77510cf3c6be97f83754f334c2cbc68c [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"
Ashlesh Gawande982a58f2018-02-14 17:39:12 -060027#include "test-access-control.hpp"
Ashlesh Gawande3909aa12017-07-28 16:01:35 -050028
akmhoque53353462014-04-22 08:43:45 -050029#include <iostream>
akmhoquefdbddb12014-05-02 18:35:19 -050030#include <boost/cstdint.hpp>
akmhoque31d1d4b2014-05-05 22:08:14 -050031#include <ndn-cxx/face.hpp>
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -070032#include <ndn-cxx/util/time.hpp>
akmhoque53353462014-04-22 08:43:45 -050033
34namespace nlsr {
akmhoque157b0a42014-05-13 00:26:37 -050035
36enum {
37 LSA_REFRESH_TIME_MIN = 240,
38 LSA_REFRESH_TIME_DEFAULT = 1800,
39 LSA_REFRESH_TIME_MAX = 7200
40};
41
42enum {
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -050043 SYNC_PROTOCOL_CHRONOSYNC = 0,
44 SYNC_PROTOCOL_PSYNC = 1
45};
46
47enum {
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -070048 LSA_INTEREST_LIFETIME_MIN = 1,
49 LSA_INTEREST_LIFETIME_DEFAULT = 4,
50 LSA_INTEREST_LIFETIME_MAX = 60
51};
52
53enum {
Vince Lehman7b616582014-10-17 16:25:39 -050054 ADJ_LSA_BUILD_INTERVAL_MIN = 0,
55 ADJ_LSA_BUILD_INTERVAL_DEFAULT = 5,
56 ADJ_LSA_BUILD_INTERVAL_MAX = 5
57};
58
59enum {
60 FIRST_HELLO_INTERVAL_MIN = 0,
61 FIRST_HELLO_INTERVAL_DEFAULT = 10,
62 FIRST_HELLO_INTERVAL_MAX = 10
63};
64
65enum {
66 ROUTING_CALC_INTERVAL_MIN = 0,
67 ROUTING_CALC_INTERVAL_DEFAULT = 15,
68 ROUTING_CALC_INTERVAL_MAX = 15
69};
70
Nick Gordond5c1a372016-10-31 13:56:23 -050071
72enum {
73 FACE_DATASET_FETCH_TRIES_MIN = 1,
74 FACE_DATASET_FETCH_TRIES_MAX = 10,
75 FACE_DATASET_FETCH_TRIES_DEFAULT = 3
76};
77
78enum {
79 FACE_DATASET_FETCH_INTERVAL_MIN = 1800,
80 FACE_DATASET_FETCH_INTERVAL_MAX = 5400,
81 FACE_DATASET_FETCH_INTERVAL_DEFAULT = 3600
82};
83
Vince Lehman7b616582014-10-17 16:25:39 -050084enum {
akmhoque157b0a42014-05-13 00:26:37 -050085 HELLO_RETRIES_MIN = 1,
86 HELLO_RETRIES_DEFAULT = 3,
87 HELLO_RETRIES_MAX = 15
88};
89
90enum {
91 HELLO_TIMEOUT_MIN = 1,
92 HELLO_TIMEOUT_DEFAULT = 3,
93 HELLO_TIMEOUT_MAX = 15
94};
95
96enum {
97 HELLO_INTERVAL_MIN = 30,
98 HELLO_INTERVAL_DEFAULT = 60,
99 HELLO_INTERVAL_MAX =90
100};
101
102enum {
103 MAX_FACES_PER_PREFIX_MIN = 0,
alvya2228c62014-12-09 10:25:11 -0600104 MAX_FACES_PER_PREFIX_DEFAULT = 0,
akmhoque157b0a42014-05-13 00:26:37 -0500105 MAX_FACES_PER_PREFIX_MAX = 60
106};
107
Nick Gordon5c467f02016-07-13 13:40:10 -0500108enum HyperbolicState {
akmhoque157b0a42014-05-13 00:26:37 -0500109 HYPERBOLIC_STATE_OFF = 0,
110 HYPERBOLIC_STATE_ON = 1,
alvya2228c62014-12-09 10:25:11 -0600111 HYPERBOLIC_STATE_DRY_RUN = 2,
112 HYPERBOLIC_STATE_DEFAULT = 0
akmhoque157b0a42014-05-13 00:26:37 -0500113};
114
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600115enum {
116 SYNC_INTEREST_LIFETIME_MIN = 1000,
117 SYNC_INTEREST_LIFETIME_DEFAULT = 60000,
118 SYNC_INTEREST_LIFETIME_MAX = 120000,
119};
120
Nick Gordond0a7df32017-05-30 16:44:34 -0500121/*! \brief A class to house all the configuration parameters for NLSR.
122 *
123 * This class is conceptually a singleton (but not mechanically) which
124 * is just a collection of attributes that serve as a
125 * separation-of-data for NLSR's configuration variables. NLSR refers
126 * to an instance of this class for all its configuration
127 * parameters. This object is typically populated by a
128 * ConfFileProcessor reading a configuration file.
129 *
130 * \sa nlsr::ConfFileProcessor
131 */
akmhoque53353462014-04-22 08:43:45 -0500132class ConfParameter
133{
134
135public:
136 ConfParameter()
akmhoque157b0a42014-05-13 00:26:37 -0500137 : m_lsaRefreshTime(LSA_REFRESH_TIME_DEFAULT)
Vince Lehman7b616582014-10-17 16:25:39 -0500138 , m_adjLsaBuildInterval(ADJ_LSA_BUILD_INTERVAL_DEFAULT)
139 , m_firstHelloInterval(FIRST_HELLO_INTERVAL_DEFAULT)
140 , m_routingCalcInterval(ROUTING_CALC_INTERVAL_DEFAULT)
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500141 , m_faceDatasetFetchInterval(ndn::time::seconds(static_cast<int>(FACE_DATASET_FETCH_INTERVAL_DEFAULT)))
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700142 , m_lsaInterestLifetime(ndn::time::seconds(static_cast<int>(LSA_INTEREST_LIFETIME_DEFAULT)))
Alexander Afanasyev1cf1e102014-08-17 19:47:57 -0700143 , m_routerDeadInterval(2 * LSA_REFRESH_TIME_DEFAULT)
akmhoque157b0a42014-05-13 00:26:37 -0500144 , m_interestRetryNumber(HELLO_RETRIES_DEFAULT)
145 , m_interestResendTime(HELLO_TIMEOUT_DEFAULT)
146 , m_infoInterestInterval(HELLO_INTERVAL_DEFAULT)
147 , m_hyperbolicState(HYPERBOLIC_STATE_OFF)
akmhoque53353462014-04-22 08:43:45 -0500148 , m_corR(0)
akmhoque157b0a42014-05-13 00:26:37 -0500149 , m_maxFacesPerPrefix(MAX_FACES_PER_PREFIX_MIN)
Alexander Afanasyevb0bf8df2018-02-19 12:25:44 -0500150 , m_syncInterestLifetime(ndn::time::milliseconds(SYNC_INTEREST_LIFETIME_DEFAULT))
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500151 , m_syncProtocol(SYNC_PROTOCOL_CHRONOSYNC)
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700152 {
153 }
akmhoque53353462014-04-22 08:43:45 -0500154
155 void
Ashlesh Gawande982a58f2018-02-14 17:39:12 -0600156 setNetwork(const ndn::Name& networkName);
akmhoque53353462014-04-22 08:43:45 -0500157
akmhoque31d1d4b2014-05-05 22:08:14 -0500158 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700159 getNetwork() const
akmhoque53353462014-04-22 08:43:45 -0500160 {
161 return m_network;
162 }
163
164 void
akmhoque157b0a42014-05-13 00:26:37 -0500165 setRouterName(const ndn::Name& routerName)
166 {
167 m_routerName = routerName;
168 }
169
170 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700171 getRouterName() const
akmhoque157b0a42014-05-13 00:26:37 -0500172 {
173 return m_routerName;
174 }
175
176 void
177 setSiteName(const ndn::Name& siteName)
178 {
179 m_siteName = siteName;
180 }
181
182 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700183 getSiteName() const
akmhoque157b0a42014-05-13 00:26:37 -0500184 {
185 return m_siteName;
186 }
187
188 void
akmhoque53353462014-04-22 08:43:45 -0500189 buildRouterPrefix()
190 {
akmhoque31d1d4b2014-05-05 22:08:14 -0500191 m_routerPrefix = m_network;
192 m_routerPrefix.append(m_siteName);
193 m_routerPrefix.append(m_routerName);
akmhoque53353462014-04-22 08:43:45 -0500194 }
195
akmhoque31d1d4b2014-05-05 22:08:14 -0500196 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700197 getRouterPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500198 {
199 return m_routerPrefix;
200 }
201
akmhoque157b0a42014-05-13 00:26:37 -0500202
akmhoque31d1d4b2014-05-05 22:08:14 -0500203 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700204 getChronosyncPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500205 {
akmhoque157b0a42014-05-13 00:26:37 -0500206 return m_chronosyncPrefix;
akmhoque53353462014-04-22 08:43:45 -0500207 }
208
akmhoque157b0a42014-05-13 00:26:37 -0500209 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700210 getLsaPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500211 {
akmhoque157b0a42014-05-13 00:26:37 -0500212 return m_lsaPrefix;
akmhoque53353462014-04-22 08:43:45 -0500213 }
214
215 void
alvy5a454952014-12-15 12:49:54 -0600216 setLsaRefreshTime(uint32_t lrt)
akmhoque53353462014-04-22 08:43:45 -0500217 {
218 m_lsaRefreshTime = lrt;
akmhoque53353462014-04-22 08:43:45 -0500219 }
220
alvy5a454952014-12-15 12:49:54 -0600221 uint32_t
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500222 getSyncProtocol() const
223 {
224 return m_syncProtocol;
225 }
226
227 void
228 setSyncProtocol(int32_t syncProtocol)
229 {
230 if (syncProtocol == SYNC_PROTOCOL_CHRONOSYNC || syncProtocol == SYNC_PROTOCOL_PSYNC) {
231 m_syncProtocol = syncProtocol;
232 }
233 }
234
235 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700236 getLsaRefreshTime() const
akmhoque53353462014-04-22 08:43:45 -0500237 {
238 return m_lsaRefreshTime;
239 }
240
241 void
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700242 setLsaInterestLifetime(const ndn::time::seconds& lifetime)
243 {
244 m_lsaInterestLifetime = lifetime;
245 }
246
247 const ndn::time::seconds&
248 getLsaInterestLifetime() const
249 {
250 return m_lsaInterestLifetime;
251 }
252
253 void
Vince Lehman7b616582014-10-17 16:25:39 -0500254 setAdjLsaBuildInterval(uint32_t interval)
255 {
256 m_adjLsaBuildInterval = interval;
257 }
258
259 uint32_t
260 getAdjLsaBuildInterval() const
261 {
262 return m_adjLsaBuildInterval;
263 }
264
265 void
266 setFirstHelloInterval(uint32_t interval)
267 {
268 m_firstHelloInterval = interval;
269 }
270
271 uint32_t
272 getFirstHelloInterval() const
273 {
274 return m_firstHelloInterval;
275 }
276
277 void
278 setRoutingCalcInterval(uint32_t interval)
279 {
280 m_routingCalcInterval = interval;
281 }
282
283 uint32_t
284 getRoutingCalcInterval() const
285 {
286 return m_routingCalcInterval;
287 }
288
289 void
alvy5a454952014-12-15 12:49:54 -0600290 setRouterDeadInterval(uint32_t rdt)
akmhoque53353462014-04-22 08:43:45 -0500291 {
292 m_routerDeadInterval = rdt;
293 }
294
alvy5a454952014-12-15 12:49:54 -0600295 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700296 getRouterDeadInterval() const
akmhoque53353462014-04-22 08:43:45 -0500297 {
298 return m_routerDeadInterval;
299 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700300
301 void
Nick Gordond5c1a372016-10-31 13:56:23 -0500302 setFaceDatasetFetchTries(uint32_t count)
303 {
304 m_faceDatasetFetchTries = count;
305 }
306
307 uint32_t
308 getFaceDatasetFetchTries() const
309 {
310 return m_faceDatasetFetchTries;
311 }
312
313 void
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500314 setFaceDatasetFetchInterval(uint32_t interval)
Nick Gordond5c1a372016-10-31 13:56:23 -0500315 {
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500316 m_faceDatasetFetchInterval = ndn::time::seconds(interval);
Nick Gordond5c1a372016-10-31 13:56:23 -0500317 }
318
319 const ndn::time::seconds
320 getFaceDatasetFetchInterval() const
321 {
322 return m_faceDatasetFetchInterval;
323 }
324
325 void
akmhoque157b0a42014-05-13 00:26:37 -0500326 setInterestRetryNumber(uint32_t irn)
akmhoque53353462014-04-22 08:43:45 -0500327 {
akmhoque157b0a42014-05-13 00:26:37 -0500328 m_interestRetryNumber = irn;
329 }
330
331 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700332 getInterestRetryNumber() const
akmhoque157b0a42014-05-13 00:26:37 -0500333 {
334 return m_interestRetryNumber;
335 }
336
337 void
alvy5a454952014-12-15 12:49:54 -0600338 setInterestResendTime(uint32_t irt)
akmhoque157b0a42014-05-13 00:26:37 -0500339 {
340 m_interestResendTime = irt;
akmhoque53353462014-04-22 08:43:45 -0500341 }
342
alvy5a454952014-12-15 12:49:54 -0600343 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700344 getInterestResendTime() const
akmhoque53353462014-04-22 08:43:45 -0500345 {
akmhoque157b0a42014-05-13 00:26:37 -0500346 return m_interestResendTime;
akmhoque53353462014-04-22 08:43:45 -0500347 }
348
alvy5a454952014-12-15 12:49:54 -0600349 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700350 getInfoInterestInterval() const
akmhoque53353462014-04-22 08:43:45 -0500351 {
akmhoque157b0a42014-05-13 00:26:37 -0500352 return m_infoInterestInterval;
akmhoque53353462014-04-22 08:43:45 -0500353 }
354
355 void
alvy5a454952014-12-15 12:49:54 -0600356 setInfoInterestInterval(uint32_t iii)
akmhoque53353462014-04-22 08:43:45 -0500357 {
akmhoque157b0a42014-05-13 00:26:37 -0500358 m_infoInterestInterval = iii;
359 }
360
361 void
362 setHyperbolicState(int32_t ihc)
363 {
364 m_hyperbolicState = ihc;
akmhoque53353462014-04-22 08:43:45 -0500365 }
366
akmhoquefdbddb12014-05-02 18:35:19 -0500367 int32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700368 getHyperbolicState() const
akmhoque53353462014-04-22 08:43:45 -0500369 {
akmhoque157b0a42014-05-13 00:26:37 -0500370 return m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500371 }
372
akmhoque157b0a42014-05-13 00:26:37 -0500373 bool
akmhoque53353462014-04-22 08:43:45 -0500374 setCorR(double cr)
375 {
akmhoque157b0a42014-05-13 00:26:37 -0500376 if ( cr >= 0 ) {
377 m_corR = cr;
378 return true;
379 }
380 return false;
akmhoque53353462014-04-22 08:43:45 -0500381 }
382
383 double
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700384 getCorR() const
akmhoque53353462014-04-22 08:43:45 -0500385 {
386 return m_corR;
387 }
388
389 void
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600390 setCorTheta(const std::vector<double>& ct)
akmhoque53353462014-04-22 08:43:45 -0500391 {
392 m_corTheta = ct;
393 }
394
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600395 std::vector<double>
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700396 getCorTheta() const
akmhoque53353462014-04-22 08:43:45 -0500397 {
398 return m_corTheta;
399 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700400
akmhoque53353462014-04-22 08:43:45 -0500401 void
Vince Lehman942eb7b2014-10-02 10:09:27 -0500402 setMaxFacesPerPrefix(uint32_t mfpp)
akmhoque53353462014-04-22 08:43:45 -0500403 {
akmhoque157b0a42014-05-13 00:26:37 -0500404 m_maxFacesPerPrefix = mfpp;
akmhoque53353462014-04-22 08:43:45 -0500405 }
406
Vince Lehman942eb7b2014-10-02 10:09:27 -0500407 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700408 getMaxFacesPerPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500409 {
akmhoque157b0a42014-05-13 00:26:37 -0500410 return m_maxFacesPerPrefix;
akmhoque53353462014-04-22 08:43:45 -0500411 }
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
akmhoque674b0b12014-05-20 14:33:28 -0500425 void
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600426 setSyncInterestLifetime(uint32_t syncInterestLifetime)
427 {
428 m_syncInterestLifetime = ndn::time::milliseconds(syncInterestLifetime);
429 }
430
431 const ndn::time::milliseconds&
432 getSyncInterestLifetime() const
433 {
434 return m_syncInterestLifetime;
435 }
436
437 void
akmhoque674b0b12014-05-20 14:33:28 -0500438 writeLog();
akmhoque53353462014-04-22 08:43:45 -0500439
440private:
akmhoque31d1d4b2014-05-05 22:08:14 -0500441 ndn::Name m_routerName;
442 ndn::Name m_siteName;
443 ndn::Name m_network;
akmhoque53353462014-04-22 08:43:45 -0500444
akmhoque31d1d4b2014-05-05 22:08:14 -0500445 ndn::Name m_routerPrefix;
446 ndn::Name m_lsaRouterPrefix;
akmhoque53353462014-04-22 08:43:45 -0500447
akmhoque157b0a42014-05-13 00:26:37 -0500448 ndn::Name m_chronosyncPrefix;
449 ndn::Name m_lsaPrefix;
450
alvy5a454952014-12-15 12:49:54 -0600451 uint32_t m_lsaRefreshTime;
Vince Lehman7b616582014-10-17 16:25:39 -0500452
453 uint32_t m_adjLsaBuildInterval;
454 uint32_t m_firstHelloInterval;
455 uint32_t m_routingCalcInterval;
456
Nick Gordond5c1a372016-10-31 13:56:23 -0500457 uint32_t m_faceDatasetFetchTries;
458 ndn::time::seconds m_faceDatasetFetchInterval;
459
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700460 ndn::time::seconds m_lsaInterestLifetime;
alvy5a454952014-12-15 12:49:54 -0600461 uint32_t m_routerDeadInterval;
akmhoque53353462014-04-22 08:43:45 -0500462
akmhoquefdbddb12014-05-02 18:35:19 -0500463 uint32_t m_interestRetryNumber;
alvy5a454952014-12-15 12:49:54 -0600464 uint32_t m_interestResendTime;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700465
alvy5a454952014-12-15 12:49:54 -0600466 uint32_t m_infoInterestInterval;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700467
akmhoque157b0a42014-05-13 00:26:37 -0500468 int32_t m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500469 double m_corR;
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600470 std::vector<double> m_corTheta;
akmhoque53353462014-04-22 08:43:45 -0500471
Vince Lehman942eb7b2014-10-02 10:09:27 -0500472 uint32_t m_maxFacesPerPrefix;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700473
akmhoque157b0a42014-05-13 00:26:37 -0500474 std::string m_seqFileDir;
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600475 ndn::time::milliseconds m_syncInterestLifetime;
Ashlesh Gawande982a58f2018-02-14 17:39:12 -0600476
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500477 int32_t m_syncProtocol;
478
Ashlesh Gawande982a58f2018-02-14 17:39:12 -0600479PUBLIC_WITH_TESTS_ELSE_PRIVATE:
480 static const uint64_t SYNC_VERSION;
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