internet: Add TracedCallback to trace invalid address on DAD failure
This commit is contained in:
@@ -142,7 +142,11 @@ Icmpv6L4Protocol::GetTypeId()
|
||||
"Multicast RS maximum retransmission duration (0 means unbound).",
|
||||
TimeValue(Seconds(0)),
|
||||
MakeTimeAccessor(&Icmpv6L4Protocol::m_rsMaxRetransmissionDuration),
|
||||
MakeTimeChecker());
|
||||
MakeTimeChecker())
|
||||
.AddTraceSource("FailedDad",
|
||||
"Duplicate Address detected during DAD, the address is now INVALID",
|
||||
MakeTraceSourceAccessor(&Icmpv6L4Protocol::m_failedDadAddressTrace),
|
||||
"ns3::Ipv6Address::TracedCallback");
|
||||
return tid;
|
||||
}
|
||||
|
||||
@@ -873,6 +877,7 @@ Icmpv6L4Protocol::HandleNA(Ptr<Packet> packet,
|
||||
if (ifaddr.GetState() == Ipv6InterfaceAddress::TENTATIVE ||
|
||||
ifaddr.GetState() == Ipv6InterfaceAddress::TENTATIVE_OPTIMISTIC)
|
||||
{
|
||||
m_failedDadAddressTrace(ifaddr.GetAddress());
|
||||
interface->SetState(ifaddr.GetAddress(), Ipv6InterfaceAddress::INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include "ns3/ipv6-address.h"
|
||||
#include "ns3/random-variable-stream.h"
|
||||
#include "ns3/traced-callback.h"
|
||||
|
||||
#include <list>
|
||||
|
||||
@@ -697,6 +698,12 @@ class Icmpv6L4Protocol : public IpL4Protocol
|
||||
EventId m_handleRsTimeoutEvent;
|
||||
|
||||
IpL4Protocol::DownTargetCallback6 m_downTarget; //!< callback to Ipv6::Send
|
||||
|
||||
/**
|
||||
* The trace fired when a DAD fails, changing the address state to INVALID.
|
||||
* Includes the address whose state has been changed.
|
||||
*/
|
||||
ns3::TracedCallback<const Ipv6Address&> m_failedDadAddressTrace;
|
||||
};
|
||||
|
||||
} /* namespace ns3 */
|
||||
|
||||
Reference in New Issue
Block a user