src/flow-monitor/model/ipv4-flow-probe.cc
changeset 10670 d04c750525d7
parent 10652 dc18deba4502
child 10823 311e95076ad1
--- a/src/flow-monitor/model/ipv4-flow-probe.cc	Mon Mar 17 19:43:11 2014 +0100
+++ b/src/flow-monitor/model/ipv4-flow-probe.cc	Mon Mar 17 19:44:36 2014 +0100
@@ -196,26 +196,26 @@
 {
   NS_LOG_FUNCTION (this << node->GetId ());
 
-  Ptr<Ipv4L3Protocol> ipv4 = node->GetObject<Ipv4L3Protocol> ();
+  m_ipv4 = node->GetObject<Ipv4L3Protocol> ();
 
-  if (!ipv4->TraceConnectWithoutContext ("SendOutgoing",
-                                         MakeCallback (&Ipv4FlowProbe::SendOutgoingLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("SendOutgoing",
+                                           MakeCallback (&Ipv4FlowProbe::SendOutgoingLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
-  if (!ipv4->TraceConnectWithoutContext ("UnicastForward",
-                                         MakeCallback (&Ipv4FlowProbe::ForwardLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("UnicastForward",
+                                           MakeCallback (&Ipv4FlowProbe::ForwardLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
-  if (!ipv4->TraceConnectWithoutContext ("LocalDeliver",
-                                         MakeCallback (&Ipv4FlowProbe::ForwardUpLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("LocalDeliver",
+                                           MakeCallback (&Ipv4FlowProbe::ForwardUpLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
 
-  if (!ipv4->TraceConnectWithoutContext ("Drop",
-                                         MakeCallback (&Ipv4FlowProbe::DropLogger, Ptr<Ipv4FlowProbe> (this))))
+  if (!m_ipv4->TraceConnectWithoutContext ("Drop",
+                                           MakeCallback (&Ipv4FlowProbe::DropLogger, Ptr<Ipv4FlowProbe> (this))))
     {
       NS_FATAL_ERROR ("trace fail");
     }
@@ -233,6 +233,8 @@
 void
 Ipv4FlowProbe::DoDispose ()
 {
+  m_ipv4 = 0;
+  m_classifier = 0;
   FlowProbe::DoDispose ();
 }
 
@@ -242,6 +244,12 @@
   FlowId flowId;
   FlowPacketId packetId;
 
+  if (!m_ipv4->IsUnicast(ipHeader.GetDestination ()))
+    {
+      // we are not prepared to handle broadcast yet
+      return;
+    }
+
   if (m_classifier->Classify (ipHeader, ipPayload, &flowId, &packetId))
     {
       uint32_t size = (ipPayload->GetSize () + ipHeader.GetSerializedSize ());