--- a/examples/mesh.cc Fri Jul 31 19:38:26 2009 +0400
+++ b/examples/mesh.cc Mon Aug 03 19:13:46 2009 +0400
@@ -179,6 +179,7 @@
Simulator::Schedule (Seconds(totalTime), & MeshTest::Report, this);
Simulator::Stop (Seconds (totalTime));
Simulator::Run ();
+ std::cerr << "finish success\n";
Simulator::Destroy ();
return 0;
}
--- a/src/devices/mesh/dot11s/hwmp-protocol.cc Fri Jul 31 19:38:26 2009 +0400
+++ b/src/devices/mesh/dot11s/hwmp-protocol.cc Mon Aug 03 19:13:46 2009 +0400
@@ -201,13 +201,12 @@
{
i->second.Cancel ();
}
+ m_proactivePreqTimer.Cancel();
m_preqTimeouts.clear ();
m_lastDataSeqno.clear ();
m_lastHwmpSeqno.clear ();
m_rqueue.clear ();
m_rtable = 0;
-
- //TODO: clear plugins
}
bool
--- a/src/devices/mesh/flame/flame-protocol.cc Fri Jul 31 19:38:26 2009 +0400
+++ b/src/devices/mesh/flame/flame-protocol.cc Mon Aug 03 19:13:46 2009 +0400
@@ -186,9 +186,14 @@
FlameHeader flameHdr;
packet->RemoveHeader (flameHdr);
FlameTag tag;
+
if (!packet->RemovePacketTag (tag))
{
- NS_FATAL_ERROR ("FLAME tag must exust here");
+ NS_FATAL_ERROR ("FLAME tag must exist here");
+ }
+ if (HandleDataFrame (flameHdr.GetSeqno (), source, flameHdr, tag.transmitter, sourceIface))
+ {
+ return false;
}
if (source == GetAddress ())
{
@@ -215,10 +220,7 @@
}
else
{
- if (HandleDataFrame (flameHdr.GetSeqno (), source, flameHdr, tag.transmitter, sourceIface))
- {
- return false;
- }
+
FlameRtable::LookupResult result = m_rtable->Lookup (destination);
if (tag.receiver != Mac48Address::GetBroadcast ())
{
@@ -265,12 +267,22 @@
{
NS_FATAL_ERROR ("FLAME tag must exist when packet is coming to protocol");
}
- //TODO: send path update
FlameHeader flameHdr;
packet->RemoveHeader (flameHdr);
+ if ((destination == GetAddress ()) && (m_lastBroadcast + m_broadcastInterval < Simulator::Now ()))
+ {
+ Ptr<Packet> packet = Create<Packet> ();
+ m_mp->Send(packet, Mac48Address::GetBroadcast (), 0);
+ m_lastBroadcast = Simulator::Now ();
+ }
NS_ASSERT (protocolType == FLAME_PROTOCOL);
protocolType = flameHdr.GetProtocol ();
- return (!HandleDataFrame (flameHdr.GetSeqno (), source, flameHdr, tag.transmitter, fromIface));
+ if ((HandleDataFrame (flameHdr.GetSeqno (), source, flameHdr, tag.transmitter, fromIface))
+ || packet->GetSize () == 0)
+ {
+ return false;
+ }
+ return true;
}
bool
FlameProtocol::Install (Ptr<MeshPointDevice> mp)
@@ -316,12 +328,7 @@
return true;
}
FlameRtable::LookupResult result = m_rtable->Lookup (source);
- if (result.retransmitter == Mac48Address::GetBroadcast ())
- {
- m_rtable->AddPath (source, receiver, fromInterface, flameHdr.GetCost (), flameHdr.GetSeqno ());
- return false;
- }
- if (result.seqnum >= seqno)
+ if ((result.retransmitter != Mac48Address::GetBroadcast ()) && (result.seqnum >= seqno))
{
return true;
}
--- a/src/devices/wifi/mac-low.cc Fri Jul 31 19:38:26 2009 +0400
+++ b/src/devices/wifi/mac-low.cc Mon Aug 03 19:13:46 2009 +0400
@@ -331,6 +331,7 @@
m_listener->Cancel ();
m_listener = 0;
}
+ NS_LOG_UNCOND("DONE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
void