prefix-update-processor.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014-2022, The University of Memphis,
4  * Regents of the University of California,
5  * Arizona Board of Regents.
6  *
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/>.
20  */
21 
22 #ifndef NLSR_UPDATE_PREFIX_UPDATE_PROCESSOR_HPP
23 #define NLSR_UPDATE_PREFIX_UPDATE_PROCESSOR_HPP
24 
25 #include "manager-base.hpp"
27 
28 #include <ndn-cxx/security/key-chain.hpp>
29 
30 #include <boost/property_tree/ptree.hpp>
31 
32 namespace nlsr {
33 namespace update {
34 
35 using ConfigSection = boost::property_tree::ptree;
36 
38 {
39 public:
40  PrefixUpdateProcessor(ndn::mgmt::Dispatcher& dispatcher,
41  ndn::security::ValidatorConfig& validator,
42  NamePrefixList& namePrefixList,
43  Lsdb& lsdb, const std::string& configFileName);
44 
56  void
57  loadValidator(ConfigSection section, const std::string& filename);
58 
62  bool
63  addOrDeletePrefix(const ndn::Name& prefix, bool addPrefix);
64 
65  std::optional<bool>
66  afterAdvertise(const ndn::Name& prefix) override;
67 
68  std::optional<bool>
69  afterWithdraw(const ndn::Name& prefix) override;
70 
72  bool
73  checkForPrefixInFile(const std::string prefix);
74 
75  ndn::security::ValidatorConfig&
77  {
78  return m_validator;
79  }
80 
81 private:
88  ndn::mgmt::Authorization
89  makeAuthorization();
90 
91 private:
92  ndn::security::ValidatorConfig& m_validator;
93  const std::string& m_confFileNameDynamic;
94 };
95 
96 } // namespace update
97 } // namespace nlsr
98 
99 #endif // NLSR_UPDATE_PREFIX_UPDATE_PROCESSOR_HPP
void loadValidator(ConfigSection section, const std::string &filename)
Load the validator's configuration from a section of a configuration file.
std::optional< bool > afterAdvertise(const ndn::Name &prefix) override
save an advertised prefix to the nlsr configuration file returns bool from the overridden function wh...
PrefixUpdateProcessor(ndn::mgmt::Dispatcher &dispatcher, ndn::security::ValidatorConfig &validator, NamePrefixList &namePrefixList, Lsdb &lsdb, const std::string &configFileName)
bool addOrDeletePrefix(const ndn::Name &prefix, bool addPrefix)
Add or delete an advertise or withdrawn prefix to the nlsr configuration file.
std::optional< bool > afterWithdraw(const ndn::Name &prefix) override
save an advertised prefix to the nlsr configuration file returns bool from the overridden function wh...
ndn::security::ValidatorConfig & getValidator()
bool checkForPrefixInFile(const std::string prefix)
Check if a prefix exists in the nlsr configuration file.
boost::property_tree::ptree ConfigSection
Copyright (c) 2014-2020, The University of Memphis, Regents of the University of California.
Copyright (c) 2014-2017, The University of Memphis, Regents of the University of California,...