--- a/src/devices/mesh/dot11s/hwmp-protocol.cc Wed Apr 22 21:40:06 2009 +0400
+++ b/src/devices/mesh/dot11s/hwmp-protocol.cc Mon Apr 27 23:31:54 2009 +0400
@@ -361,7 +361,6 @@
}
if ((*i)->GetDestinationAddress () == GetAddress ())
{
- preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
SendPrep (
GetAddress (),
preq.GetOriginatorAddress (),
@@ -372,29 +371,31 @@
preq.GetLifetime (),
interface
);
+ preq.DelDestinationAddressElement ((*i)->GetDestinationAddress());
continue;
}
//check if can answer:
HwmpRtable::LookupResult result = m_rtable->LookupReactive ((*i)->GetDestinationAddress());
+ NS_LOG_UNCOND("Lookup:"<<(*i)->GetDestinationAddress()<<"I am "<<GetAddress ()<<", RA = "<<result.retransmitter);
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;
}
}