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-2025, 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 "command-processor.hpp"
26 
27 #include <ndn-cxx/security/key-chain.hpp>
28 
29 #include <boost/property_tree/ptree.hpp>
30 
31 namespace nlsr::update {
32 
33 using ConfigSection = boost::property_tree::ptree;
34 
36 {
37 public:
38  PrefixUpdateProcessor(ndn::mgmt::Dispatcher& dispatcher,
39  ndn::security::ValidatorConfig& validator,
40  NamePrefixList& namePrefixList,
41  Lsdb& lsdb, const std::string& configFileName);
42 
54  void
55  loadValidator(ConfigSection section, const std::string& filename);
56 
60  bool
61  addOrDeletePrefix(const ndn::Name& prefix, bool addPrefix);
62 
63  std::optional<bool>
64  afterAdvertise(const ndn::Name& prefix) override;
65 
66  std::optional<bool>
67  afterWithdraw(const ndn::Name& prefix) override;
68 
70  bool
71  checkForPrefixInFile(const std::string prefix);
72 
73  ndn::security::ValidatorConfig&
75  {
76  return m_validator;
77  }
78 
79 private:
86  ndn::mgmt::Authorization
87  makeAuthorization();
88 
89 private:
90  ndn::security::ValidatorConfig& m_validator;
91  const std::string& m_confFileNameDynamic;
92 };
93 
94 } // namespace nlsr::update
95 
96 #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.
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.
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