void Base::onHubConnectSuccess(const nfd::ControlParameters& resp) { std::cerr << "Successfully created face: " << resp << std::endl; static const Name TESTBED_PREFIX = "/ndn"; registerPrefix(TESTBED_PREFIX, resp.getFaceId()); static const Name LOCALHOP_NFD_PREFIX = "/localhop/nfd"; registerPrefix(LOCALHOP_NFD_PREFIX, resp.getFaceId()); }
void Fib::refreshEntry(const ndn::Name& name, afterRefreshCallback refreshCb) { std::map<ndn::Name, FibEntry>::iterator it = m_table.find(name); if (it == m_table.end()) { return; } FibEntry& entry = it->second; NLSR_LOG_DEBUG("Refreshing " << entry.getName() << " Seq Num: " << entry.getSeqNo()); // Increment sequence number entry.setSeqNo(entry.getSeqNo() + 1); for (const NextHop& hop : entry) { registerPrefix(entry.getName(), ndn::FaceUri(hop.getConnectingFaceUri()), hop.getRouteCostAsAdjustedInteger(), ndn::time::seconds(m_refreshTime + GRACE_PERIOD), ndn::nfd::ROUTE_FLAG_CAPTURE, 0); } refreshCb(entry); }
const RegisteredPrefixId* Face::registerPrefix(const Name& prefix, const RegisterPrefixSuccessCallback& onSuccess, const RegisterPrefixFailureCallback& onFailure, const Name& identity, uint64_t flags) { security::SigningInfo signingInfo = signingByIdentity(identity); return registerPrefix(prefix, onSuccess, onFailure, signingInfo, flags); }
/** * This is the same as registerPrefix above except get the commandKeyChain and * commandCertificateName directly from face. */ void registerPrefix (uint64_t registeredPrefixId, const ptr_lib::shared_ptr<const Name>& prefixCopy, const OnInterestCallback& onInterest, const OnRegisterFailed& onRegisterFailed, const OnRegisterSuccess& onRegisterSuccess, const ForwardingFlags& flags, WireFormat& wireFormat, Face* face) { registerPrefix (registeredPrefixId, prefixCopy, onInterest, onRegisterFailed, onRegisterSuccess, flags, wireFormat, *face->getCommandKeyChain(), face->getCommandCertificateName(), face); }
uint64_t Face::registerPrefix (const Name& prefix, const OnInterest& onInterest, const OnRegisterFailed& onRegisterFailed, const ForwardingFlags& flags, WireFormat& wireFormat) { // Wrap the deprecated OnInterest in an OnInterestCallback. // TODO: After we remove the registerPrefix with the deprecated OnInterest, // we can remove the explicit cast to OnInterestCallback (needed for boost). return registerPrefix (prefix, (const OnInterestCallback&)bind(&Face::onInterestWrapper, _1, _2, _3, _4, _5, onInterest), onRegisterFailed, flags, wireFormat); }
const RegisteredPrefixId* Face::registerPrefix(const Name& prefix, const RegisterPrefixSuccessCallback& onSuccess, const RegisterPrefixFailureCallback& onFailure, const IdentityCertificate& certificate, uint64_t flags) { security::SigningInfo signingInfo; if (!certificate.getName().empty()) { signingInfo = signingByCertificate(certificate.getName()); } return registerPrefix(prefix, onSuccess, onFailure, signingInfo, flags); }
void Fib::addNextHopsToFibEntryAndNfd(FibEntry& entry, NexthopList& hopsToAdd) { const ndn::Name& name = entry.getName(); for (NexthopList::iterator it = hopsToAdd.begin(); it != hopsToAdd.end(); ++it) { // Add nexthop to FIB entry entry.getNexthopList().addNextHop(*it); if (isPrefixUpdatable(name)) { // Add nexthop to NDN-FIB registerPrefix(name, ndn::FaceUri(it->getConnectingFaceUri()), it->getRouteCostAsAdjustedInteger(), ndn::time::seconds(m_refreshTime + GRACE_PERIOD), ndn::nfd::ROUTE_FLAG_CAPTURE, 0); } } }
void Fib::onRegistrationFailure(const ndn::nfd::ControlResponse& response, const std::string& message, const ndn::nfd::ControlParameters& parameters, const ndn::FaceUri& faceUri, uint8_t times) { NLSR_LOG_DEBUG(message << ": " << response.getText() << " (code: " << response.getCode() << ")"); NLSR_LOG_DEBUG("Prefix: " << parameters.getName() << " failed for: " << times); if (times < 3) { NLSR_LOG_DEBUG("Trying to register again..."); registerPrefix(parameters.getName(), faceUri, parameters.getCost(), parameters.getExpirationPeriod(), parameters.getFlags(), times+1); } else { NLSR_LOG_DEBUG("Registration trial given up"); } }