NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
host-to-gateway-readvertise-policy.cpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2014-2019, Regents of the University of California,
4
* Arizona Board of Regents,
5
* Colorado State University,
6
* University Pierre & Marie Curie, Sorbonne University,
7
* Washington University in St. Louis,
8
* Beijing Institute of Technology,
9
* The University of Memphis.
10
*
11
* This file is part of NFD (Named Data Networking Forwarding Daemon).
12
* See AUTHORS.md for complete list of NFD authors and contributors.
13
*
14
* NFD is free software: you can redistribute it and/or modify it under the terms
15
* of the GNU General Public License as published by the Free Software Foundation,
16
* either version 3 of the License, or (at your option) any later version.
17
*
18
* NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20
* PURPOSE. See the GNU General Public License for more details.
21
*
22
* You should have received a copy of the GNU General Public License along with
23
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24
*/
25
26
#include "
host-to-gateway-readvertise-policy.hpp
"
27
#include "
fw/scope-prefix.hpp
"
28
#include "
mgmt/rib-manager.hpp
"
29
30
#include <
ndn-cxx/security/pib/identity.hpp
>
31
#include <
ndn-cxx/security/signing-helpers.hpp
>
32
33
namespace
nfd
{
34
namespace
rib {
35
36
static
const
name::Component
IGNORE_COMPONENT
(
"nrd"
);
37
static
const
time::seconds
DEFAULT_REFRESH_INTERVAL
= 25_s;
38
39
HostToGatewayReadvertisePolicy::HostToGatewayReadvertisePolicy
(
const
ndn::KeyChain
& keyChain,
40
const
ConfigSection
& section)
41
: m_keyChain(keyChain)
42
{
43
auto
interval = section.get_optional<uint64_t>(
"refresh_interval"
);
44
m_refreshInterval = interval ?
time::seconds
(*interval) :
DEFAULT_REFRESH_INTERVAL
;
45
}
46
47
optional<ReadvertiseAction>
48
HostToGatewayReadvertisePolicy::handleNewRoute
(
const
RibRouteRef
& ribRoute)
const
49
{
50
auto
ribEntryName = ribRoute.
entry
->getName();
51
if
(
scope_prefix::LOCALHOST
.isPrefixOf(ribEntryName) ||
52
ribEntryName ==
RibManager::LOCALHOP_TOP_PREFIX
) {
53
return
nullopt
;
54
}
55
56
// find out the shortest identity whose name is a prefix of the RIB entry name
57
auto
prefixToAdvertise = ribEntryName;
58
ndn::security::pib::Identity
signingIdentity;
59
bool
isFound =
false
;
60
61
for
(
const
auto
& identity : m_keyChain.getPib().getIdentities()) {
62
auto
prefix = identity.
getName
();
63
64
// ignore the identity name's last component if it is "nrd"
65
if
(!prefix.empty() &&
IGNORE_COMPONENT
== prefix.at(-1)) {
66
prefix = prefix.
getPrefix
(-1);
67
}
68
69
if
(prefix.isPrefixOf(prefixToAdvertise)) {
70
isFound =
true
;
71
prefixToAdvertise = prefix;
72
signingIdentity = identity;
73
}
74
}
75
76
if
(isFound) {
77
return
ReadvertiseAction
{prefixToAdvertise,
ndn::security::signingByIdentity
(signingIdentity)};
78
}
79
else
{
80
return
nullopt
;
81
}
82
}
83
84
time::milliseconds
85
HostToGatewayReadvertisePolicy::getRefreshInterval
()
const
86
{
87
return
m_refreshInterval;
88
}
89
90
}
// namespace rib
91
}
// namespace nfd
ndn::time::seconds
boost::chrono::seconds seconds
Definition:
time.hpp:47
ndn::Name::getPrefix
PartialName getPrefix(ssize_t nComponents) const
Returns a prefix of the name.
Definition:
name.hpp:209
nfd::scope_prefix::LOCALHOST
const Name LOCALHOST("ndn:/localhost")
ndn:/localhost
Definition:
scope-prefix.hpp:45
ndn::security::v2::KeyChain
ndn security KeyChain
Definition:
key-chain.cpp:70
nfd::rib::RibRouteRef
references a route
Definition:
rib.hpp:43
rib-manager.hpp
scope-prefix.hpp
nfd::rib::DEFAULT_REFRESH_INTERVAL
static const time::seconds DEFAULT_REFRESH_INTERVAL
Definition:
host-to-gateway-readvertise-policy.cpp:37
nfd
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-common.hpp:39
nfd::rib::RibRouteRef::entry
shared_ptr< RibEntry > entry
Definition:
rib.hpp:45
nfd::rib::HostToGatewayReadvertisePolicy::handleNewRoute
optional< ReadvertiseAction > handleNewRoute(const RibRouteRef &ribRoute) const override
decide whether to readvertise a route, and what prefix to readvertise
Definition:
host-to-gateway-readvertise-policy.cpp:48
identity.hpp
nfd::ConfigSection
boost::property_tree::ptree ConfigSection
a config file section
Definition:
ndn-l3-protocol.hpp:39
nfd::rib::HostToGatewayReadvertisePolicy::HostToGatewayReadvertisePolicy
HostToGatewayReadvertisePolicy(const ndn::KeyChain &keyChain, const ConfigSection §ion)
Definition:
host-to-gateway-readvertise-policy.cpp:39
ndn::security::signingByIdentity
SigningInfo signingByIdentity(const Name &identityName)
Definition:
signing-helpers.cpp:28
ndn::name::Component
Represents a name component.
Definition:
name-component.hpp:107
nfd::rib::HostToGatewayReadvertisePolicy::getRefreshInterval
time::milliseconds getRefreshInterval() const override
Definition:
host-to-gateway-readvertise-policy.cpp:85
ndn::security::pib::Identity::getName
const Name & getName() const
Get the name of the identity.
Definition:
identity.cpp:37
nfd::rib::IGNORE_COMPONENT
static const name::Component IGNORE_COMPONENT("nrd")
ndn::security::pib::Identity
A frontend handle of an Identity.
Definition:
identity.hpp:47
nfd::RibManager::LOCALHOP_TOP_PREFIX
static const Name LOCALHOP_TOP_PREFIX
Definition:
rib-manager.hpp:243
nfd::rib::ReadvertiseAction
a decision made by readvertise policy
Definition:
readvertise-policy.hpp:38
host-to-gateway-readvertise-policy.hpp
signing-helpers.hpp
nonstd::optional_lite::nullopt
const nullopt_t nullopt((nullopt_t::init()))
ndn::time::milliseconds
boost::chrono::milliseconds milliseconds
Definition:
time.hpp:48
ndnSIM
NFD
daemon
rib
readvertise
host-to-gateway-readvertise-policy.cpp
Generated on Fri May 6 2022 12:34:13 for ndnSIM by
1.8.13