blob: 78486762be06fbb21bd7944b631f7716dc69c0a8 [file] [log] [blame]
akmhoque3d06e792014-05-27 16:23:20 -05001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
Ashlesh Gawande85998a12017-12-07 22:22:13 -06003 * Copyright (c) 2014-2019, 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 Gawande85998a12017-12-07 22:22:13 -060028#include "adjacency-list.hpp"
29#include "name-prefix-list.hpp"
30#include "security/certificate-store.hpp"
Ashlesh Gawande3909aa12017-07-28 16:01:35 -050031
akmhoque53353462014-04-22 08:43:45 -050032#include <iostream>
akmhoquefdbddb12014-05-02 18:35:19 -050033#include <boost/cstdint.hpp>
akmhoque31d1d4b2014-05-05 22:08:14 -050034#include <ndn-cxx/face.hpp>
Ashlesh Gawande85998a12017-12-07 22:22:13 -060035#include <ndn-cxx/security/validator-config.hpp>
36#include <ndn-cxx/security/v2/certificate-fetcher-direct-fetch.hpp>
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -070037#include <ndn-cxx/util/time.hpp>
akmhoque53353462014-04-22 08:43:45 -050038
39namespace nlsr {
akmhoque157b0a42014-05-13 00:26:37 -050040
41enum {
42 LSA_REFRESH_TIME_MIN = 240,
43 LSA_REFRESH_TIME_DEFAULT = 1800,
44 LSA_REFRESH_TIME_MAX = 7200
45};
46
47enum {
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -050048 SYNC_PROTOCOL_CHRONOSYNC = 0,
49 SYNC_PROTOCOL_PSYNC = 1
50};
51
52enum {
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -070053 LSA_INTEREST_LIFETIME_MIN = 1,
54 LSA_INTEREST_LIFETIME_DEFAULT = 4,
55 LSA_INTEREST_LIFETIME_MAX = 60
56};
57
58enum {
Ashlesh Gawande6b388fc2019-09-30 10:14:41 -050059 ADJ_LSA_BUILD_INTERVAL_MIN = 5,
60 ADJ_LSA_BUILD_INTERVAL_DEFAULT = 10,
61 ADJ_LSA_BUILD_INTERVAL_MAX = 30
Vince Lehman7b616582014-10-17 16:25:39 -050062};
63
64enum {
65 ROUTING_CALC_INTERVAL_MIN = 0,
66 ROUTING_CALC_INTERVAL_DEFAULT = 15,
67 ROUTING_CALC_INTERVAL_MAX = 15
68};
69
Nick Gordond5c1a372016-10-31 13:56:23 -050070
71enum {
72 FACE_DATASET_FETCH_TRIES_MIN = 1,
73 FACE_DATASET_FETCH_TRIES_MAX = 10,
74 FACE_DATASET_FETCH_TRIES_DEFAULT = 3
75};
76
77enum {
78 FACE_DATASET_FETCH_INTERVAL_MIN = 1800,
79 FACE_DATASET_FETCH_INTERVAL_MAX = 5400,
80 FACE_DATASET_FETCH_INTERVAL_DEFAULT = 3600
81};
82
Vince Lehman7b616582014-10-17 16:25:39 -050083enum {
akmhoque157b0a42014-05-13 00:26:37 -050084 HELLO_RETRIES_MIN = 1,
85 HELLO_RETRIES_DEFAULT = 3,
86 HELLO_RETRIES_MAX = 15
87};
88
89enum {
90 HELLO_TIMEOUT_MIN = 1,
Ashlesh Gawande6b388fc2019-09-30 10:14:41 -050091 HELLO_TIMEOUT_DEFAULT = 1,
akmhoque157b0a42014-05-13 00:26:37 -050092 HELLO_TIMEOUT_MAX = 15
93};
94
95enum {
96 HELLO_INTERVAL_MIN = 30,
97 HELLO_INTERVAL_DEFAULT = 60,
98 HELLO_INTERVAL_MAX =90
99};
100
101enum {
102 MAX_FACES_PER_PREFIX_MIN = 0,
alvya2228c62014-12-09 10:25:11 -0600103 MAX_FACES_PER_PREFIX_DEFAULT = 0,
akmhoque157b0a42014-05-13 00:26:37 -0500104 MAX_FACES_PER_PREFIX_MAX = 60
105};
106
Nick Gordon5c467f02016-07-13 13:40:10 -0500107enum HyperbolicState {
akmhoque157b0a42014-05-13 00:26:37 -0500108 HYPERBOLIC_STATE_OFF = 0,
109 HYPERBOLIC_STATE_ON = 1,
alvya2228c62014-12-09 10:25:11 -0600110 HYPERBOLIC_STATE_DRY_RUN = 2,
111 HYPERBOLIC_STATE_DEFAULT = 0
akmhoque157b0a42014-05-13 00:26:37 -0500112};
113
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600114enum {
115 SYNC_INTEREST_LIFETIME_MIN = 1000,
116 SYNC_INTEREST_LIFETIME_DEFAULT = 60000,
117 SYNC_INTEREST_LIFETIME_MAX = 120000,
118};
119
Nick Gordond0a7df32017-05-30 16:44:34 -0500120/*! \brief A class to house all the configuration parameters for NLSR.
121 *
122 * This class is conceptually a singleton (but not mechanically) which
123 * is just a collection of attributes that serve as a
124 * separation-of-data for NLSR's configuration variables. NLSR refers
125 * to an instance of this class for all its configuration
126 * parameters. This object is typically populated by a
127 * ConfFileProcessor reading a configuration file.
128 *
129 * \sa nlsr::ConfFileProcessor
130 */
akmhoque53353462014-04-22 08:43:45 -0500131class ConfParameter
132{
133
134public:
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600135 ConfParameter(ndn::Face& face, const std::string& confFileName = "nlsr.conf");
136
137 const std::string&
138 getConfFileName()
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700139 {
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600140 return m_confFileName;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700141 }
akmhoque53353462014-04-22 08:43:45 -0500142
143 void
Ashlesh Gawande982a58f2018-02-14 17:39:12 -0600144 setNetwork(const ndn::Name& networkName);
akmhoque53353462014-04-22 08:43:45 -0500145
akmhoque31d1d4b2014-05-05 22:08:14 -0500146 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700147 getNetwork() const
akmhoque53353462014-04-22 08:43:45 -0500148 {
149 return m_network;
150 }
151
152 void
akmhoque157b0a42014-05-13 00:26:37 -0500153 setRouterName(const ndn::Name& routerName)
154 {
155 m_routerName = routerName;
156 }
157
158 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700159 getRouterName() const
akmhoque157b0a42014-05-13 00:26:37 -0500160 {
161 return m_routerName;
162 }
163
164 void
165 setSiteName(const ndn::Name& siteName)
166 {
167 m_siteName = siteName;
168 }
169
170 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700171 getSiteName() const
akmhoque157b0a42014-05-13 00:26:37 -0500172 {
173 return m_siteName;
174 }
175
176 void
Ashlesh Gawande6b388fc2019-09-30 10:14:41 -0500177 buildRouterAndSyncUserPrefix()
akmhoque53353462014-04-22 08:43:45 -0500178 {
akmhoque31d1d4b2014-05-05 22:08:14 -0500179 m_routerPrefix = m_network;
180 m_routerPrefix.append(m_siteName);
181 m_routerPrefix.append(m_routerName);
Ashlesh Gawande6b388fc2019-09-30 10:14:41 -0500182
183 m_syncUserPrefix = m_lsaPrefix;
184 m_syncUserPrefix.append(m_siteName);
185 m_syncUserPrefix.append(m_routerName);
akmhoque53353462014-04-22 08:43:45 -0500186 }
187
akmhoque31d1d4b2014-05-05 22:08:14 -0500188 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700189 getRouterPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500190 {
191 return m_routerPrefix;
192 }
193
akmhoque31d1d4b2014-05-05 22:08:14 -0500194 const ndn::Name&
Ashlesh Gawande6b388fc2019-09-30 10:14:41 -0500195 getSyncUserPrefix() const
196 {
197 return m_syncUserPrefix;
198 }
199
200 const ndn::Name&
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600201 getSyncPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500202 {
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600203 return m_syncPrefix;
akmhoque53353462014-04-22 08:43:45 -0500204 }
205
akmhoque157b0a42014-05-13 00:26:37 -0500206 const ndn::Name&
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700207 getLsaPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500208 {
akmhoque157b0a42014-05-13 00:26:37 -0500209 return m_lsaPrefix;
akmhoque53353462014-04-22 08:43:45 -0500210 }
211
212 void
alvy5a454952014-12-15 12:49:54 -0600213 setLsaRefreshTime(uint32_t lrt)
akmhoque53353462014-04-22 08:43:45 -0500214 {
215 m_lsaRefreshTime = lrt;
akmhoque53353462014-04-22 08:43:45 -0500216 }
217
alvy5a454952014-12-15 12:49:54 -0600218 uint32_t
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500219 getSyncProtocol() const
220 {
221 return m_syncProtocol;
222 }
223
224 void
225 setSyncProtocol(int32_t syncProtocol)
226 {
227 if (syncProtocol == SYNC_PROTOCOL_CHRONOSYNC || syncProtocol == SYNC_PROTOCOL_PSYNC) {
228 m_syncProtocol = syncProtocol;
229 }
230 }
231
232 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700233 getLsaRefreshTime() const
akmhoque53353462014-04-22 08:43:45 -0500234 {
235 return m_lsaRefreshTime;
236 }
237
238 void
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700239 setLsaInterestLifetime(const ndn::time::seconds& lifetime)
240 {
241 m_lsaInterestLifetime = lifetime;
242 }
243
244 const ndn::time::seconds&
245 getLsaInterestLifetime() const
246 {
247 return m_lsaInterestLifetime;
248 }
249
250 void
Vince Lehman7b616582014-10-17 16:25:39 -0500251 setAdjLsaBuildInterval(uint32_t interval)
252 {
253 m_adjLsaBuildInterval = interval;
254 }
255
256 uint32_t
257 getAdjLsaBuildInterval() const
258 {
259 return m_adjLsaBuildInterval;
260 }
261
262 void
Vince Lehman7b616582014-10-17 16:25:39 -0500263 setRoutingCalcInterval(uint32_t interval)
264 {
265 m_routingCalcInterval = interval;
266 }
267
268 uint32_t
269 getRoutingCalcInterval() const
270 {
271 return m_routingCalcInterval;
272 }
273
274 void
alvy5a454952014-12-15 12:49:54 -0600275 setRouterDeadInterval(uint32_t rdt)
akmhoque53353462014-04-22 08:43:45 -0500276 {
277 m_routerDeadInterval = rdt;
278 }
279
alvy5a454952014-12-15 12:49:54 -0600280 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700281 getRouterDeadInterval() const
akmhoque53353462014-04-22 08:43:45 -0500282 {
283 return m_routerDeadInterval;
284 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700285
286 void
Nick Gordond5c1a372016-10-31 13:56:23 -0500287 setFaceDatasetFetchTries(uint32_t count)
288 {
289 m_faceDatasetFetchTries = count;
290 }
291
292 uint32_t
293 getFaceDatasetFetchTries() const
294 {
295 return m_faceDatasetFetchTries;
296 }
297
298 void
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500299 setFaceDatasetFetchInterval(uint32_t interval)
Nick Gordond5c1a372016-10-31 13:56:23 -0500300 {
Ashlesh Gawande3909aa12017-07-28 16:01:35 -0500301 m_faceDatasetFetchInterval = ndn::time::seconds(interval);
Nick Gordond5c1a372016-10-31 13:56:23 -0500302 }
303
304 const ndn::time::seconds
305 getFaceDatasetFetchInterval() const
306 {
307 return m_faceDatasetFetchInterval;
308 }
309
310 void
akmhoque157b0a42014-05-13 00:26:37 -0500311 setInterestRetryNumber(uint32_t irn)
akmhoque53353462014-04-22 08:43:45 -0500312 {
akmhoque157b0a42014-05-13 00:26:37 -0500313 m_interestRetryNumber = irn;
314 }
315
316 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700317 getInterestRetryNumber() const
akmhoque157b0a42014-05-13 00:26:37 -0500318 {
319 return m_interestRetryNumber;
320 }
321
322 void
alvy5a454952014-12-15 12:49:54 -0600323 setInterestResendTime(uint32_t irt)
akmhoque157b0a42014-05-13 00:26:37 -0500324 {
325 m_interestResendTime = irt;
akmhoque53353462014-04-22 08:43:45 -0500326 }
327
alvy5a454952014-12-15 12:49:54 -0600328 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700329 getInterestResendTime() const
akmhoque53353462014-04-22 08:43:45 -0500330 {
akmhoque157b0a42014-05-13 00:26:37 -0500331 return m_interestResendTime;
akmhoque53353462014-04-22 08:43:45 -0500332 }
333
alvy5a454952014-12-15 12:49:54 -0600334 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700335 getInfoInterestInterval() const
akmhoque53353462014-04-22 08:43:45 -0500336 {
akmhoque157b0a42014-05-13 00:26:37 -0500337 return m_infoInterestInterval;
akmhoque53353462014-04-22 08:43:45 -0500338 }
339
340 void
alvy5a454952014-12-15 12:49:54 -0600341 setInfoInterestInterval(uint32_t iii)
akmhoque53353462014-04-22 08:43:45 -0500342 {
akmhoque157b0a42014-05-13 00:26:37 -0500343 m_infoInterestInterval = iii;
344 }
345
346 void
347 setHyperbolicState(int32_t ihc)
348 {
349 m_hyperbolicState = ihc;
akmhoque53353462014-04-22 08:43:45 -0500350 }
351
akmhoquefdbddb12014-05-02 18:35:19 -0500352 int32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700353 getHyperbolicState() const
akmhoque53353462014-04-22 08:43:45 -0500354 {
akmhoque157b0a42014-05-13 00:26:37 -0500355 return m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500356 }
357
akmhoque157b0a42014-05-13 00:26:37 -0500358 bool
akmhoque53353462014-04-22 08:43:45 -0500359 setCorR(double cr)
360 {
akmhoque157b0a42014-05-13 00:26:37 -0500361 if ( cr >= 0 ) {
362 m_corR = cr;
363 return true;
364 }
365 return false;
akmhoque53353462014-04-22 08:43:45 -0500366 }
367
368 double
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700369 getCorR() const
akmhoque53353462014-04-22 08:43:45 -0500370 {
371 return m_corR;
372 }
373
374 void
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600375 setCorTheta(const std::vector<double>& ct)
akmhoque53353462014-04-22 08:43:45 -0500376 {
377 m_corTheta = ct;
378 }
379
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600380 std::vector<double>
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700381 getCorTheta() const
akmhoque53353462014-04-22 08:43:45 -0500382 {
383 return m_corTheta;
384 }
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700385
akmhoque53353462014-04-22 08:43:45 -0500386 void
Vince Lehman942eb7b2014-10-02 10:09:27 -0500387 setMaxFacesPerPrefix(uint32_t mfpp)
akmhoque53353462014-04-22 08:43:45 -0500388 {
akmhoque157b0a42014-05-13 00:26:37 -0500389 m_maxFacesPerPrefix = mfpp;
akmhoque53353462014-04-22 08:43:45 -0500390 }
391
Vince Lehman942eb7b2014-10-02 10:09:27 -0500392 uint32_t
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700393 getMaxFacesPerPrefix() const
akmhoque53353462014-04-22 08:43:45 -0500394 {
akmhoque157b0a42014-05-13 00:26:37 -0500395 return m_maxFacesPerPrefix;
akmhoque53353462014-04-22 08:43:45 -0500396 }
397
398 void
dulalsaurab82a34c22019-02-04 17:31:21 +0000399 setStateFileDir(const std::string& ssfd)
akmhoque53353462014-04-22 08:43:45 -0500400 {
dulalsaurab82a34c22019-02-04 17:31:21 +0000401 m_stateFileDir = ssfd;
akmhoque53353462014-04-22 08:43:45 -0500402 }
403
akmhoque157b0a42014-05-13 00:26:37 -0500404 const std::string&
dulalsaurab82a34c22019-02-04 17:31:21 +0000405 getStateFileDir() const
akmhoque53353462014-04-22 08:43:45 -0500406 {
dulalsaurab82a34c22019-02-04 17:31:21 +0000407 return m_stateFileDir;
408 }
409
dulalsaurabd0816a32019-07-26 13:11:24 +0000410 void
411 setConfFileNameDynamic(const std::string& confFileDynamic)
dulalsaurab82a34c22019-02-04 17:31:21 +0000412 {
413 m_confFileNameDynamic = confFileDynamic;
414 }
415
416 const std::string&
417 getConfFileNameDynamic() const
418 {
419 return m_confFileNameDynamic;
akmhoque53353462014-04-22 08:43:45 -0500420 }
421
akmhoque674b0b12014-05-20 14:33:28 -0500422 void
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600423 setSyncInterestLifetime(uint32_t syncInterestLifetime)
424 {
425 m_syncInterestLifetime = ndn::time::milliseconds(syncInterestLifetime);
426 }
427
428 const ndn::time::milliseconds&
429 getSyncInterestLifetime() const
430 {
431 return m_syncInterestLifetime;
432 }
433
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600434 AdjacencyList&
435 getAdjacencyList()
436 {
437 return m_adjl;
438 }
439
440 NamePrefixList&
441 getNamePrefixList()
442 {
443 return m_npl;
444 }
445
446 ndn::security::ValidatorConfig&
447 getValidator()
448 {
449 return m_validator;
450 }
451
452 ndn::security::ValidatorConfig&
453 getPrefixUpdateValidator()
454 {
455 return m_prefixUpdateValidator;
456 }
457
458 security::CertificateStore&
459 getCertStore()
460 {
461 return m_certStore;
462 }
463
464 /*! \brief Dump the current state of all attributes to the log.
465 */
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600466 void
akmhoque674b0b12014-05-20 14:33:28 -0500467 writeLog();
akmhoque53353462014-04-22 08:43:45 -0500468
Ashlesh Gawande328fc112019-12-12 17:06:44 -0600469PUBLIC_WITH_TESTS_ELSE_PRIVATE:
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600470 std::string m_confFileName;
Ashlesh Gawande328fc112019-12-12 17:06:44 -0600471 std::string m_confFileNameDynamic;
472private:
akmhoque31d1d4b2014-05-05 22:08:14 -0500473 ndn::Name m_routerName;
474 ndn::Name m_siteName;
475 ndn::Name m_network;
akmhoque53353462014-04-22 08:43:45 -0500476
akmhoque31d1d4b2014-05-05 22:08:14 -0500477 ndn::Name m_routerPrefix;
Ashlesh Gawande6b388fc2019-09-30 10:14:41 -0500478 ndn::Name m_syncUserPrefix;
akmhoque53353462014-04-22 08:43:45 -0500479
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600480 ndn::Name m_syncPrefix;
akmhoque157b0a42014-05-13 00:26:37 -0500481 ndn::Name m_lsaPrefix;
482
alvy5a454952014-12-15 12:49:54 -0600483 uint32_t m_lsaRefreshTime;
Vince Lehman7b616582014-10-17 16:25:39 -0500484
485 uint32_t m_adjLsaBuildInterval;
Vince Lehman7b616582014-10-17 16:25:39 -0500486 uint32_t m_routingCalcInterval;
487
Nick Gordond5c1a372016-10-31 13:56:23 -0500488 uint32_t m_faceDatasetFetchTries;
489 ndn::time::seconds m_faceDatasetFetchInterval;
490
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700491 ndn::time::seconds m_lsaInterestLifetime;
alvy5a454952014-12-15 12:49:54 -0600492 uint32_t m_routerDeadInterval;
akmhoque53353462014-04-22 08:43:45 -0500493
akmhoquefdbddb12014-05-02 18:35:19 -0500494 uint32_t m_interestRetryNumber;
alvy5a454952014-12-15 12:49:54 -0600495 uint32_t m_interestResendTime;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700496
alvy5a454952014-12-15 12:49:54 -0600497 uint32_t m_infoInterestInterval;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700498
akmhoque157b0a42014-05-13 00:26:37 -0500499 int32_t m_hyperbolicState;
akmhoque53353462014-04-22 08:43:45 -0500500 double m_corR;
Muktadir R Chowdhuryb00dc2a2016-11-05 10:48:58 -0600501 std::vector<double> m_corTheta;
akmhoque53353462014-04-22 08:43:45 -0500502
Vince Lehman942eb7b2014-10-02 10:09:27 -0500503 uint32_t m_maxFacesPerPrefix;
Alexander Afanasyev411ee4b2014-08-16 23:17:03 -0700504
dulalsaurab82a34c22019-02-04 17:31:21 +0000505 std::string m_stateFileDir;
506
Ashlesh Gawandef7da9c52018-02-06 17:36:46 -0600507 ndn::time::milliseconds m_syncInterestLifetime;
Ashlesh Gawande982a58f2018-02-14 17:39:12 -0600508
Ashlesh Gawande32ec3fd2018-07-18 13:42:32 -0500509 int32_t m_syncProtocol;
510
Ashlesh Gawande982a58f2018-02-14 17:39:12 -0600511PUBLIC_WITH_TESTS_ELSE_PRIVATE:
512 static const uint64_t SYNC_VERSION;
Ashlesh Gawande85998a12017-12-07 22:22:13 -0600513
514 AdjacencyList m_adjl;
515 NamePrefixList m_npl;
516 ndn::security::ValidatorConfig m_validator;
517 ndn::security::ValidatorConfig m_prefixUpdateValidator;
518 security::CertificateStore m_certStore;
akmhoque53353462014-04-22 08:43:45 -0500519};
520
akmhoque53353462014-04-22 08:43:45 -0500521} // namespace nlsr
522
dmcoomese689dd62017-03-29 11:05:12 -0500523#endif // NLSR_CONF_PARAMETER_HPP