Merge with ns3dev
authorKirill Andreev <andreev@iitp.ru>
Wed, 29 Apr 2009 13:06:55 +0400
changeset 4982 99428bcb9b98
parent 4981 627b8e87e82f (current diff)
parent 4980 fd4011901681 (diff)
child 4983 d10bfc9054a3
Merge with ns3dev
--- a/src/devices/mesh/dot11s/hwmp-mac-plugin.cc	Wed Apr 29 13:06:06 2009 +0400
+++ b/src/devices/mesh/dot11s/hwmp-mac-plugin.cc	Wed Apr 29 13:06:55 2009 +0400
@@ -170,7 +170,7 @@
   preq.SetOriginatorAddress (m_protocol->GetAddress ());
   preq.SetOriginatorSeqNumber (originator_seqno);
   preq.SetLifetime (m_protocol->GetActivePathLifetime ());
-  preq.AddDestinationAddressElement (false, false, dst, dst_seqno);
+  preq.AddDestinationAddressElement (m_protocol->GetDoFlag (), m_protocol->GetRfFlag (), dst, dst_seqno);
   m_preqQueue.push_back (preq);
   //set iterator position to my preq:
   SendOnePreq ();
--- a/src/devices/mesh/dot11s/hwmp-protocol.cc	Wed Apr 29 13:06:06 2009 +0400
+++ b/src/devices/mesh/dot11s/hwmp-protocol.cc	Wed Apr 29 13:06:55 2009 +0400
@@ -361,7 +361,6 @@
         }
       if ((*i)->GetDestinationAddress () == GetAddress ())
         {
-          preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
           SendPrep (
               GetAddress (),
               preq.GetOriginatorAddress (),
@@ -372,29 +371,30 @@
               preq.GetLifetime (),
               interface
           );
+          preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
           continue;
         }
       //check if can answer:
       HwmpRtable::LookupResult result = m_rtable->LookupReactive ((*i)->GetDestinationAddress());
       if ((! ((*i)->IsDo())) && (result.retransmitter != Mac48Address::GetBroadcast()))
         {
-          //have a valid information and acn answer
+          //have a valid information and can answer
+          SendPrep (
+              (*i)->GetDestinationAddress (),
+              preq.GetOriginatorAddress (),
+              from,
+              result.metric,
+              preq.GetOriginatorSeqNumber (),
+              result.seqnum +1,
+              preq.GetLifetime (),
+              interface
+              );
+
           if ((*i)->IsRf ())
-            (*i)->SetFlags (true, false, (*i)->IsUsn ()); //DO = 1, RF = 0 (as it was)
+            (*i)->SetFlags (true, false, (*i)->IsUsn ()); //DO = 1, RF = 0
           else
             {
-              //send a PREP and delete destination
               preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
-              SendPrep (
-                  (*i)->GetDestinationAddress (),
-                  preq.GetOriginatorAddress (),
-                  from,
-                  result.metric,
-                  preq.GetOriginatorSeqNumber (),
-                  result.seqnum +1,
-                  preq.GetLifetime (),
-                  interface
-              );
               continue;
             }
         }