# HG changeset patch # User Kirill Andreev # Date 1250883232 -14400 # Node ID 5b499f25655a3cc0fe4bf91f83b1eb4f44e27aa5 # Parent e4602e6384872f3e42d0e54100f29a8994c12ad3 Review fixes diff -r e4602e638487 -r 5b499f25655a examples/mesh.cc --- a/examples/mesh.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/examples/mesh.cc Fri Aug 21 23:33:52 2009 +0400 @@ -47,19 +47,18 @@ /// Run test int Run (); private: - int xSize; - int ySize; - double step; - double randomStart; - double totalTime; - double packetInterval; - uint16_t packetSize; - uint32_t nIfaces; - bool chan; - bool pcap; - uint64_t seed; - std::string stack; - std::string root; + int m_xSize; + int m_ySize; + double m_step; + double m_randomStart; + double m_totalTime; + double m_packetInterval; + uint16_t m_packetSize; + uint32_t m_nIfaces; + bool m_chan; + bool m_pcap; + std::string m_stack; + std::string m_root; /// List of network nodes NodeContainer nodes; /// List of all mesh point devices @@ -71,7 +70,7 @@ private: /// Create nodes and setup their mobility void CreateNodes (); - /// Install internet stack on nodes + /// Install internet m_stack on nodes void InstallInternetStack (); /// Install applications void InstallApplication (); @@ -79,78 +78,75 @@ void Report (); }; MeshTest::MeshTest () : - xSize (3), - ySize (3), - step (100.0), - randomStart (0.1), - totalTime (100.0), - packetInterval (0.1), - packetSize (1024), - nIfaces (1), - chan (true), - pcap (false), - seed (1), - stack ("ns3::Dot11sStack"), - root ("ff:ff:ff:ff:ff:ff") + m_xSize (3), + m_ySize (3), + m_step (100.0), + m_randomStart (0.1), + m_totalTime (100.0), + m_packetInterval (0.1), + m_packetSize (1024), + m_nIfaces (1), + m_chan (true), + m_pcap (false), + m_stack ("ns3::Dot11sStack"), + m_root ("ff:ff:ff:ff:ff:ff") { } void MeshTest::Configure (int argc, char *argv[]) { CommandLine cmd; - cmd.AddValue ("x-size", "Number of nodes in a row grid. [6]", xSize); - cmd.AddValue ("y-size", "Number of rows in a grid. [6]", ySize); - cmd.AddValue ("step", "Size of edge in our grid, meters. [100 m]", step); - cmd.AddValue ("start", "Maximum random start delay, seconds. [0.1 s]", randomStart); - cmd.AddValue ("time", "Simulation time, seconds [100 s]", totalTime); - cmd.AddValue ("packet-interval", "Interval between packets, seconds [0.001 s]", packetInterval); - cmd.AddValue ("packet-size", "Size of packets", packetSize); - cmd.AddValue ("interfaces", "Number of radio interfaces used by each mesh point. [1]", nIfaces); - cmd.AddValue ("channels", "Use different frequency channels for different interfaces. [0]", chan); - cmd.AddValue ("pcap", "Enable PCAP traces on interfaces. [0]", pcap); - cmd.AddValue ("seed", "Seed value", seed); - cmd.AddValue ("stack", "Type of protocol stack. ns3::Dot11sStack by default", stack); - cmd.AddValue ("root", "Mac address of root mesh point", root); + cmd.AddValue ("x-size", "Number of nodes in a row grid. [6]", m_xSize); + cmd.AddValue ("y-size", "Number of rows in a grid. [6]", m_ySize); + cmd.AddValue ("m_step", "Size of edge in our grid, meters. [100 m]", m_step); + cmd.AddValue ("start", "Maximum random start delay, seconds. [0.1 s]", m_randomStart); + cmd.AddValue ("time", "Simulation time, seconds [100 s]", m_totalTime); + cmd.AddValue ("packet-interval", "Interval between packets, seconds [0.001 s]", m_packetInterval); + cmd.AddValue ("packet-size", "Size of packets", m_packetSize); + cmd.AddValue ("interfaces", "Number of radio interfaces used by each mesh point. [1]", m_nIfaces); + cmd.AddValue ("m_channels", "Use different frequency m_channels for different interfaces. [0]", m_chan); + cmd.AddValue ("m_pcap", "Enable PCAP traces on interfaces. [0]", m_pcap); + cmd.AddValue ("m_stack", "Type of protocol m_stack. ns3::Dot11sStack by default", m_stack); + cmd.AddValue ("m_root", "Mac address of m_root mesh point", m_root); cmd.Parse (argc, argv); - NS_LOG_DEBUG ("Grid:" << xSize << "*" << ySize); - NS_LOG_DEBUG ("Simulation time: " << totalTime << " s"); - SeedManager::SetSeed(seed); + NS_LOG_DEBUG ("Grid:" << m_xSize << "*" << m_ySize); + NS_LOG_DEBUG ("Simulation time: " << m_totalTime << " s"); } void MeshTest::CreateNodes () { - nodes.Create (ySize*xSize); - // Setting channel + nodes.Create (m_ySize*m_xSize); + // Setting m_channel YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default (); YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default (); wifiPhy.SetChannel (wifiChannel.Create ()); // Install mesh point devices & protocols - mesh.SetStackInstaller (stack, "Root", Mac48AddressValue (Mac48Address (root.c_str ()))); - mesh.SetSpreadInterfaceChannels (chan); + mesh.SetStackInstaller (m_stack, "Root", Mac48AddressValue (Mac48Address (m_root.c_str ()))); + mesh.SetSpreadInterfaceChannels (m_chan); MeshInterfaceHelper interface = MeshInterfaceHelper::Default (); - interface.SetType ("RandomStart", TimeValue (Seconds(randomStart))); + interface.SetType ("RandomStart", TimeValue (Seconds(m_randomStart))); - meshDevices = mesh.Install (wifiPhy, interface, nodes, nIfaces); + meshDevices = mesh.Install (wifiPhy, interface, nodes, m_nIfaces); // Setup mobility MobilityHelper mobility; mobility.SetPositionAllocator ("ns3::GridPositionAllocator", "MinX", DoubleValue (0.0), "MinY", DoubleValue (0.0), - "DeltaX", DoubleValue (step), - "DeltaY", DoubleValue (step), - "GridWidth", UintegerValue (xSize), + "DeltaX", DoubleValue (m_step), + "DeltaY", DoubleValue (m_step), + "GridWidth", UintegerValue (m_xSize), "LayoutType", StringValue ("RowFirst")); mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (nodes); - if (pcap) + if (m_pcap) wifiPhy.EnablePcapAll (std::string ("mp-")); } void MeshTest::InstallInternetStack () { - InternetStackHelper stack; - stack.Install (nodes); + InternetStackHelper m_stack; + m_stack.Install (nodes); Ipv4AddressHelper address; address.SetBase ("10.1.1.0", "255.255.255.0"); interfaces = address.Assign (meshDevices); @@ -161,14 +157,14 @@ UdpEchoServerHelper echoServer (9); ApplicationContainer serverApps = echoServer.Install (nodes.Get (0)); serverApps.Start (Seconds (0.0)); - serverApps.Stop (Seconds (totalTime)); + serverApps.Stop (Seconds (m_totalTime)); UdpEchoClientHelper echoClient (interfaces.GetAddress (0), 9); - echoClient.SetAttribute ("MaxPackets", UintegerValue ((uint32_t)(totalTime*(1/packetInterval)))); - echoClient.SetAttribute ("Interval", TimeValue (Seconds (packetInterval))); - echoClient.SetAttribute ("PacketSize", UintegerValue (packetSize)); - ApplicationContainer clientApps = echoClient.Install (nodes.Get (xSize*ySize-1)); + echoClient.SetAttribute ("MaxPackets", UintegerValue ((uint32_t)(m_totalTime*(1/m_packetInterval)))); + echoClient.SetAttribute ("Interval", TimeValue (Seconds (m_packetInterval))); + echoClient.SetAttribute ("PacketSize", UintegerValue (m_packetSize)); + ApplicationContainer clientApps = echoClient.Install (nodes.Get (m_xSize*m_ySize-1)); clientApps.Start (Seconds (0.0)); - clientApps.Stop (Seconds (totalTime)); + clientApps.Stop (Seconds (m_totalTime)); } int MeshTest::Run () @@ -176,8 +172,8 @@ CreateNodes (); InstallInternetStack (); InstallApplication (); - Simulator::Schedule (Seconds(totalTime), & MeshTest::Report, this); - Simulator::Stop (Seconds (totalTime)); + Simulator::Schedule (Seconds(m_totalTime), & MeshTest::Report, this); + Simulator::Stop (Seconds (m_totalTime)); Simulator::Run (); Simulator::Destroy (); return 0; diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/airtime-metric.cc --- a/src/devices/mesh/dot11s/airtime-metric.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/airtime-metric.cc Fri Aug 21 23:33:52 2009 +0400 @@ -30,27 +30,27 @@ static TypeId tid = TypeId ("ns3::dot11s::AirtimeLinkMetricCalculator") .SetParent () .AddConstructor () - .AddAttribute ( "overheadNanosec", + .AddAttribute ( "OverheadNanosec", "Overhead expressed in nanoseconds:DIFS+ 2* SIFS + 2* PREAMBLE + 2* ACK", UintegerValue (108000), MakeUintegerAccessor (&AirtimeLinkMetricCalculator::m_overheadNanosec), MakeUintegerChecker (1) ) - .AddAttribute ( "testLengt", + .AddAttribute ( "TestLengt", "Rate should be estimated using test length.", UintegerValue (1024), MakeUintegerAccessor ( &AirtimeLinkMetricCalculator::m_testLength), MakeUintegerChecker (1) ) - .AddAttribute ( "dot11HeaderLengt", + .AddAttribute ( "Dot11HeaderLengt", "Length of the 802.11 header", UintegerValue (36), MakeUintegerAccessor ( &AirtimeLinkMetricCalculator::m_headerLength), MakeUintegerChecker (0) ) - .AddAttribute ( "dot11sHeaderLength", + .AddAttribute ( "Dot11sHeaderLength", "Length of the mesh header", UintegerValue (6), MakeUintegerAccessor ( diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/airtime-metric.h --- a/src/devices/mesh/dot11s/airtime-metric.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/airtime-metric.h Fri Aug 21 23:33:52 2009 +0400 @@ -41,10 +41,10 @@ */ class AirtimeLinkMetricCalculator : public Object { - public: - static TypeId GetTypeId (); - uint32_t CalculateMetric (Mac48Address peerAddress, Ptr mac); - private: +public: + static TypeId GetTypeId (); + uint32_t CalculateMetric (Mac48Address peerAddress, Ptr mac); +private: //\brief Overhead expressed in nanoseconds:DIFS+ 2* SIFS + 2*PREAMBLE + 2* ACK uint32_t m_overheadNanosec; ///\brief Bt value diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/hwmp-protocol-mac.cc --- a/src/devices/mesh/dot11s/hwmp-protocol-mac.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/hwmp-protocol-mac.cc Fri Aug 21 23:33:52 2009 +0400 @@ -430,20 +430,20 @@ HwmpProtocolMac::Statistics::Print (std::ostream & os) const { os << "\n"; + "txPreq= \"" << txPreq << "\"" << std::endl << + "txPrep=\"" << txPrep << "\"" << std::endl << + "txPerr=\"" << txPerr << "\"" << std::endl << + "rxPreq=\"" << rxPreq << "\"" << std::endl << + "rxPrep=\"" << rxPrep << "\"" << std::endl << + "rxPerr=\"" << rxPerr << "\"" << std::endl << + "txMgt=\"" << txMgt << "\"" << std::endl << + "txMgtBytes=\"" << txMgtBytes << "\"" << std::endl << + "rxMgt=\"" << rxMgt << "\"" << std::endl << + "rxMgtBytes=\"" << rxMgtBytes << "\"" << std::endl << + "txData=\"" << txData << "\"" << std::endl << + "txDataBytes=\"" << txDataBytes << "\"" << std::endl << + "rxData=\"" << rxData << "\"" << std::endl << + "rxDataBytes=\"" << rxDataBytes << "\"/>" << std::endl; } void HwmpProtocolMac::Report (std::ostream & os) const diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/hwmp-protocol.cc --- a/src/devices/mesh/dot11s/hwmp-protocol.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/hwmp-protocol.cc Fri Aug 21 23:33:52 2009 +0400 @@ -60,55 +60,55 @@ &HwmpProtocol::m_maxQueueSize), MakeUintegerChecker (1) ) - .AddAttribute ( "dot11MeshHWMPmaxPREQretries", + .AddAttribute ( "Dot11MeshHWMPmaxPREQretries", "Maximum number of retries before we suppose the destination to be unreachable", UintegerValue (3), MakeUintegerAccessor ( &HwmpProtocol::m_dot11MeshHWMPmaxPREQretries), MakeUintegerChecker (1) ) - .AddAttribute ( "dot11MeshHWMPnetDiameterTraversalTime", + .AddAttribute ( "Dot11MeshHWMPnetDiameterTraversalTime", "Time we suppose the packet to go from one edge of the network to another", TimeValue (MicroSeconds (1024*100)), MakeTimeAccessor ( &HwmpProtocol::m_dot11MeshHWMPnetDiameterTraversalTime), MakeTimeChecker () ) - .AddAttribute ( "dot11MeshHWMPpreqMinInterval", + .AddAttribute ( "Dot11MeshHWMPpreqMinInterval", "Minimal interval between to successive PREQs", TimeValue (MicroSeconds (1024*100)), MakeTimeAccessor ( &HwmpProtocol::m_dot11MeshHWMPpreqMinInterval), MakeTimeChecker () ) - .AddAttribute ( "dot11MeshHWMPperrMinInterval", + .AddAttribute ( "Dot11MeshHWMPperrMinInterval", "Minimal interval between to successive PREQs", TimeValue (MicroSeconds (1024*100)), MakeTimeAccessor (&HwmpProtocol::m_dot11MeshHWMPperrMinInterval), MakeTimeChecker () ) - .AddAttribute ( "dot11MeshHWMPactiveRootTimeout", + .AddAttribute ( "Dot11MeshHWMPactiveRootTimeout", "Lifetime of poractive routing information", TimeValue (MicroSeconds (1024*5000)), MakeTimeAccessor ( &HwmpProtocol::m_dot11MeshHWMPactiveRootTimeout), MakeTimeChecker () ) - .AddAttribute ( "dot11MeshHWMPactivePathTimeout", + .AddAttribute ( "Dot11MeshHWMPactivePathTimeout", "Lifetime of reactive routing information", TimeValue (MicroSeconds (1024*5000)), MakeTimeAccessor ( &HwmpProtocol::m_dot11MeshHWMPactivePathTimeout), MakeTimeChecker () ) - .AddAttribute ( "dot11MeshHWMPpathToRootInterval", + .AddAttribute ( "Dot11MeshHWMPpathToRootInterval", "Interval between two successive proactive PREQs", TimeValue (MicroSeconds (1024*2000)), MakeTimeAccessor ( &HwmpProtocol::m_dot11MeshHWMPpathToRootInterval), MakeTimeChecker () ) - .AddAttribute ( "dot11MeshHWMPrannInterval", + .AddAttribute ( "Dot11MeshHWMPrannInterval", "Lifetime of poractive routing information", TimeValue (MicroSeconds (1024*5000)), MakeTimeAccessor ( @@ -898,18 +898,18 @@ //Send all packets stored for this destination QueuedPacket packet = DequeueFirstPacketByDst (dst); while (packet.pkt != 0) - { - //set RA tag for retransmitter: - HwmpTag tag; - packet.pkt->RemovePacketTag (tag); - tag.SetAddress (result.retransmitter); - packet.pkt->AddPacketTag (tag); - m_stats.txUnicast ++; - m_stats.txBytes += packet.pkt->GetSize (); - packet.reply (true, packet.pkt, packet.src, packet.dst, packet.protocol, result.ifIndex); + { + //set RA tag for retransmitter: + HwmpTag tag; + packet.pkt->RemovePacketTag (tag); + tag.SetAddress (result.retransmitter); + packet.pkt->AddPacketTag (tag); + m_stats.txUnicast ++; + m_stats.txBytes += packet.pkt->GetSize (); + packet.reply (true, packet.pkt, packet.src, packet.dst, packet.protocol, result.ifIndex); - packet = DequeueFirstPacketByDst (dst); - } + packet = DequeueFirstPacketByDst (dst); + } } void HwmpProtocol::ProactivePathResolved () @@ -919,21 +919,21 @@ NS_ASSERT (result.retransmitter != Mac48Address::GetBroadcast ()); QueuedPacket packet = DequeueFirstPacket (); while (packet.pkt != 0) - { - //set RA tag for retransmitter: - HwmpTag tag; - if (!packet.pkt->RemovePacketTag (tag)) - { - NS_FATAL_ERROR ("HWMP tag must be present at this point"); - } - tag.SetAddress (result.retransmitter); - packet.pkt->AddPacketTag (tag); - m_stats.txUnicast ++; - m_stats.txBytes += packet.pkt->GetSize (); - packet.reply (true, packet.pkt, packet.src, packet.dst, packet.protocol, result.ifIndex); + { + //set RA tag for retransmitter: + HwmpTag tag; + if (!packet.pkt->RemovePacketTag (tag)) + { + NS_FATAL_ERROR ("HWMP tag must be present at this point"); + } + tag.SetAddress (result.retransmitter); + packet.pkt->AddPacketTag (tag); + m_stats.txUnicast ++; + m_stats.txBytes += packet.pkt->GetSize (); + packet.reply (true, packet.pkt, packet.src, packet.dst, packet.protocol, result.ifIndex); - packet = DequeueFirstPacket (); - } + packet = DequeueFirstPacket (); + } } bool @@ -1107,28 +1107,28 @@ HwmpProtocol::Report (std::ostream & os) const { os << "\n"; + "address=\"" << m_address << "\"" << std::endl << + "maxQueueSize=\"" << m_maxQueueSize << "\"" << std::endl << + "Dot11MeshHWMPmaxPREQretries=\"" << (uint16_t)m_dot11MeshHWMPmaxPREQretries << "\"" << std::endl << + "Dot11MeshHWMPnetDiameterTraversalTime=\"" << m_dot11MeshHWMPnetDiameterTraversalTime.GetSeconds () << "\"" << std::endl << + "Dot11MeshHWMPpreqMinInterval=\"" << m_dot11MeshHWMPpreqMinInterval.GetSeconds () << "\"" << std::endl << + "Dot11MeshHWMPperrMinInterval=\"" << m_dot11MeshHWMPperrMinInterval.GetSeconds () << "\"" << std::endl << + "Dot11MeshHWMPactiveRootTimeout=\"" << m_dot11MeshHWMPactiveRootTimeout.GetSeconds () << "\"" << std::endl << + "Dot11MeshHWMPactivePathTimeout=\"" << m_dot11MeshHWMPactivePathTimeout.GetSeconds () << "\"" << std::endl << + "Dot11MeshHWMPpathToRootInterval=\"" << m_dot11MeshHWMPpathToRootInterval.GetSeconds () << "\"" << std::endl << + "Dot11MeshHWMPrannInterval=\"" << m_dot11MeshHWMPrannInterval.GetSeconds () << "\"" << std::endl << + "isRoot=\"" << m_isRoot << "\"" << std::endl << + "maxTtl=\"" << (uint16_t)m_maxTtl << "\"" << std::endl << + "unicastPerrThreshold=\"" << (uint16_t)m_unicastPerrThreshold << "\"" << std::endl << + "unicastPreqThreshold=\"" << (uint16_t)m_unicastPreqThreshold << "\"" << std::endl << + "unicastDataThreshold=\"" << (uint16_t)m_unicastDataThreshold << "\"" << std::endl << + "doFlag=\"" << m_doFlag << "\"" << std::endl << + "rfFlag=\"" << m_rfFlag << "\">" << std::endl; m_stats.Print (os); for (HwmpProtocolMacMap::const_iterator plugin = m_interfaces.begin (); plugin != m_interfaces.end (); plugin ++) - { - plugin->second->Report (os); - } + { + plugin->second->Report (os); + } os << "\n"; } void @@ -1137,7 +1137,7 @@ m_stats = Statistics::Statistics (); for (HwmpProtocolMacMap::const_iterator plugin = m_interfaces.begin (); plugin != m_interfaces.end (); plugin ++) { - plugin->second->ResetStats (); + plugin->second->ResetStats (); } } HwmpProtocol::QueuedPacket::QueuedPacket () : diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/hwmp-protocol.h --- a/src/devices/mesh/dot11s/hwmp-protocol.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/hwmp-protocol.h Fri Aug 21 23:33:52 2009 +0400 @@ -149,13 +149,39 @@ }; ///\name Methods related to Queue/Dequeue procedures - //\{ + ///\{ bool QueuePacket (QueuedPacket packet); QueuedPacket DequeueFirstPacketByDst (Mac48Address dst); QueuedPacket DequeueFirstPacket (); void ReactivePathResolved (Mac48Address dst); void ProactivePathResolved (); - //\} + ///\} + ///\name Methods responsible for path discovery retry procedure: + ///\{ + /** + * \brief checks when the last path discovery procedure was started for a given destination. + * + * If the retry counter has not achieved the maximum level - preq should not be sent + */ + bool ShouldSendPreq (Mac48Address dst); + + /** + * \brief Generates PREQ retry when retry timeout has expired and route is still unresolved. + * + * When PREQ retry has achieved the maximum level - retry mechanish should be cancelled + */ + void RetryPathDiscovery (Mac48Address dst, uint8_t numOfRetry); + ///\} + + ///\name Proactive Preq routines: + ///\{ + void SendProactivePreq (); + ///\} + ///\return address of MeshPointDevice + Mac48Address GetAddress (); +private: + typedef std::map > HwmpProtocolMacMap; + HwmpProtocolMacMap m_interfaces; ///\name Statistics: ///\{ struct Statistics @@ -175,62 +201,36 @@ }; Statistics m_stats; ///\} - ///\name Methods responsible for path discovery retry procedure: - //\{ - /** - * \brief checks when the last path discovery procedure was started for a given destination. - * - * If the retry counter has not achieved the maximum level - preq should not be sent - */ - bool ShouldSendPreq (Mac48Address dst); - - /** - * \brief Generates PREQ retry when retry timeout has expired and route is still unresolved. - * - * When PREQ retry has achieved the maximum level - retry mechanish should be cancelled - */ - void RetryPathDiscovery (Mac48Address dst, uint8_t numOfRetry); - //\} - - ///\name Proactive Preq routines: - //\{ - void SendProactivePreq (); - //\} - ///\return address of MeshPointDevice - Mac48Address GetAddress (); -private: - typedef std::map > HwmpProtocolMacMap; - HwmpProtocolMacMap m_interfaces; Mac48Address m_address; uint32_t m_dataSeqno; uint32_t m_hwmpSeqno; uint32_t m_preqId; ///\name Sequence number filters - //\{ + ///\{ /// Data sequence number database std::map m_lastDataSeqno; /// DSN databse std::map m_lastHwmpSeqno; /// Metric database std::map m_lastHwmpMetric; - //\} + ///\} /// Routing table Ptr m_rtable; ///\name Timers: - //\{ + ///\{ std::map m_preqTimeouts; EventId m_proactivePreqTimer; //Random start in Proactive PREQ propagation Time m_randomStart; - //\} + ///\} /// Packet Queue std::vector m_rqueue; private: ///\name HWMP-protocol parameters (attributes of GetTypeId) - //\{ + ///\{ uint16_t m_maxQueueSize; uint8_t m_dot11MeshHWMPmaxPREQretries; Time m_dot11MeshHWMPnetDiameterTraversalTime; @@ -247,10 +247,10 @@ uint8_t m_unicastDataThreshold; bool m_doFlag; bool m_rfFlag; - //\} + ///\} ///\name Methods needed by HwmpMacLugin to access protocol parameters: - //\{ + ///\{ bool GetDoFlag (); bool GetRfFlag (); Time GetPreqMinInterval (); @@ -260,7 +260,7 @@ uint32_t GetNextHwmpSeqno (); uint32_t GetActivePathLifetime (); uint8_t GetUnicastPerrThreshold (); - //\} + ///\} Callback , uint32_t> m_neighboursCallback; }; } //namespace dot11s diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-beacon-timing.cc --- a/src/devices/mesh/dot11s/ie-dot11s-beacon-timing.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-beacon-timing.cc Fri Aug 21 23:33:52 2009 +0400 @@ -110,9 +110,7 @@ m_numOfUnits++; } void -IeBeaconTiming::DelNeighboursTimingElementUnit (uint16_t aid, Time last_beacon, //MicroSeconds! - Time beacon_interval //MicroSeconds! -) +IeBeaconTiming::DelNeighboursTimingElementUnit (uint16_t aid, Time last_beacon, Time beacon_interval) { for (NeighboursTimingUnitsList::iterator i = m_neighbours.begin (); i != m_neighbours.end (); i++) { @@ -200,8 +198,6 @@ { return (uint8_t) (x & 0xff); } -; - bool operator== (const IeBeaconTimingUnit & a, const IeBeaconTimingUnit & b) { diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-beacon-timing.h --- a/src/devices/mesh/dot11s/ie-dot11s-beacon-timing.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-beacon-timing.h Fri Aug 21 23:33:52 2009 +0400 @@ -84,11 +84,11 @@ ); void ClearTimingElement (); private: - WifiElementId ElementId () const; - uint8_t GetInformationSize () const; - void SerializeInformation (Buffer::Iterator i) const; - uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); - void PrintInformation (std::ostream& os) const; + virtual WifiElementId ElementId () const; + virtual uint8_t GetInformationSize () const; + virtual void SerializeInformation (Buffer::Iterator i) const; + virtual uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); + virtual void PrintInformation (std::ostream& os) const; /** * Converters: */ diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-configuration.cc --- a/src/devices/mesh/dot11s/ie-dot11s-configuration.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-configuration.cc Fri Aug 21 23:33:52 2009 +0400 @@ -25,18 +25,18 @@ namespace ns3 { namespace dot11s { -dot11sMeshCapability::dot11sMeshCapability () : +Dot11sMeshCapability::Dot11sMeshCapability () : acceptPeerLinks (true), MCCASupported (false), MCCAEnabled (false), forwarding (true), beaconTimingReport ( true), TBTTAdjustment (true), powerSaveLevel (false) { } uint8_t -dot11sMeshCapability::GetSerializedSize () const +Dot11sMeshCapability::GetSerializedSize () const { return 2; } uint16_t -dot11sMeshCapability::GetUint16 () const +Dot11sMeshCapability::GetUint16 () const { uint16_t result = 0; if (acceptPeerLinks) @@ -70,13 +70,13 @@ return result; } Buffer::Iterator -dot11sMeshCapability::Serialize (Buffer::Iterator i) const +Dot11sMeshCapability::Serialize (Buffer::Iterator i) const { i.WriteHtolsbU16 (GetUint16 ()); return i; } Buffer::Iterator -dot11sMeshCapability::Deserialize (Buffer::Iterator i) +Dot11sMeshCapability::Deserialize (Buffer::Iterator i) { uint16_t cap = i.ReadLsbtohU16 (); acceptPeerLinks = Is (cap, 0); @@ -89,7 +89,7 @@ return i; } bool -dot11sMeshCapability::Is (uint16_t cap, uint8_t n) const +Dot11sMeshCapability::Is (uint16_t cap, uint8_t n) const { uint16_t mask = 1 << n; return (cap & mask); @@ -193,13 +193,13 @@ { return m_neighbors; } -dot11sMeshCapability const& +Dot11sMeshCapability const& IeConfiguration::MeshCapability () { return m_meshCap; } bool -operator== (const dot11sMeshCapability & a, const dot11sMeshCapability & b) +operator== (const Dot11sMeshCapability & a, const Dot11sMeshCapability & b) { return ((a.acceptPeerLinks == b.acceptPeerLinks) && (a.MCCASupported == b.MCCASupported) && (a.MCCAEnabled == b.MCCAEnabled) && (a.forwarding == b.forwarding) && (a.beaconTimingReport == b.beaconTimingReport) diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-configuration.h --- a/src/devices/mesh/dot11s/ie-dot11s-configuration.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-configuration.h Fri Aug 21 23:33:52 2009 +0400 @@ -74,10 +74,10 @@ * \ingroup dot11s * \brief See 7.3.2.86.7 in 802.11s draft 3.0 */ -class dot11sMeshCapability +class Dot11sMeshCapability { public: - dot11sMeshCapability (); + Dot11sMeshCapability (); uint8_t GetSerializedSize () const; Buffer::Iterator Serialize (Buffer::Iterator i) const; Buffer::Iterator Deserialize (Buffer::Iterator i); @@ -90,7 +90,7 @@ bool TBTTAdjustment; bool powerSaveLevel; bool Is (uint16_t cap,uint8_t n) const; - friend bool operator== (const dot11sMeshCapability & a, const dot11sMeshCapability & b); + friend bool operator== (const Dot11sMeshCapability & a, const Dot11sMeshCapability & b); }; /** @@ -109,13 +109,13 @@ void SetNeighborCount (uint8_t neighbors); uint8_t GetNeighborCount (); - dot11sMeshCapability const& MeshCapability (); + Dot11sMeshCapability const& MeshCapability (); private: - WifiElementId ElementId () const; - uint8_t GetInformationSize () const; - void SerializeInformation (Buffer::Iterator i) const; - uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); - void PrintInformation (std::ostream& os) const; + virtual WifiElementId ElementId () const; + virtual uint8_t GetInformationSize () const; + virtual void SerializeInformation (Buffer::Iterator i) const; + virtual uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); + virtual void PrintInformation (std::ostream& os) const; private: /** Active Path Selection Protocol ID */ dot11sPathSelectionProtocol m_APSPId; @@ -127,12 +127,12 @@ dot11sSynchronizationProtocolIdentifier m_SPId; /** Auth protocol ID */ dot11sAuthenticationProtocol m_APId; - dot11sMeshCapability m_meshCap; + Dot11sMeshCapability m_meshCap; uint8_t m_neighbors; friend bool operator== (const IeConfiguration & a, const IeConfiguration & b); }; bool operator== (const IeConfiguration & a, const IeConfiguration & b); -bool operator== (const dot11sMeshCapability & a, const dot11sMeshCapability & b); +bool operator== (const Dot11sMeshCapability & a, const Dot11sMeshCapability & b); } // namespace dot11s } //namespace ns3 #endif diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-id.h --- a/src/devices/mesh/dot11s/ie-dot11s-id.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-id.h Fri Aug 21 23:33:52 2009 +0400 @@ -44,11 +44,11 @@ uint32_t GetLength (void) const; char *PeekString (void) const; private: - WifiElementId ElementId () const; - void SerializeInformation (Buffer::Iterator i) const; - uint8_t DeserializeInformation (Buffer::Iterator start, uint8_t length); - void PrintInformation (std::ostream& os) const; - uint8_t GetInformationSize () const; + virtual WifiElementId ElementId () const; + virtual void SerializeInformation (Buffer::Iterator i) const; + virtual uint8_t DeserializeInformation (Buffer::Iterator start, uint8_t length); + virtual void PrintInformation (std::ostream& os) const; + virtual uint8_t GetInformationSize () const; private: uint8_t m_meshId[33]; friend bool operator== (const IeMeshId & a, const IeMeshId & b); diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-metric-report.h --- a/src/devices/mesh/dot11s/ie-dot11s-metric-report.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-metric-report.h Fri Aug 21 23:33:52 2009 +0400 @@ -39,11 +39,11 @@ void SetMetric (uint32_t metric); uint32_t GetMetric (); private: - WifiElementId ElementId () const; - void SerializeInformation (Buffer::Iterator i) const; - uint8_t DeserializeInformation (Buffer::Iterator start, uint8_t length); - void PrintInformation (std::ostream& os) const; - uint8_t GetInformationSize () const; + virtual WifiElementId ElementId () const; + virtual void SerializeInformation (Buffer::Iterator i) const; + virtual uint8_t DeserializeInformation (Buffer::Iterator start, uint8_t length); + virtual void PrintInformation (std::ostream& os) const; + virtual uint8_t GetInformationSize () const; private: uint32_t m_metric; friend bool operator== (const IeLinkMetricReport & a, const IeLinkMetricReport & b); diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-peer-management.h --- a/src/devices/mesh/dot11s/ie-dot11s-peer-management.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-peer-management.h Fri Aug 21 23:33:52 2009 +0400 @@ -71,11 +71,11 @@ bool SubtypeIsConfirm () const ; uint8_t GetSubtype () const { return m_subtype;}; private: - WifiElementId ElementId () const; - uint8_t GetInformationSize (void) const; - void SerializeInformation (Buffer::Iterator i) const; - uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); - void PrintInformation (std::ostream& os) const; + virtual WifiElementId ElementId () const; + virtual uint8_t GetInformationSize (void) const; + virtual void SerializeInformation (Buffer::Iterator i) const; + virtual uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); + virtual void PrintInformation (std::ostream& os) const; private: uint8_t m_length; uint8_t m_subtype; diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/ie-dot11s-peering-protocol.h --- a/src/devices/mesh/dot11s/ie-dot11s-peering-protocol.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/ie-dot11s-peering-protocol.h Fri Aug 21 23:33:52 2009 +0400 @@ -32,11 +32,11 @@ public: IePeeringProtocol (); private: - WifiElementId ElementId () const; - uint8_t GetInformationSize () const; - void SerializeInformation (Buffer::Iterator i) const; - uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); - void PrintInformation (std::ostream& os) const; + virtual WifiElementId ElementId () const; + virtual uint8_t GetInformationSize () const; + virtual void SerializeInformation (Buffer::Iterator i) const; + virtual uint8_t DeserializeInformation (Buffer::Iterator i, uint8_t length); + virtual void PrintInformation (std::ostream& os) const; private: uint8_t m_protocol; }; diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/peer-link.cc --- a/src/devices/mesh/dot11s/peer-link.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/peer-link.cc Fri Aug 21 23:33:52 2009 +0400 @@ -676,16 +676,16 @@ { return; } - os << "GetAddress () << "\"\n" - "peerInterfaceAddress=\"" << m_peerAddress << "\"\n" - "peerMeshPointAddress=\"" << m_peerMeshPointAddress << "\"\n" - "metric=\"" << m_macPlugin->GetLinkMetric (m_peerAddress) << "\"\n" - "lastBeacon=\"" << m_lastBeacon.GetSeconds () << "\"\n" - "localLinkId=\"" << m_localLinkId << "\"\n" - "peerLinkId=\"" << m_peerLinkId << "\"\n" - "assocId=\"" << m_assocId << "\"\n" - "/>\n"; + os << "GetAddress () << "\"" << std::endl << + "peerInterfaceAddress=\"" << m_peerAddress << "\"" << std::endl << + "peerMeshPointAddress=\"" << m_peerMeshPointAddress << "\"" << std::endl << + "metric=\"" << m_macPlugin->GetLinkMetric (m_peerAddress) << "\"" << std::endl << + "lastBeacon=\"" << m_lastBeacon.GetSeconds () << "\"" << std::endl << + "localLinkId=\"" << m_localLinkId << "\"" << std::endl << + "peerLinkId=\"" << m_peerLinkId << "\"" << std::endl << + "assocId=\"" << m_assocId << "\"" << std::endl << + "/>" << std::endl; } } // namespace dot11s } //namespace ns3 diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/dot11s/peer-management-protocol.cc --- a/src/devices/mesh/dot11s/peer-management-protocol.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/dot11s/peer-management-protocol.cc Fri Aug 21 23:33:52 2009 +0400 @@ -542,7 +542,7 @@ os << "\n"; + "linksClosed=\"" << linksClosed << "\"/>" << std::endl; } void PeerManagementProtocol::Report (std::ostream & os) const diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/mesh-point-device.cc --- a/src/devices/mesh/mesh-point-device.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/mesh-point-device.cc Fri Aug 21 23:33:52 2009 +0400 @@ -131,20 +131,6 @@ } void -MeshPointDevice::SetName (const std::string name) -{ - NS_LOG_FUNCTION_NOARGS (); - m_name = name; -} - -std::string -MeshPointDevice::GetName () const -{ - NS_LOG_FUNCTION_NOARGS (); - return m_name; -} - -void MeshPointDevice::SetIfIndex (const uint32_t index) { NS_LOG_FUNCTION_NOARGS (); @@ -452,20 +438,20 @@ void MeshPointDevice::Report (std::ostream & os) const { - os << "\n"; + os << "" << std::endl; } void diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/mesh-point-device.h --- a/src/devices/mesh/mesh-point-device.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/mesh-point-device.h Fri Aug 21 23:33:52 2009 +0400 @@ -89,8 +89,6 @@ ///\name NetDevice interface for upper layers //\{ - virtual void SetName (const std::string name); - virtual std::string GetName () const; virtual void SetIfIndex (const uint32_t index); virtual uint32_t GetIfIndex () const; virtual Ptr GetChannel () const; @@ -157,8 +155,6 @@ Mac48Address m_address; /// Parent node Ptr m_node; - /// Station name - std::string m_name; /// List of interfaces std::vector< Ptr > m_ifaces; /// If index diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/mesh-wifi-interface-mac.cc --- a/src/devices/mesh/mesh-wifi-interface-mac.cc Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/mesh-wifi-interface-mac.cc Fri Aug 21 23:33:52 2009 +0400 @@ -665,7 +665,7 @@ "txFrames=\"" << sentFrames << "\" " "txBytes=\"" << sentBytes << "\" " "rxFrames=\"" << recvFrames << "\" " - "rxBytes=\"" << recvBytes << "\"/>\n"; + "rxBytes=\"" << recvBytes << "\"/>" << std::endl; } void MeshWifiInterfaceMac::Report (std::ostream & os) const @@ -673,9 +673,9 @@ os << "\n"; + "Address = \"" << GetAddress () << "\">" << std::endl; m_stats.Print (os); - os << "\n"; + os << "" << std::endl; } void MeshWifiInterfaceMac::ResetStats () diff -r e4602e638487 -r 5b499f25655a src/devices/mesh/wifi-information-element.h --- a/src/devices/mesh/wifi-information-element.h Thu Aug 20 18:33:57 2009 +0400 +++ b/src/devices/mesh/wifi-information-element.h Fri Aug 21 23:33:52 2009 +0400 @@ -144,7 +144,7 @@ /// Own unique Element ID virtual WifiElementId ElementId () const = 0; /// Length of serialized information -protected: +private: virtual uint8_t GetInformationSize () const = 0; /// Serialize information virtual void SerializeInformation (Buffer::Iterator start) const = 0;