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-2018, 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 "
core/scope-prefix.hpp
"
28
#include "
rib/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::Name::getPrefix
PartialName getPrefix(ssize_t nComponents) const
Extract a prefix of the name.
Definition:
name.hpp:203
ndn::security::v2::KeyChain
The interface of signing key management.
Definition:
key-chain.hpp:46
nfd::scope_prefix::LOCALHOST
const Name LOCALHOST("ndn:/localhost")
ndn:/localhost
Definition:
scope-prefix.hpp:45
nfd::rib::RibRouteRef
references a route
Definition:
rib.hpp:43
ndn::security::pib::Pib::getIdentities
const IdentityContainer & getIdentities() const
Get all the identities.
Definition:
pib.cpp:108
rib-manager.hpp
ndn::security::v2::KeyChain::getPib
const Pib & getPib() const
Definition:
key-chain.hpp:100
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:40
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:38
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:50
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:42
nfd::rib::ReadvertiseAction
a decision made by readvertise policy
Definition:
readvertise-policy.hpp:37
host-to-gateway-readvertise-policy.hpp
signing-helpers.hpp
nfd::rib::RibManager::LOCALHOP_TOP_PREFIX
static const Name LOCALHOP_TOP_PREFIX
Definition:
rib-manager.hpp:243
nonstd::optional_lite::nullopt
const nullopt_t nullopt((nullopt_t::init()))
ndnSIM
NFD
rib
readvertise
host-to-gateway-readvertise-policy.cpp
Generated on Sun Feb 24 2019 22:16:07 for ndnSIM by
1.8.15