void Fib::onSetStrategySuccess(const ndn::nfd::ControlParameters& commandSuccessResult, const std::string& message) { NLSR_LOG_DEBUG(message << ": " << commandSuccessResult.getStrategy() << " " << "for name: " << commandSuccessResult.getName()); }
void Fib::onUnregistrationSuccess(const ndn::nfd::ControlParameters& commandSuccessResult, const std::string& message) { NLSR_LOG_DEBUG("Unregister successful Prefix: " << commandSuccessResult.getName() << " Face Id: " << commandSuccessResult.getFaceId()); }
void Fib::onSetStrategyFailure(const ndn::nfd::ControlResponse& response, const ndn::nfd::ControlParameters& parameters, uint32_t count, const std::string& message) { NLSR_LOG_DEBUG(message << ": " << parameters.getStrategy() << " " << "for name: " << parameters.getName()); if (count < 3) { setStrategy(parameters.getName(), parameters.getStrategy().toUri(),count+1); } }
// After we create a new Face, we need to set it up for use. This // function sets the controlling strategy, registers prefixes in // sync, broadcast, and LSA. void HelloProtocol::onRegistrationSuccess(const ndn::nfd::ControlParameters& commandSuccessResult, const ndn::Name& neighbor,const ndn::time::milliseconds& timeout) { Adjacent *adjacent = m_nlsr.getAdjacencyList().findAdjacent(neighbor); if (adjacent != 0) { adjacent->setFaceId(commandSuccessResult.getFaceId()); ndn::Name broadcastKeyPrefix = DEFAULT_BROADCAST_PREFIX; broadcastKeyPrefix.append("KEYS"); std::string faceUri = adjacent->getConnectingFaceUri(); double linkCost = adjacent->getLinkCost(); m_nlsr.getFib().registerPrefix(m_nlsr.getConfParameter().getChronosyncPrefix(), faceUri, linkCost, timeout, ndn::nfd::ROUTE_FLAG_CAPTURE, 0); m_nlsr.getFib().registerPrefix(m_nlsr.getConfParameter().getLsaPrefix(), faceUri, linkCost, timeout, ndn::nfd::ROUTE_FLAG_CAPTURE, 0); m_nlsr.getFib().registerPrefix(broadcastKeyPrefix, faceUri, linkCost, timeout, ndn::nfd::ROUTE_FLAG_CAPTURE, 0); // Sends a Hello Interest to determine status before the next scheduled. /* interest name: /<neighbor>/NLSR/INFO/<router> */ ndn::Name interestName(neighbor); interestName.append(NLSR_COMPONENT); interestName.append(INFO_COMPONENT); interestName.append(m_nlsr.getConfParameter().getRouterPrefix().wireEncode()); expressInterest(interestName, m_nlsr.getConfParameter().getInterestResendTime()); } }
void Fib::onRegistrationSuccess(const ndn::nfd::ControlParameters& commandSuccessResult, const std::string& message, const ndn::FaceUri& faceUri) { NLSR_LOG_DEBUG(message << ": " << commandSuccessResult.getName() << " Face Uri: " << faceUri << " faceId: " << commandSuccessResult.getFaceId()); AdjacencyList::iterator adjacent = m_adjacencyList.findAdjacent(faceUri); if (adjacent != m_adjacencyList.end()) { adjacent->setFaceId(commandSuccessResult.getFaceId()); } // Update the fast-access FaceMap with the new Face ID, too m_faceMap.update(faceUri.toString(), commandSuccessResult.getFaceId()); m_faceMap.writeLog(); }
void PrefixUpdateProcessor::withdraw(const std::shared_ptr<const ndn::Interest>& request, const ndn::nfd::ControlParameters& parameters) { WithdrawPrefixCommand command; if (!validateParameters(command, parameters)) { sendResponse(request, 400, "Malformed command"); return; } _LOG_INFO("Withdrawing name: " << parameters.getName()); if (m_namePrefixList.remove(parameters.getName())) { // Only build a Name LSA if a name was actually removed m_lsdb.buildAndInstallOwnNameLsa(); m_sync.publishRoutingUpdate(); } }
void PrefixUpdateProcessor::advertise(const std::shared_ptr<const ndn::Interest>& request, const ndn::nfd::ControlParameters& parameters) { AdvertisePrefixCommand command; if (!validateParameters(command, parameters)) { sendResponse(request, 400, "Malformed command"); return; } _LOG_INFO("Advertising name: " << parameters.getName()); if (m_namePrefixList.insert(parameters.getName())) { // Only build a Name LSA if the added name is new m_lsdb.buildAndInstallOwnNameLsa(); m_sync.publishRoutingUpdate(); } }
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"); } }
bool PrefixUpdateProcessor::extractParameters(const ndn::Name::Component& parameterComponent, ndn::nfd::ControlParameters& extractedParameters) { try { ndn::Block rawParameters = parameterComponent.blockFromValue(); extractedParameters.wireDecode(rawParameters); } catch (const ndn::tlv::Error&) { return false; } return true; }
void HelloProtocol::onRegistrationSuccess(const ndn::nfd::ControlParameters& commandSuccessResult, const ndn::Name& neighbor) { Adjacent *adjacent = m_nlsr.getAdjacencyList().findAdjacent(neighbor); if (adjacent != 0) { adjacent->setFaceId(commandSuccessResult.getFaceId()); /* interest name: /<neighbor>/NLSR/INFO/<router> */ ndn::Name interestName(neighbor); interestName.append(NLSR_COMPONENT); interestName.append(INFO_COMPONENT); interestName.append(m_nlsr.getConfParameter().getRouterPrefix().wireEncode()); expressInterest(interestName, m_nlsr.getConfParameter().getInterestResendTime()); } }
void RibManager::onNrdCommandPrefixAddNextHopSuccess(const Name& prefix, const ndn::nfd::ControlParameters& result) { NFD_LOG_DEBUG("Successfully registered " + prefix.toUri() + " with NFD"); // Routes must be inserted into the RIB so route flags can be applied Route route; route.faceId = result.getFaceId(); route.origin = ndn::nfd::ROUTE_ORIGIN_APP; route.expires = time::steady_clock::TimePoint::max(); route.flags = ndn::nfd::ROUTE_FLAG_CHILD_INHERIT; m_managedRib.insert(prefix, route); m_registeredFaces.insert(route.faceId); }