<div dir="ltr">Hi Alex,<div><br></div><div>I have updated this code and compiled it, however, I couldn't see effect of link down.</div><div><br></div><div><a href="http://ndnsim.net/2.0/helpers.html#link-control-helper" target="_blank" style="font-size:13px">http://ndnsim.net/2.0/helpers.html#link-control-helper</a><br></div><div><br></div><div><div>void</div><div>LinkControlHelper::setErrorRate(Ptr<Node> node1, Ptr<Node> node2, double errorRate)</div><div>{</div><div>  std::cout<<"\n setErrorRate called: -> "<<std::endl;</div><div><br></div><div>  NS_LOG_FUNCTION(node1 << node2 << errorRate);</div><div>  NS_ASSERT(node1 != nullptr && node2 != nullptr);</div><div>  NS_ASSERT(errorRate <= 1.0);</div><div><br></div><div>  Ptr<ndn::L3Protocol> ndn1 = node1->GetObject<ndn::L3Protocol>();</div><div>  Ptr<ndn::L3Protocol> ndn2 = node2->GetObject<ndn::L3Protocol>();</div><div><br></div><div>  NS_ASSERT(ndn1 != nullptr && ndn2 != nullptr);</div><div><br></div><div>  // iterate over all faces to find the right one</div><div>  for (const auto& face : ndn1->getForwarder()->getFaceTable()) {</div><div>    shared_ptr<ndn::NetDeviceFace> ndFace = std::dynamic_pointer_cast<NetDeviceFace>(face);</div><div>    if (ndFace == nullptr)</div><div>      continue;</div><div><br></div><div>    Ptr<PointToPointNetDevice> nd1 = ndFace->GetNetDevice()->GetObject<PointToPointNetDevice>();</div><div>    if (nd1 == nullptr)</div><div>      continue;</div><div><br></div><div>    Ptr<Channel> channel = nd1->GetChannel();</div><div>    if (channel == nullptr)</div><div>      continue;</div><div><br></div><div>    Ptr<PointToPointChannel> ppChannel = DynamicCast<PointToPointChannel>(channel);</div><div><br></div><div>    Ptr<NetDevice> nd2 = ppChannel->GetDevice(0);</div><div>    if (nd2->GetNode() == node1)</div><div>      nd2 = ppChannel->GetDevice(1);</div><div><br></div><div>    if (nd2->GetNode() == node2) {</div><div>      ObjectFactory errorFactory("ns3::RateErrorModel");</div><div>      errorFactory.Set("ErrorUnit", StringValue("ERROR_UNIT_PACKET"));</div><div>      errorFactory.Set("ErrorRate", DoubleValue(errorRate));</div><div>      if (errorRate <= 0) {</div><div>        errorFactory.Set("IsEnabled", BooleanValue(false));</div><div>      }</div><div><br></div><div>      nd1->SetAttribute("ReceiveErrorModel", PointerValue(errorFactory.Create<ErrorModel>()));</div><div>      nd2->SetAttribute("ReceiveErrorModel", PointerValue(errorFactory.Create<ErrorModel>()));</div><div>      return;</div><div>    }</div><div>  }</div><div>  NS_FATAL_ERROR("There is no link to fail between the requested nodes");</div><div>}</div></div><div><br></div><div><br></div><div>Looks like  "ErrorModel" isn't taking place. I am still debugging let me know if I am doing something wrong.</div><div><br></div><div>Regards,</div><div>Hitesh</div></div>