From a459c57d0642ad1866792e72233811df7c65e9f5 Mon Sep 17 00:00:00 2001 From: Josh Pelkey Date: Thu, 7 Jan 2010 17:30:39 -0500 Subject: [PATCH 01/21] Fix bug 779: NixVectorRouting ignores specified outgoing interface in RouteOutput --- .../ipv4-nix-vector-routing.cc | 310 +++++++++--------- .../ipv4-nix-vector-routing.h | 9 +- 2 files changed, 155 insertions(+), 164 deletions(-) diff --git a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc index eb73bf89e..aa0c6936d 100644 --- a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc +++ b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc @@ -117,7 +117,7 @@ Ipv4NixVectorRouting::FlushIpv4RouteCache () } Ptr -Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest) +Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest, Ptr oif) { NS_LOG_FUNCTION_NOARGS (); @@ -146,7 +146,8 @@ Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest) // otherwise proceed as normal // and build the nix vector std::vector< Ptr > parentVector; - BFS (NodeList::GetNNodes (), source, destNode, parentVector); + + BFS (NodeList::GetNNodes (), source, destNode, parentVector, oif); if (BuildNixVector (parentVector, source->GetId (), destNode->GetId (), nixVector)) { @@ -495,7 +496,7 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< NS_LOG_LOGIC ("Nix-vector not in cache, build: "); // Build the nix-vector, given this node and the // dest IP address - nixVectorInCache = GetNixVector (m_node, header.GetDestination ()); + nixVectorInCache = GetNixVector (m_node, header.GetDestination (), oif); // cache it m_nixCache.insert (NixMap_t::value_type (header.GetDestination (), nixVectorInCache)); @@ -523,18 +524,38 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< uint32_t numberOfBits = nixVectorForPacket->BitCount (m_totalNeighbors); uint32_t nodeIndex = nixVectorForPacket->ExtractNeighborIndex (numberOfBits); - // Possibly search here in a cache for this node index - // and look for a Ipv4Route. If we have it, don't - // need to do the next 3 lines. + // Search here in a cache for this node index + // and look for a Ipv4Route rtentry = GetIpv4RouteInCache (header.GetDestination ()); - // not in cache - if (!rtentry) + + if (!rtentry || !(rtentry->GetOutputDevice () == oif)) { + // not in cache or a different specified output + // device is to be used + + // first, make sure we erase existing (incorrect) + // rtentry from the map + if (rtentry) + { + m_ipv4RouteCache.erase(header.GetDestination ()); + } + NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); Ipv4Address gatewayIp; uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); + int32_t interfaceIndex = 0; + + if (!oif) + { + interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); + } + else + { + interfaceIndex = (m_ipv4)->GetInterfaceForDevice(oif); + } + + NS_ASSERT_MSG (interfaceIndex != -1, "Interface index not found for device"); - uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); // start filling in the Ipv4Route info @@ -543,7 +564,15 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< rtentry->SetGateway (gatewayIp); rtentry->SetDestination (header.GetDestination ()); - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); + + if (!oif) + { + rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); + } + else + { + rtentry->SetOutputDevice (oif); + } sockerr = Socket::ERROR_NOTERROR; @@ -582,143 +611,50 @@ Ipv4NixVectorRouting::RouteInput (Ptr p, const Ipv4Header &header, // Get the nix-vector from the packet Ptr nixVector = p->GetNixVector(); - // make sure it exists, if not something - // went wrong - if (!nixVector) + // If nixVector isn't in packet, something went wrong + NS_ASSERT (nixVector); + + // Get the interface number that we go out of, by extracting + // from the nix-vector + if (m_totalNeighbors == 0) { - NS_LOG_ERROR ("Nix-vector wasn't in the packet! Rebuild."); - - Ptr nixVectorInCache; - - NS_LOG_DEBUG ("Dest IP from header: " << header.GetDestination ()); - - // check if cache - nixVectorInCache = GetNixVectorInCache(header.GetDestination ()); - - // not in cache - if (!nixVectorInCache) - { - NS_LOG_LOGIC ("RouteInput(): Nix-vector not in cache, build: "); - - // Build the nix-vector, given this node and the - // dest IP address - nixVectorInCache = GetNixVector (m_node, header.GetDestination ()); - } - - // path exists - if (nixVectorInCache) - { - NS_LOG_LOGIC ("Nix-vector contents: " << *nixVectorInCache); - - // cache it - m_nixCache.insert(NixMap_t::value_type(header.GetDestination (), nixVectorInCache)); - - // create a new nix vector to be used, - // we want to keep the cached version clean - Ptr nixVectorForPacket; - nixVectorForPacket = CreateObject (); - nixVectorForPacket = nixVectorInCache->Copy(); - - // Get the interface number that we go out of, by extracting - // from the nix-vector - if (m_totalNeighbors == 0) - { - m_totalNeighbors = FindTotalNeighbors (); - } - uint32_t numberOfBits = nixVectorForPacket->BitCount (m_totalNeighbors); - uint32_t nodeIndex = nixVectorForPacket->ExtractNeighborIndex (numberOfBits); - - rtentry = GetIpv4RouteInCache (header.GetDestination ()); - // not in cache - if (!rtentry) - { - NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); - Ipv4Address gatewayIp; - uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); - - uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); - Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); - - // start filling in the Ipv4Route info - rtentry = Create (); - rtentry->SetSource (ifAddr.GetLocal ()); - - rtentry->SetGateway (Ipv4Address(gatewayIp)); - rtentry->SetDestination (header.GetDestination ()); - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); - - // add rtentry to cache - m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); - } - - NS_LOG_LOGIC ("Nix-vector contents: " << *nixVectorInCache << " : Remaining bits: " << nixVectorForPacket->GetRemainingBits()); - - // Add nix-vector in the packet class - // have to copy the packet first b/c - // it is const - Ptr newPacket = Create (); - newPacket = p->Copy(); - - NS_LOG_LOGIC ("Adding Nix-vector to packet: " << *nixVectorForPacket); - newPacket->SetNixVector(nixVectorForPacket); - - // call the unicast callback - // local deliver is handled by Ipv4StaticRoutingImpl - // so this code is never even called if the packet is - // destined for this node. - ucb (rtentry, newPacket, header); - return true; - } - else // path doesn't exist - { - NS_LOG_ERROR ("No path to the dest: " << header.GetDestination ()); - return false; - } + m_totalNeighbors = FindTotalNeighbors (); } - else + uint32_t numberOfBits = nixVector->BitCount (m_totalNeighbors); + uint32_t nodeIndex = nixVector->ExtractNeighborIndex (numberOfBits); + + rtentry = GetIpv4RouteInCache (header.GetDestination ()); + // not in cache + if (!rtentry) { - // Get the interface number that we go out of, by extracting - // from the nix-vector - if (m_totalNeighbors == 0) - { - m_totalNeighbors = FindTotalNeighbors (); - } - uint32_t numberOfBits = nixVector->BitCount (m_totalNeighbors); - uint32_t nodeIndex = nixVector->ExtractNeighborIndex (numberOfBits); + NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); + Ipv4Address gatewayIp; + uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); + uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); + Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); - rtentry = GetIpv4RouteInCache (header.GetDestination ()); - // not in cache - if (!rtentry) - { - NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); - Ipv4Address gatewayIp; - uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); - uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); - Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); + // start filling in the Ipv4Route info + rtentry = Create (); + rtentry->SetSource (ifAddr.GetLocal ()); - // start filling in the Ipv4Route info - rtentry = Create (); - rtentry->SetSource (ifAddr.GetLocal ()); + rtentry->SetGateway (gatewayIp); + rtentry->SetDestination (header.GetDestination ()); + rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); - rtentry->SetGateway (gatewayIp); - rtentry->SetDestination (header.GetDestination ()); - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); - - // add rtentry to cache - m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); - } - - NS_LOG_LOGIC ("At Node " << m_node->GetId() << ", Extracting " << numberOfBits << - " bits from Nix-vector: " << nixVector << " : " << *nixVector); - - // call the unicast callback - // local deliver is handled by Ipv4StaticRoutingImpl - // so this code is never even called if the packet is - // destined for this node. - ucb (rtentry, p, header); - - return true; + // add rtentry to cache + m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); } + + NS_LOG_LOGIC ("At Node " << m_node->GetId() << ", Extracting " << numberOfBits << + " bits from Nix-vector: " << nixVector << " : " << *nixVector); + + // call the unicast callback + // local deliver is handled by Ipv4StaticRoutingImpl + // so this code is never even called if the packet is + // destined for this node. + ucb (rtentry, p, header); + + return true; } // virtual functions from Ipv4RoutingProtocol @@ -744,7 +680,9 @@ Ipv4NixVectorRouting::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddr } bool -Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, Ptr dest, std::vector< Ptr > & parentVector) +Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, + Ptr dest, std::vector< Ptr > & parentVector, + Ptr oif) { NS_LOG_FUNCTION_NOARGS (); @@ -772,41 +710,36 @@ Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, Ptr d return true; } - - // Iterate over the current node's adjacent vertices - // and push them into the queue - for (uint32_t i = 0; i < (currNode->GetNDevices ()); i++) + // if this is the first iteration of the loop and a + // specific output interface was given, make sure + // we go this way + if (currNode == source && oif) { - // Get a net device from the node - // as well as the channel, and figure - // out the adjacent net device - Ptr localNetDevice = currNode->GetDevice (i); - // make sure that we can go this way if (ipv4) { - uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(currNode->GetDevice(i)); + uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(oif); if (!(ipv4->IsUp (interfaceIndex))) { NS_LOG_LOGIC ("Ipv4Interface is down"); - continue; + return false; } } - if (!(localNetDevice->IsLinkUp ())) - { - NS_LOG_LOGIC ("Link is down."); - continue; - } - Ptr channel = localNetDevice->GetChannel (); + if (!(oif->IsLinkUp ())) + { + NS_LOG_LOGIC ("Link is down."); + return false; + } + Ptr channel = oif->GetChannel (); if (channel == 0) { - continue; + return false; } // this function takes in the local net dev, and channnel, and // writes to the netDeviceContainer the adjacent net devs NetDeviceContainer netDeviceContainer; - GetAdjacentNetDevices (localNetDevice, channel, netDeviceContainer); + GetAdjacentNetDevices (oif, channel, netDeviceContainer); // Finally we can get the adjacent nodes // and scan through them. We push them @@ -827,6 +760,63 @@ Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, Ptr d } } } + else + { + // Iterate over the current node's adjacent vertices + // and push them into the queue + for (uint32_t i = 0; i < (currNode->GetNDevices ()); i++) + { + // Get a net device from the node + // as well as the channel, and figure + // out the adjacent net device + Ptr localNetDevice = currNode->GetDevice (i); + + // make sure that we can go this way + if (ipv4) + { + uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(currNode->GetDevice(i)); + if (!(ipv4->IsUp (interfaceIndex))) + { + NS_LOG_LOGIC ("Ipv4Interface is down"); + continue; + } + } + if (!(localNetDevice->IsLinkUp ())) + { + NS_LOG_LOGIC ("Link is down."); + continue; + } + Ptr channel = localNetDevice->GetChannel (); + if (channel == 0) + { + continue; + } + + // this function takes in the local net dev, and channnel, and + // writes to the netDeviceContainer the adjacent net devs + NetDeviceContainer netDeviceContainer; + GetAdjacentNetDevices (localNetDevice, channel, netDeviceContainer); + + // Finally we can get the adjacent nodes + // and scan through them. We push them + // to the greyNode queue, if they aren't + // already there. + for (NetDeviceContainer::Iterator iter = netDeviceContainer.Begin (); iter != netDeviceContainer.End (); iter++) + { + Ptr remoteNode = (*iter)->GetNode (); + + // check to see if this node has been pushed before + // by checking to see if it has a parent + // if it doesn't (null or 0), then set its parent and + // push to the queue + if (parentVector.at (remoteNode->GetId ()) == 0) + { + parentVector.at (remoteNode->GetId ()) = currNode; + greyNodeList.push (remoteNode); + } + } + } + } // Pop off the head grey node. We have all its children. // It is now black. diff --git a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h index e8213e82f..5de8ff999 100644 --- a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h +++ b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h @@ -78,9 +78,9 @@ class Ipv4NixVectorRouting : public Ipv4RoutingProtocol void ResetTotalNeighbors (void); /* takes in the source node and dest IP and calls GetNodeByIp, - * BFS, and BuildNixVector to finally return the built - * nix-vector */ - Ptr GetNixVector (Ptr, Ipv4Address); + * BFS, accounting for any output interface specified, and finally + * BuildNixVector to return the built nix-vector */ + Ptr GetNixVector (Ptr, Ipv4Address, Ptr); /* checks the cache based on dest IP for the nix-vector */ Ptr GetNixVectorInCache (Ipv4Address); @@ -124,7 +124,8 @@ class Ipv4NixVectorRouting : public Ipv4RoutingProtocol bool BFS (uint32_t numberOfNodes, Ptr source, Ptr dest, - std::vector< Ptr > & parentVector); + std::vector< Ptr > & parentVector, + Ptr oif); void DoDispose (void); From f9af1974cfa210eb202e35660a216f65badf1026 Mon Sep 17 00:00:00 2001 From: Josh Pelkey Date: Thu, 7 Jan 2010 19:35:39 -0500 Subject: [PATCH 02/21] Forgot code freeze. Revert nix-vector bug fix for bug 779 --- .../ipv4-nix-vector-routing.cc | 310 +++++++++--------- .../ipv4-nix-vector-routing.h | 9 +- 2 files changed, 164 insertions(+), 155 deletions(-) diff --git a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc index aa0c6936d..eb73bf89e 100644 --- a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc +++ b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc @@ -117,7 +117,7 @@ Ipv4NixVectorRouting::FlushIpv4RouteCache () } Ptr -Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest, Ptr oif) +Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest) { NS_LOG_FUNCTION_NOARGS (); @@ -146,8 +146,7 @@ Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest, Ptr > parentVector; - - BFS (NodeList::GetNNodes (), source, destNode, parentVector, oif); + BFS (NodeList::GetNNodes (), source, destNode, parentVector); if (BuildNixVector (parentVector, source->GetId (), destNode->GetId (), nixVector)) { @@ -496,7 +495,7 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< NS_LOG_LOGIC ("Nix-vector not in cache, build: "); // Build the nix-vector, given this node and the // dest IP address - nixVectorInCache = GetNixVector (m_node, header.GetDestination (), oif); + nixVectorInCache = GetNixVector (m_node, header.GetDestination ()); // cache it m_nixCache.insert (NixMap_t::value_type (header.GetDestination (), nixVectorInCache)); @@ -524,38 +523,18 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< uint32_t numberOfBits = nixVectorForPacket->BitCount (m_totalNeighbors); uint32_t nodeIndex = nixVectorForPacket->ExtractNeighborIndex (numberOfBits); - // Search here in a cache for this node index - // and look for a Ipv4Route + // Possibly search here in a cache for this node index + // and look for a Ipv4Route. If we have it, don't + // need to do the next 3 lines. rtentry = GetIpv4RouteInCache (header.GetDestination ()); - - if (!rtentry || !(rtentry->GetOutputDevice () == oif)) + // not in cache + if (!rtentry) { - // not in cache or a different specified output - // device is to be used - - // first, make sure we erase existing (incorrect) - // rtentry from the map - if (rtentry) - { - m_ipv4RouteCache.erase(header.GetDestination ()); - } - NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); Ipv4Address gatewayIp; uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); - int32_t interfaceIndex = 0; - - if (!oif) - { - interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); - } - else - { - interfaceIndex = (m_ipv4)->GetInterfaceForDevice(oif); - } - - NS_ASSERT_MSG (interfaceIndex != -1, "Interface index not found for device"); + uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); // start filling in the Ipv4Route info @@ -564,15 +543,7 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< rtentry->SetGateway (gatewayIp); rtentry->SetDestination (header.GetDestination ()); - - if (!oif) - { - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); - } - else - { - rtentry->SetOutputDevice (oif); - } + rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); sockerr = Socket::ERROR_NOTERROR; @@ -611,50 +582,143 @@ Ipv4NixVectorRouting::RouteInput (Ptr p, const Ipv4Header &header, // Get the nix-vector from the packet Ptr nixVector = p->GetNixVector(); - // If nixVector isn't in packet, something went wrong - NS_ASSERT (nixVector); - - // Get the interface number that we go out of, by extracting - // from the nix-vector - if (m_totalNeighbors == 0) + // make sure it exists, if not something + // went wrong + if (!nixVector) { - m_totalNeighbors = FindTotalNeighbors (); - } - uint32_t numberOfBits = nixVector->BitCount (m_totalNeighbors); - uint32_t nodeIndex = nixVector->ExtractNeighborIndex (numberOfBits); + NS_LOG_ERROR ("Nix-vector wasn't in the packet! Rebuild."); - rtentry = GetIpv4RouteInCache (header.GetDestination ()); - // not in cache - if (!rtentry) + Ptr nixVectorInCache; + + NS_LOG_DEBUG ("Dest IP from header: " << header.GetDestination ()); + + // check if cache + nixVectorInCache = GetNixVectorInCache(header.GetDestination ()); + + // not in cache + if (!nixVectorInCache) + { + NS_LOG_LOGIC ("RouteInput(): Nix-vector not in cache, build: "); + + // Build the nix-vector, given this node and the + // dest IP address + nixVectorInCache = GetNixVector (m_node, header.GetDestination ()); + } + + // path exists + if (nixVectorInCache) + { + NS_LOG_LOGIC ("Nix-vector contents: " << *nixVectorInCache); + + // cache it + m_nixCache.insert(NixMap_t::value_type(header.GetDestination (), nixVectorInCache)); + + // create a new nix vector to be used, + // we want to keep the cached version clean + Ptr nixVectorForPacket; + nixVectorForPacket = CreateObject (); + nixVectorForPacket = nixVectorInCache->Copy(); + + // Get the interface number that we go out of, by extracting + // from the nix-vector + if (m_totalNeighbors == 0) + { + m_totalNeighbors = FindTotalNeighbors (); + } + uint32_t numberOfBits = nixVectorForPacket->BitCount (m_totalNeighbors); + uint32_t nodeIndex = nixVectorForPacket->ExtractNeighborIndex (numberOfBits); + + rtentry = GetIpv4RouteInCache (header.GetDestination ()); + // not in cache + if (!rtentry) + { + NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); + Ipv4Address gatewayIp; + uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); + + uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); + Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); + + // start filling in the Ipv4Route info + rtentry = Create (); + rtentry->SetSource (ifAddr.GetLocal ()); + + rtentry->SetGateway (Ipv4Address(gatewayIp)); + rtentry->SetDestination (header.GetDestination ()); + rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); + + // add rtentry to cache + m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); + } + + NS_LOG_LOGIC ("Nix-vector contents: " << *nixVectorInCache << " : Remaining bits: " << nixVectorForPacket->GetRemainingBits()); + + // Add nix-vector in the packet class + // have to copy the packet first b/c + // it is const + Ptr newPacket = Create (); + newPacket = p->Copy(); + + NS_LOG_LOGIC ("Adding Nix-vector to packet: " << *nixVectorForPacket); + newPacket->SetNixVector(nixVectorForPacket); + + // call the unicast callback + // local deliver is handled by Ipv4StaticRoutingImpl + // so this code is never even called if the packet is + // destined for this node. + ucb (rtentry, newPacket, header); + return true; + } + else // path doesn't exist + { + NS_LOG_ERROR ("No path to the dest: " << header.GetDestination ()); + return false; + } + } + else { - NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); - Ipv4Address gatewayIp; - uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); - uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); - Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); + // Get the interface number that we go out of, by extracting + // from the nix-vector + if (m_totalNeighbors == 0) + { + m_totalNeighbors = FindTotalNeighbors (); + } + uint32_t numberOfBits = nixVector->BitCount (m_totalNeighbors); + uint32_t nodeIndex = nixVector->ExtractNeighborIndex (numberOfBits); - // start filling in the Ipv4Route info - rtentry = Create (); - rtentry->SetSource (ifAddr.GetLocal ()); + rtentry = GetIpv4RouteInCache (header.GetDestination ()); + // not in cache + if (!rtentry) + { + NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); + Ipv4Address gatewayIp; + uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); + uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); + Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); - rtentry->SetGateway (gatewayIp); - rtentry->SetDestination (header.GetDestination ()); - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); + // start filling in the Ipv4Route info + rtentry = Create (); + rtentry->SetSource (ifAddr.GetLocal ()); - // add rtentry to cache - m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); + rtentry->SetGateway (gatewayIp); + rtentry->SetDestination (header.GetDestination ()); + rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); + + // add rtentry to cache + m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); + } + + NS_LOG_LOGIC ("At Node " << m_node->GetId() << ", Extracting " << numberOfBits << + " bits from Nix-vector: " << nixVector << " : " << *nixVector); + + // call the unicast callback + // local deliver is handled by Ipv4StaticRoutingImpl + // so this code is never even called if the packet is + // destined for this node. + ucb (rtentry, p, header); + + return true; } - - NS_LOG_LOGIC ("At Node " << m_node->GetId() << ", Extracting " << numberOfBits << - " bits from Nix-vector: " << nixVector << " : " << *nixVector); - - // call the unicast callback - // local deliver is handled by Ipv4StaticRoutingImpl - // so this code is never even called if the packet is - // destined for this node. - ucb (rtentry, p, header); - - return true; } // virtual functions from Ipv4RoutingProtocol @@ -680,9 +744,7 @@ Ipv4NixVectorRouting::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddr } bool -Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, - Ptr dest, std::vector< Ptr > & parentVector, - Ptr oif) +Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, Ptr dest, std::vector< Ptr > & parentVector) { NS_LOG_FUNCTION_NOARGS (); @@ -710,36 +772,41 @@ Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, return true; } - // if this is the first iteration of the loop and a - // specific output interface was given, make sure - // we go this way - if (currNode == source && oif) + + // Iterate over the current node's adjacent vertices + // and push them into the queue + for (uint32_t i = 0; i < (currNode->GetNDevices ()); i++) { + // Get a net device from the node + // as well as the channel, and figure + // out the adjacent net device + Ptr localNetDevice = currNode->GetDevice (i); + // make sure that we can go this way if (ipv4) { - uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(oif); + uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(currNode->GetDevice(i)); if (!(ipv4->IsUp (interfaceIndex))) { NS_LOG_LOGIC ("Ipv4Interface is down"); - return false; + continue; } } - if (!(oif->IsLinkUp ())) - { - NS_LOG_LOGIC ("Link is down."); - return false; - } - Ptr channel = oif->GetChannel (); + if (!(localNetDevice->IsLinkUp ())) + { + NS_LOG_LOGIC ("Link is down."); + continue; + } + Ptr channel = localNetDevice->GetChannel (); if (channel == 0) { - return false; + continue; } // this function takes in the local net dev, and channnel, and // writes to the netDeviceContainer the adjacent net devs NetDeviceContainer netDeviceContainer; - GetAdjacentNetDevices (oif, channel, netDeviceContainer); + GetAdjacentNetDevices (localNetDevice, channel, netDeviceContainer); // Finally we can get the adjacent nodes // and scan through them. We push them @@ -760,63 +827,6 @@ Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, } } } - else - { - // Iterate over the current node's adjacent vertices - // and push them into the queue - for (uint32_t i = 0; i < (currNode->GetNDevices ()); i++) - { - // Get a net device from the node - // as well as the channel, and figure - // out the adjacent net device - Ptr localNetDevice = currNode->GetDevice (i); - - // make sure that we can go this way - if (ipv4) - { - uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(currNode->GetDevice(i)); - if (!(ipv4->IsUp (interfaceIndex))) - { - NS_LOG_LOGIC ("Ipv4Interface is down"); - continue; - } - } - if (!(localNetDevice->IsLinkUp ())) - { - NS_LOG_LOGIC ("Link is down."); - continue; - } - Ptr channel = localNetDevice->GetChannel (); - if (channel == 0) - { - continue; - } - - // this function takes in the local net dev, and channnel, and - // writes to the netDeviceContainer the adjacent net devs - NetDeviceContainer netDeviceContainer; - GetAdjacentNetDevices (localNetDevice, channel, netDeviceContainer); - - // Finally we can get the adjacent nodes - // and scan through them. We push them - // to the greyNode queue, if they aren't - // already there. - for (NetDeviceContainer::Iterator iter = netDeviceContainer.Begin (); iter != netDeviceContainer.End (); iter++) - { - Ptr remoteNode = (*iter)->GetNode (); - - // check to see if this node has been pushed before - // by checking to see if it has a parent - // if it doesn't (null or 0), then set its parent and - // push to the queue - if (parentVector.at (remoteNode->GetId ()) == 0) - { - parentVector.at (remoteNode->GetId ()) = currNode; - greyNodeList.push (remoteNode); - } - } - } - } // Pop off the head grey node. We have all its children. // It is now black. diff --git a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h index 5de8ff999..e8213e82f 100644 --- a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h +++ b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h @@ -78,9 +78,9 @@ class Ipv4NixVectorRouting : public Ipv4RoutingProtocol void ResetTotalNeighbors (void); /* takes in the source node and dest IP and calls GetNodeByIp, - * BFS, accounting for any output interface specified, and finally - * BuildNixVector to return the built nix-vector */ - Ptr GetNixVector (Ptr, Ipv4Address, Ptr); + * BFS, and BuildNixVector to finally return the built + * nix-vector */ + Ptr GetNixVector (Ptr, Ipv4Address); /* checks the cache based on dest IP for the nix-vector */ Ptr GetNixVectorInCache (Ipv4Address); @@ -124,8 +124,7 @@ class Ipv4NixVectorRouting : public Ipv4RoutingProtocol bool BFS (uint32_t numberOfNodes, Ptr source, Ptr dest, - std::vector< Ptr > & parentVector, - Ptr oif); + std::vector< Ptr > & parentVector); void DoDispose (void); From 45f589ef1045b9b5721b712ea8388fd5df9817ab Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Fri, 8 Jan 2010 17:40:49 +0100 Subject: [PATCH 03/21] bug 725: wifi fragmentation and RTS cannot be used at the same time --- src/devices/wifi/dca-txop.cc | 15 +++++++++++---- src/devices/wifi/dca-txop.h | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/devices/wifi/dca-txop.cc b/src/devices/wifi/dca-txop.cc index e19363591..eba746669 100644 --- a/src/devices/wifi/dca-txop.cc +++ b/src/devices/wifi/dca-txop.cc @@ -269,10 +269,10 @@ DcaTxop::Low (void) } bool -DcaTxop::NeedRts (void) +DcaTxop::NeedRts (Ptr packet) { WifiRemoteStation *station = GetStation (m_currentHdr.GetAddr1 ()); - return station->NeedRts (m_currentPacket); + return station->NeedRts (packet); } bool @@ -399,9 +399,16 @@ DcaTxop::NotifyAccessGranted (void) if (NeedFragmentation ()) { - params.DisableRts (); WifiMacHeader hdr; Ptr fragment = GetFragmentPacket (&hdr); + if (NeedRts (fragment)) + { + params.EnableRts (); + } + else + { + params.DisableRts (); + } if (IsLastFragment ()) { MY_DEBUG ("fragmenting last fragment size="<GetSize ()); @@ -417,7 +424,7 @@ DcaTxop::NotifyAccessGranted (void) } else { - if (NeedRts ()) + if (NeedRts (m_currentPacket)) { params.EnableRts (); MY_DEBUG ("tx unicast rts"); diff --git a/src/devices/wifi/dca-txop.h b/src/devices/wifi/dca-txop.h index 69b8a050f..370bd7c31 100644 --- a/src/devices/wifi/dca-txop.h +++ b/src/devices/wifi/dca-txop.h @@ -141,7 +141,7 @@ private: void RestartAccessIfNeeded (void); void StartAccessIfNeeded (void); - bool NeedRts (void); + bool NeedRts (Ptr packet); bool NeedRtsRetransmission (void); bool NeedDataRetransmission (void); bool NeedFragmentation (void); From 441db3752b0fd880092a850a84457af935310140 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Fri, 8 Jan 2010 17:52:29 +0100 Subject: [PATCH 04/21] bug 767: Incorrect modulation for 802.11a modes --- src/devices/wifi/wifi-mode.cc | 25 +++++++++++++++++++++- src/devices/wifi/wifi-mode.h | 20 ++++++++++++++++++ src/devices/wifi/wifi-phy.cc | 40 +++++++++++++++++++---------------- 3 files changed, 66 insertions(+), 19 deletions(-) diff --git a/src/devices/wifi/wifi-mode.cc b/src/devices/wifi/wifi-mode.cc index 60b0814df..e21e84ba4 100644 --- a/src/devices/wifi/wifi-mode.cc +++ b/src/devices/wifi/wifi-mode.cc @@ -148,9 +148,32 @@ WifiModeFactory::CreateBpsk (std::string uniqueName, item->standard = standard; return WifiMode (uid); } + +WifiMode +WifiModeFactory::CreateQpsk (std::string uniqueName, + bool isMandatory, + uint32_t bandwidth, + uint32_t dataRate, + uint32_t phyRate, + enum WifiPhyStandard standard) +{ + WifiModeFactory *factory = GetFactory (); + uint32_t uid = factory->AllocateUid (uniqueName); + WifiModeItem *item = factory->Get (uid); + item->uniqueUid = uniqueName; + item->bandwidth = bandwidth; + item->dataRate = dataRate; + item->phyRate = phyRate; + item->modulation = WifiMode::QPSK; + item->constellationSize = 4; + item->isMandatory = isMandatory; + item->standard = standard; + return WifiMode (uid); +} + WifiMode WifiModeFactory::CreateQam (std::string uniqueName, - bool isMandatory, + bool isMandatory, uint32_t bandwidth, uint32_t dataRate, uint32_t phyRate, diff --git a/src/devices/wifi/wifi-mode.h b/src/devices/wifi/wifi-mode.h index 7dedd325f..71f3e724a 100644 --- a/src/devices/wifi/wifi-mode.h +++ b/src/devices/wifi/wifi-mode.h @@ -42,6 +42,7 @@ class WifiMode public: enum ModulationType { BPSK, + QPSK, DBPSK, DQPSK, QAM, @@ -162,6 +163,25 @@ public: uint32_t dataRate, uint32_t phyRate, enum WifiPhyStandard standard); + /** + * \param uniqueName the name of the associated WifiMode. This name + * must be unique accross _all_ instances. + * \param isMandatory true if this WifiMode is mandatory, false otherwise. + * \param bandwidth the bandwidth (Hz) of the signal generated when the + * associated WifiMode is used. + * \param dataRate the rate (bits/second) at which the user data is transmitted + * \param phyRate the rate (bits/second) at which the encoded user data is transmitted + * \param standard the Wifi Phy standard to apply + * The phyRate includes FEC so, is typically higher than the dataRate. + * + * Create a QPSK WifiMode. + */ + static WifiMode CreateQpsk (std::string uniqueName, + bool isMandatory, + uint32_t bandwidth, + uint32_t dataRate, + uint32_t phyRate, + enum WifiPhyStandard standard); /** * \param uniqueName the name of the associated WifiMode. This name * must be unique accross _all_ instances. diff --git a/src/devices/wifi/wifi-phy.cc b/src/devices/wifi/wifi-phy.cc index e7bbcd66b..6a4037810 100644 --- a/src/devices/wifi/wifi-phy.cc +++ b/src/devices/wifi/wifi-phy.cc @@ -114,7 +114,7 @@ WifiPhy::Get9mba (void) WifiMode WifiPhy::Get12mba (void) { - static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-12mbs", + static WifiMode mode = WifiModeFactory::CreateQpsk ("wifia-12mbs", true, 20000000, 12000000, 24000000, WIFI_PHY_STANDARD_80211a); @@ -123,7 +123,7 @@ WifiPhy::Get12mba (void) WifiMode WifiPhy::Get18mba (void) { - static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-18mbs", + static WifiMode mode = WifiModeFactory::CreateQpsk ("wifia-18mbs", false, 20000000, 18000000, 24000000, WIFI_PHY_STANDARD_80211a); @@ -132,39 +132,43 @@ WifiPhy::Get18mba (void) WifiMode WifiPhy::Get24mba (void) { - static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-24mbs", - true, - 20000000, 24000000, 48000000, - WIFI_PHY_STANDARD_80211a); + static WifiMode mode = WifiModeFactory::CreateQam ("wifia-24mbs", + true, + 20000000, 24000000, 48000000, + 16, + WIFI_PHY_STANDARD_80211a); return mode; } WifiMode WifiPhy::Get36mba (void) { - static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-36mbs", - false, - 20000000, 36000000, 48000000, - WIFI_PHY_STANDARD_80211a); + static WifiMode mode = WifiModeFactory::CreateQam ("wifia-36mbs", + false, + 20000000, 36000000, 48000000, + 16, + WIFI_PHY_STANDARD_80211a); return mode; } WifiMode WifiPhy::Get48mba (void) { - static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-48mbs", - false, - 20000000, 48000000, 72000000, - WIFI_PHY_STANDARD_80211a); + static WifiMode mode = WifiModeFactory::CreateQam ("wifia-48mbs", + false, + 20000000, 48000000, 72000000, + 64, + WIFI_PHY_STANDARD_80211a); return mode; } WifiMode WifiPhy::Get54mba (void) { - static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-54mbs", - false, - 20000000, 54000000, 72000000, - WIFI_PHY_STANDARD_80211a); + static WifiMode mode = WifiModeFactory::CreateQam ("wifia-54mbs", + false, + 20000000, 54000000, 72000000, + 64, + WIFI_PHY_STANDARD_80211a); return mode; } From ec2b71250000f536e42d1ddf3688015c58d2b284 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Fri, 8 Jan 2010 18:04:01 +0100 Subject: [PATCH 05/21] bug 752: Object::DoStart is not executed for objects created at t > 0 --- src/node/node.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/node/node.cc b/src/node/node.cc index 72c85f194..8867cefa9 100644 --- a/src/node/node.cc +++ b/src/node/node.cc @@ -30,6 +30,7 @@ #include "ns3/assert.h" #include "ns3/global-value.h" #include "ns3/boolean.h" +#include "ns3/simulator.h" NS_LOG_COMPONENT_DEFINE ("Node"); @@ -108,6 +109,8 @@ Node::AddDevice (Ptr device) device->SetNode (this); device->SetIfIndex(index); device->SetReceiveCallback (MakeCallback (&Node::NonPromiscReceiveFromDevice, this)); + Simulator::ScheduleWithContext (GetId (), Seconds (0.0), + &NetDevice::Start, device); NotifyDeviceAdded (device); return index; } @@ -130,6 +133,8 @@ Node::AddApplication (Ptr application) uint32_t index = m_applications.size (); m_applications.push_back (application); application->SetNode (this); + Simulator::ScheduleWithContext (GetId (), Seconds (0.0), + &Application::Start, application); return index; } Ptr From 6275a156e67311cea07b114ac613b6e4ca582e82 Mon Sep 17 00:00:00 2001 From: Kirill Andreev Date: Mon, 11 Jan 2010 12:23:09 +0300 Subject: [PATCH 06/21] Fix of bug 706: Backoff counting when starting NS --- src/devices/mesh/mesh-wifi-interface-mac.cc | 10 ++++++++++ src/devices/mesh/mesh-wifi-interface-mac.h | 2 ++ src/devices/wifi/adhoc-wifi-mac.cc | 7 +++++++ src/devices/wifi/adhoc-wifi-mac.h | 1 + src/devices/wifi/dca-txop.cc | 7 +++++++ src/devices/wifi/dca-txop.h | 2 +- src/devices/wifi/edca-txop-n.cc | 8 +++++++- src/devices/wifi/edca-txop-n.h | 1 + src/devices/wifi/nqap-wifi-mac.cc | 2 ++ src/devices/wifi/nqsta-wifi-mac.cc | 7 ++++++- src/devices/wifi/nqsta-wifi-mac.h | 1 + src/devices/wifi/qadhoc-wifi-mac.cc | 13 +++++++++---- src/devices/wifi/qadhoc-wifi-mac.h | 5 +---- src/devices/wifi/qap-wifi-mac.cc | 5 +++++ src/devices/wifi/qsta-wifi-mac.cc | 10 +++++++++- src/devices/wifi/qsta-wifi-mac.h | 1 + 16 files changed, 70 insertions(+), 12 deletions(-) diff --git a/src/devices/mesh/mesh-wifi-interface-mac.cc b/src/devices/mesh/mesh-wifi-interface-mac.cc index e5404cbaa..351cb4d75 100644 --- a/src/devices/mesh/mesh-wifi-interface-mac.cc +++ b/src/devices/mesh/mesh-wifi-interface-mac.cc @@ -720,6 +720,16 @@ MeshWifiInterfaceMac::TxFailed (WifiMacHeader const &hdr) { m_txErrCallback (hdr); } +void +MeshWifiInterfaceMac::DoStart () +{ + m_beaconDca->Start (); + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); i ++) + { + i->second->Start (); + } + WifiMac::DoStart (); +} void MeshWifiInterfaceMac::FinishConfigureStandard (enum WifiPhyStandard standard) diff --git a/src/devices/mesh/mesh-wifi-interface-mac.h b/src/devices/mesh/mesh-wifi-interface-mac.h index 60bb5b0c5..5c74f3f5a 100644 --- a/src/devices/mesh/mesh-wifi-interface-mac.h +++ b/src/devices/mesh/mesh-wifi-interface-mac.h @@ -179,6 +179,8 @@ private: bool GetBeaconGeneration () const; /// Real d-tor virtual void DoDispose (); + ///Initiator at t=0 + void DoStart (); private: typedef std::map > Queues; diff --git a/src/devices/wifi/adhoc-wifi-mac.cc b/src/devices/wifi/adhoc-wifi-mac.cc index 44af9e4d8..9f1fe354f 100644 --- a/src/devices/wifi/adhoc-wifi-mac.cc +++ b/src/devices/wifi/adhoc-wifi-mac.cc @@ -298,4 +298,11 @@ AdhocWifiMac::TxFailed (const WifiMacHeader &hdr) { m_txErrCallback (hdr); } +void +AdhocWifiMac::DoStart () +{ + m_dca->Start (); + WifiMac::DoStart (); +} + } // namespace ns3 diff --git a/src/devices/wifi/adhoc-wifi-mac.h b/src/devices/wifi/adhoc-wifi-mac.h index 2da19ac70..66f4798d9 100644 --- a/src/devices/wifi/adhoc-wifi-mac.h +++ b/src/devices/wifi/adhoc-wifi-mac.h @@ -82,6 +82,7 @@ public: private: // inherited from Object base class. virtual void DoDispose (void); + void DoStart (); /* invoked by the MacLows. */ void ForwardUp (Ptr packet, const WifiMacHeader *hdr); AdhocWifiMac (const AdhocWifiMac & ctor_arg); diff --git a/src/devices/wifi/dca-txop.cc b/src/devices/wifi/dca-txop.cc index eba746669..1e1e59453 100644 --- a/src/devices/wifi/dca-txop.cc +++ b/src/devices/wifi/dca-txop.cc @@ -268,6 +268,13 @@ DcaTxop::Low (void) return m_low; } +void +DcaTxop::DoStart () +{ + m_dcf->ResetCw (); + m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ())); + ns3::Dcf::DoStart (); +} bool DcaTxop::NeedRts (Ptr packet) { diff --git a/src/devices/wifi/dca-txop.h b/src/devices/wifi/dca-txop.h index 370bd7c31..2a805dd07 100644 --- a/src/devices/wifi/dca-txop.h +++ b/src/devices/wifi/dca-txop.h @@ -121,7 +121,7 @@ private: // Inherited from ns3::Object Ptr Low (void); - + void DoStart (); /* dcf notifications forwarded here */ bool NeedsAccess (void) const; void NotifyAccessGranted (void); diff --git a/src/devices/wifi/edca-txop-n.cc b/src/devices/wifi/edca-txop-n.cc index 68b9f8db0..43b002858 100644 --- a/src/devices/wifi/edca-txop-n.cc +++ b/src/devices/wifi/edca-txop-n.cc @@ -686,5 +686,11 @@ EdcaTxopN::SetMsduAggregator (Ptr aggr) { m_aggregator = aggr; } - +void +EdcaTxopN::DoStart () +{ + m_dcf->ResetCw (); + m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ())); + ns3::Dcf::DoStart (); +} } //namespace ns3 diff --git a/src/devices/wifi/edca-txop-n.h b/src/devices/wifi/edca-txop-n.h index 298eb2700..75759d9fa 100644 --- a/src/devices/wifi/edca-txop-n.h +++ b/src/devices/wifi/edca-txop-n.h @@ -132,6 +132,7 @@ public: void SetMsduAggregator (Ptr aggr); private: + void DoStart (); /** * This functions are used only to correctly set addresses in a-msdu subframe. * If aggregating sta is a STA (in an infrastructured network): diff --git a/src/devices/wifi/nqap-wifi-mac.cc b/src/devices/wifi/nqap-wifi-mac.cc index 437de6108..c3e4bbd9b 100644 --- a/src/devices/wifi/nqap-wifi-mac.cc +++ b/src/devices/wifi/nqap-wifi-mac.cc @@ -606,6 +606,8 @@ NqapWifiMac::DoStart (void) { m_beaconEvent = Simulator::ScheduleNow (&NqapWifiMac::SendOneBeacon, this); } + m_dca->Start (); + m_beaconDca->Start (); WifiMac::DoStart (); } diff --git a/src/devices/wifi/nqsta-wifi-mac.cc b/src/devices/wifi/nqsta-wifi-mac.cc index 571b6ebe4..cae47eef7 100644 --- a/src/devices/wifi/nqsta-wifi-mac.cc +++ b/src/devices/wifi/nqsta-wifi-mac.cc @@ -686,5 +686,10 @@ NqstaWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) break; } } - +void +NqstaWifiMac::DoStart () +{ + m_dca->Start (); + WifiMac::DoStart (); +} } // namespace ns3 diff --git a/src/devices/wifi/nqsta-wifi-mac.h b/src/devices/wifi/nqsta-wifi-mac.h index c20046a59..4c148c8dc 100644 --- a/src/devices/wifi/nqsta-wifi-mac.h +++ b/src/devices/wifi/nqsta-wifi-mac.h @@ -119,6 +119,7 @@ private: BEACON_MISSED, REFUSED }; + void DoStart (); void SetBssid (Mac48Address bssid); void SetActiveProbing (bool enable); bool GetActiveProbing (void) const; diff --git a/src/devices/wifi/qadhoc-wifi-mac.cc b/src/devices/wifi/qadhoc-wifi-mac.cc index a2bff3114..a4b32714d 100644 --- a/src/devices/wifi/qadhoc-wifi-mac.cc +++ b/src/devices/wifi/qadhoc-wifi-mac.cc @@ -108,10 +108,6 @@ QadhocWifiMac::DoDispose (void) m_dcfManager = 0; m_low = 0; m_phy = 0; - m_voEdca = 0; - m_viEdca = 0; - m_beEdca = 0; - m_bkEdca = 0; m_stationManager = 0; for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) { @@ -445,5 +441,14 @@ QadhocWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) break; } } +void +QadhocWifiMac::DoStart () +{ + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) + { + i->second->Start (); + } + WifiMac::DoStart (); +} } //namespace ns3 diff --git a/src/devices/wifi/qadhoc-wifi-mac.h b/src/devices/wifi/qadhoc-wifi-mac.h index bf65b0299..48859f21a 100644 --- a/src/devices/wifi/qadhoc-wifi-mac.h +++ b/src/devices/wifi/qadhoc-wifi-mac.h @@ -78,6 +78,7 @@ public: private: Callback, Mac48Address, Mac48Address> m_forwardUp; virtual void DoDispose (void); + void DoStart (); void Receive (Ptr packet, const WifiMacHeader *hdr); void ForwardUp (Ptr packet, Mac48Address from, Mac48Address to); QadhocWifiMac &operator = (const QadhocWifiMac &); @@ -101,10 +102,6 @@ private: Ptr GetBKQueue (void) const; Queues m_queues; - Ptr m_voEdca; - Ptr m_viEdca; - Ptr m_beEdca; - Ptr m_bkEdca; Ptr m_low; Ptr m_phy; Ptr m_stationManager; diff --git a/src/devices/wifi/qap-wifi-mac.cc b/src/devices/wifi/qap-wifi-mac.cc index ec9a8d6f1..f0a42c66a 100644 --- a/src/devices/wifi/qap-wifi-mac.cc +++ b/src/devices/wifi/qap-wifi-mac.cc @@ -791,6 +791,11 @@ QapWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) void QapWifiMac::DoStart (void) { + m_beaconDca->Start (); + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) + { + i->second->Start (); + } m_beaconEvent.Cancel (); if (m_enableBeaconGeneration) { diff --git a/src/devices/wifi/qsta-wifi-mac.cc b/src/devices/wifi/qsta-wifi-mac.cc index 1df061ed5..1b6c11c7f 100644 --- a/src/devices/wifi/qsta-wifi-mac.cc +++ b/src/devices/wifi/qsta-wifi-mac.cc @@ -775,5 +775,13 @@ QstaWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) } } - +void +QstaWifiMac::DoStart () +{ + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) + { + i->second->Start (); + } + WifiMac::DoStart (); +} } //namespace ns3 diff --git a/src/devices/wifi/qsta-wifi-mac.h b/src/devices/wifi/qsta-wifi-mac.h index cc151f35b..6c6fa2530 100644 --- a/src/devices/wifi/qsta-wifi-mac.h +++ b/src/devices/wifi/qsta-wifi-mac.h @@ -87,6 +87,7 @@ public: void StartActiveAssociation (void); private: + void DoStart (); void SetBssid (Mac48Address bssid); Mac48Address GetBroadcastBssid (void); void Receive (Ptr p, const WifiMacHeader *hdr); From 9626fcf1a544b22f42d0bfc61a1d9679f9743023 Mon Sep 17 00:00:00 2001 From: Kirill Andreev Date: Mon, 11 Jan 2010 12:36:50 +0300 Subject: [PATCH 07/21] Fix of bug 706: fixed regressions --- .../hwmp-proactive-regression-test-0-1.pcap | Bin 8082 -> 8259 bytes .../hwmp-proactive-regression-test-1-1.pcap | Bin 13024 -> 12626 bytes .../hwmp-proactive-regression-test-2-1.pcap | Bin 14332 -> 13876 bytes .../hwmp-proactive-regression-test-3-1.pcap | Bin 13660 -> 12558 bytes .../hwmp-proactive-regression-test-4-1.pcap | Bin 8790 -> 7967 bytes .../hwmp-reactive-regression-test-0-1.pcap | Bin 10772 -> 20780 bytes .../hwmp-reactive-regression-test-1-1.pcap | Bin 15544 -> 16470 bytes .../hwmp-reactive-regression-test-2-1.pcap | Bin 13894 -> 23582 bytes .../hwmp-reactive-regression-test-3-1.pcap | Bin 9793 -> 18397 bytes .../hwmp-reactive-regression-test-4-1.pcap | Bin 11487 -> 10558 bytes .../hwmp-reactive-regression-test-5-1.pcap | Bin 9280 -> 8304 bytes .../hwmp-simplest-regression-test-0-1.pcap | Bin 77039 -> 77039 bytes .../hwmp-simplest-regression-test-1-1.pcap | Bin 80402 -> 80402 bytes ...hwmp-target-flags-regression-test-0-1.pcap | Bin 10632 -> 10533 bytes ...hwmp-target-flags-regression-test-1-1.pcap | Bin 14952 -> 14975 bytes ...hwmp-target-flags-regression-test-2-1.pcap | Bin 13418 -> 13263 bytes ...hwmp-target-flags-regression-test-3-1.pcap | Bin 7392 -> 7304 bytes .../dot11s/test/pmp-regression-test-0-1.pcap | Bin 851 -> 851 bytes .../dot11s/test/pmp-regression-test-1-1.pcap | Bin 851 -> 851 bytes .../flame/test/flame-regression-test-0-1.pcap | Bin 5894 -> 5244 bytes .../flame/test/flame-regression-test-1-1.pcap | Bin 7192 -> 7298 bytes .../flame/test/flame-regression-test-2-1.pcap | Bin 5552 -> 5180 bytes .../test/aodv-chain-regression-test-0-0.pcap | Bin 7278 -> 6938 bytes .../test/aodv-chain-regression-test-1-0.pcap | Bin 9184 -> 9076 bytes .../test/aodv-chain-regression-test-2-0.pcap | Bin 7350 -> 7450 bytes .../test/aodv-chain-regression-test-3-0.pcap | Bin 7292 -> 7292 bytes .../test/aodv-chain-regression-test-4-0.pcap | Bin 5050 -> 5050 bytes src/routing/aodv/test/bug-606-test-0-0.pcap | Bin 5726 -> 5456 bytes src/routing/aodv/test/bug-606-test-1-0.pcap | Bin 6748 -> 6368 bytes src/routing/aodv/test/bug-606-test-2-0.pcap | Bin 5090 -> 4790 bytes src/routing/olsr/test/bug780-0-0.pcap | Bin 90950 -> 91032 bytes src/routing/olsr/test/bug780-1-0.pcap | Bin 96098 -> 95830 bytes src/routing/olsr/test/bug780-2-0.pcap | Bin 103858 -> 103402 bytes .../test/olsr-tc-regression-test-0-1.pcap | Bin 2372 -> 2372 bytes .../test/olsr-tc-regression-test-1-1.pcap | Bin 3444 -> 3444 bytes .../test/olsr-tc-regression-test-2-1.pcap | Bin 2372 -> 2372 bytes 36 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-0-1.pcap index cbe7163ed62b1c9ceefe2f0a0ba15522fb0db8a6..8dd79250e723b83b47e9ae07a76bceb9a5c395f2 100644 GIT binary patch literal 8259 zcmd5>U1(fI6h5=bP4*{o6MaZ@+sz8K^(ASfZGvd)7ECNsAsA7xRJZ=oNW_R(sd;cQ zg{C#dD1?GOSo^2OMq@yuv_h%Ah*X0X6@1bMiHP`MA%c*2&dl68=&N*{3x%BDW8wscfzpbnQ49Su zj?(bv`X?TJdhe!o24}KBeMR2+`_0f>2lNBcJ|0&jjQ<}JzCQ$T6$+z%sVt;|;D9d+ zhbxWldl6s&XHmEFZ-G4H{8bCYa8Dq2k1>V)9Y+ARBR2JN8DNDsd;tjT%imyP7h9yK z(9Agx4#FZ6))td+;SkVRFaed}bMX4_7OeFpMS{Oz|EYv;QG&5xLVKj}&ZK2Y#Hch` z!Cw-zbl{W~mn5Mq$yvlVqzhz}{_4vLdp{sF>D^V@mz<&w68-|hG)jn<&t9>x*R20f z95R%C0r3s#f$fJ*0NjR}Qn!ag5em@P0eGd>Ou*yU@Mm#p3Pl0zJqgf<->EN@?cQI2 z+iw8Y!NkuMNc=6ZMkQe6jKer!=%`t!;LtIn>bU7tC4>BoqlPdoKMn|C3~hofFvwA< zEoj1?Ivr~eu?BeM21(>igY3XhHiInfXK^_u0Oi`S{Y#b{bHvCoe{?3HAAdpJp0rv7 zyJY960hopxlZ%W!$D*05EthhrDN$3oHUrgzPDBk;Az9~}387-VngyX|_RH4{z%+cG zMKyD&D5~3<61C-AuYu~pSBR>s>9%IKP_ymHvj$)q9&bZ6&$UER-PV+-?Yr+YP(2ty z)KE=|2e&ngLd}kr9}K`WWI9mI-R)7-UmjqN_$i^oD+#3zh3E-|zEC42zj#oA^YsWr)a8wUk z(NT5JKYpSScH(^M$uWJG(zc&0tVN12JxwM{Hem4q4fQ~u0J3SuJTV)e_&2i9MGae4 zzp67}0nJ+m3UrTP3nOQIL?MOd(ZHdTjTJm&^C^{;rS8tkbejRbbyXudd0NHRES3>A zkl0yRQ?13WpRusw9!;DF-fe_gyi-q(Nmjx&rBw?!f(_S-Zju!_b(!9atpK!AWYO~s zQZP(kuS_HTOQ^q5esRrdbRI`{;+=ZL6Qx}XID!qmCDyLoTLMq?XgXp4`d%z{lbGF2 zQwf_FV-bJg9t|j9Z0;_MBW=lvIRJBY7C=Rug-zeSgo}mjYT{y~|8ETzc07P+^!cP^ z?X&l>?|O#MuG}(_pOwXdmitu;U>@E_TtzP79y`!Oj*yA-kFdQ1e?B zc0m9gc-yjeS^!P@?9>`lq=!|&&b_CUBvH4$uw%(pF$NKlrt*j{Mv-M%kh1HX8nnyhA_>(lR}t(3gv4bolroDT^erc!z4PkEt>P(Rft6GU)N@!deDQYVG{itgam>O literal 8082 zcmd5=Pi&M$6o0ebrQ6+>T_n<0v|Sb9By6gdG-_F+t%h*eP$AJ?Hh~&RN&+DvCB|e; z4`Sk>2Z`x{L<@={gh~|I)dR8NfZEstkr)m=c(4}_q=ByeEZoL*-kRw zzc>4P@Au}tH?wnd?()Y8N|M`FR)`KcFYjC?+KXrI3)Sb;*A97WcdtFPTi{uw-+!QM zOYxP;_|wV5W5?cns!Py?9C2T9?(%(rcD4}zK(&{@(KMX=KQxS8C0Y+<+;3KuR#F`B zvai-inyeF*F^apLf1Y}TE*`zqDU4h*-EtdF; z@8-><94*J;@gZlUyMV~u9{nXM&`>Yo%B_O~`{YLXtS;?- zs1xlT(crA9zB;&91r0$B_l0U8cRbDodg%!gyJ$@Xl=MaFGF(U-n^{n1 z=3oESKuyuI0eBm+-#DXOzz@zCfEoHT2Qx?WVKd{sSyX0r-u>G^P0=X>Fy5OEVAnHq z24IFxb;8VhxcJ`W@QwFoNtxMu8dZZIwPh(q{asL}&W_26C z1Dvr8$V6miBYBImKtVa8l(_}Pwcal%y0S&UMO0WX_nm@bI%HVb9WryKmG;0^?&-;3 z*$&j>96bUEI)9!`O0PqR(Yhq@C!$bR1*7DV8zW%9>9q?FI`M|->5jF`1tA-xiaKXY# zMhtTY?IAd?Q6p7ugMi+S~W6Rx1C?3?DMPMKN z%EHQT;SJ;Xb~JS z)P{H&=TY~kF}o{QEbP46y6dWionBjWWo2qG!^64IGKniH zZ~-S;48RQC+KM%OaGSoSbD{4{M*SaW=`a#(7I*IUf>eP7%~p_*RLv|%Z2x}PZ%-hW zUbL|bBv1*X(1OdC3NfEuQ$mdG|6`qnolGE>9!y*2E|5S+n42t#d<&F^HNY-@Q(R%Q ziMB7kX2g4nCX7&z-xOCQ9_{FU+yKnb#C9amA};=>nBBY+I}szqq?=j#2KEw-6R4_m z+7bvwve^lA9QGURWQs7mc^kVx0+kgzTLSs)nwCHvpIO*>3G~+ImbnWg(3Hzg-(#xs zum;%0uRu-#=&znI;yp#(JHnwJzXG{{^%o7m40ZP-fvULp353O`!3xCE_!a0QH3_x^ zLX0*uf!O}&6^NzrD^NwTvn7zvt|{KU@)Saq_Vxnc zP6m=}aqh=sAl<9@LeM%{Fk7Zoz z{bLzj*^~2;4pINJvW`O%J*Gnjgxw*Ve%5TX9?q}I#@}tHC6Y2T*<@R%mF>M?gKPpOa&Hw-a diff --git a/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-1-1.pcap b/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-1-1.pcap index 96730b748f0ae6e0eb23583b80a14481c39ec34f..1f768d2d8f3a369ad5082f211408160717c7ae7b 100644 GIT binary patch literal 12626 zcmd5?Z;Vvc6+ds;VRvVCI}3h*y0SZMEEp4DX%*7S(jjq)v8ADEVj@A;)}|F{x~3nD z(hpNf1a;M=QHe4BDT03hD~QIZm|*;(F|CjoHTa>?G-x#1)U2g{jQBhE-goD|ch1}E zN_6HX@4cD1Z+_?g&N=sY&z(1~zx3pvJE)V=cJd_A)$YydTZvZUH6M)z(Mi)xXJ2r} z%bN})@AD@~_r%=!XAWO5wrPOQ>HO`le*YVDA5JTQbrG(79BD8jnnmd~uW=rv3lqF< zf>?+j%ui@vmH0U6uIBv@X~it!FW9zhTVP?^*J0sPSoju<@$q`YS|vMryt(&gqIJ0P z;ThUq@2$baFbp|P!>*Jh0l&S#7uGE@EZ%ubz&`bF#(MuL`ga#B6x;s@neS@s8SRjhm8zc8Wn@?cGS1HG&9ijQ0#TLh0Yv0mhHiMG=FNj8~}->x{@nscEZ zo}sgu@GR=E!<4dH(^2e#@oN?PYU}?Y`#jWH)DS{@P&0B znPWSNMiC)Cjx=;puF?75BdU3A>|^k4r{RQ_bOkzYKcde7`eVH2!)sS&_SUIJqeB2S z-^c)(PkNi^(Re2FZ|QunX2S1}D%V7-WJ{i!i8!47zqJ415f( zN3SrJao0L)EP=<+yt{Uow>V{tefMF-n0ME4^cJ|w4hU!Cu8u+Jt_$#y=B{7gkQ7Ox z2Q_0&u0Nqj;%!0_FFdQ8*5Dg_aPP`13*F_l$1PKQyJ_BCJMlKJyL{KGUj+Qp+Qq^- z-5rj&s}j2FXMod71vYk{W-Q~(aceAHrqb9nm#NU$nqMl$yt{g?Ds-1))(>N-OF9On zyG9e;T_XVX*`=n#j2IjToN$*$2kT@10%rQ{2x-_m*s_ zmZ`z2sFrcho;~dD?%61rX?7>^M?}?fl9cS-cx66g|9$77LhRlg_JWyWuiX`5yPb5H zq}Ys`R-qbSbK|z*t)!#14ER3o*Z^!10+S%z`;=xm%-E`1nJZ)}tC?87cDG{L2Y=hc zA?Hl2D%PLQa+S`QsXs>^39+3&&BSrPfHYYRvY%$c>gl}-D?cg!v9F8v1CfvJEtyDK zuU2a4K|==e#aZTMqQUR$bBH+qIF^SK>Y+{i={M6jAEq#Vku7HA-20Qq6?Rr^T(;Ki zP^+|nU$h&$iN7f9d`7N#BFq{sBON=;!orL+v(T$YiM_y{yQUc1smCziihT;1JyPQRaZleq*xgy-*!lI~zZ$#Dda%xpG`k+;^{ZveKw zv-I<&-Pj%KR@nL2eb}S0GqW<4RL@RIY8%8Z{(I6G2ZdZ4kS7l{#*t zbMD96g-n%=OeJ>CndEF*cDf)%r0J~j^QpeO;VfeS|U0;{^BZ? zd(Vzmsr#9mUZu7HyK4%oRAx67tx`QZDXDG1E?%WJI5tEhcN`EhRW>q}tXQ7cs(6*! zFrYMY*LnqYas-n4u0V}fsSb73jVAoX`C|$MHuiV) z7C6L~c)iXc$&hr&;{eD%C}q%h&j=W#4hbv9N=$ zFWh!9yA9E8*Ab4KUL&*tyZZ~bUCi#Udt%!z&ra3|ZNM(R?V2>fq0!-^V%;s9bvJoS oEWYt=SBkoPvx2&86g9$@Rrw`7zU^|TYtEb}P)oENsLdMT3*Ui4j{pDw literal 13024 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 Ho4fx5bX7{e diff --git a/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-3-1.pcap b/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-3-1.pcap index 87b257b5c4b5f7b67e2f63398b62219cb14b01d0..6e136d88cbc4bce8db9c9ad2361a5af914b4f43a 100644 GIT binary patch literal 12558 zcmd5?Yitx%6h6~-X*+AXEtr5*+EoyU1}vdKR0=f$Q6i>N6BA!4J`#CoN~%9d)NCLT z6p$(kKZx@70gaYce~6fX_(OxHMH)j$)Q}iLG-!-KqJs51_s-m%*>k7EiqgHw-I?7x z^PTgZbMCq4&TRkT?(IcXLVg<F?{<4K% z2*2tw`Sq+FjNcy^HTGTef7tiabr$*Bcd+T1^%nc;QO~|<^6U$^TLqfFtIU6kOwRT#IN_hX0qf4`Q0@6!5 zEYdYH)H|_*XfBT2`!e=ZCD2!)nZyUZUGE#yuyK8c=03>TMC3G(oHBv=dIJPxnOzJTfI3J})nwz5ofV8~6SU zKDcRYoP34RW*oVj=+L7cAxtM)Pnz_nhd|6TYH~ z;fTs692I~rtp}hZQQO-hQMIX%6E$jEy9IS(8BlAS+`u1upe%;GkNQcEKuu5^P_r|M zC-99ZOa>>P)@r7{_)P%1G>O%es662#P(AV5zUG!#eATQ+0}T9SOv8DJJRLR{-{jk0iAV*_br0b9 zZtndVHSVq0eBYZkVWE1iRSR=a(xI7pZnOG|kC3o=k6DB%-C0=q{?bRAMEA3O9!!7<2ymg-j-3h(A$`!icu|z zVoFNZj!XJ>(zfI4cwhmrg|Ae!@#rp_WE~h$_#&RswUzXVb%v7DyL=q>y>G&|2F6^?5Z^9(P#Hq*ahc! zGObljk(%V5T?>ZYM|&;ojPHKzw6Ih2-;38QyI{N)47<%;!TA=-P~J?h*WST=i=63d zzL^Y_;2YTUpG9MP8OmUf$rt;~zM$T=Ig@5Jc&$nE!8%)2X5~>b8H4q{2<+&1{=PdX zIb<;}ryEw+=F4hQPY~Pkz%1Fs+A^!)T=CZnR^D4L)LDqtPrw$eOdKEi&>}e$$4v?n zl7n%4Ns@2<*dkeBv%-t_TV{~b%g^}DT5>q!=guI9Ga!{C|6Sqiw*vYLyP8#{&&Dpa zsu*^`Ri$9qRUfdhGf@-2RrA=5@4Q#+09>l(eTCcx#BbGn)U$F^1&EXyH^;Fzogsw+MDBaGBi+dsoBUJl9bB&{{{Vp?^NvZ=t9@RE|gLYJDE}ofZc0J3p*2;@ehDnweKb`ST53( zOWmCOWUh*T0OX@?l83s!eJ=@bCFBRehZOyK^x%i_CGN;T|cN-Y3( zhito8lTvTSE-)f8wFgrj+IO~;nq@a+DRs7O7i&`LCL6m@N;T|cN-Y3(-(nXo=ADVm z_$swc`)=AVuZlF~QVS$0@Dwf-!OsTAYbd}1Z@m1} zRce>^oh_wi*$qibW&KM~hl-@5QYw!=7+a+pb~2?F0J|-bRVuTKuTnF(3axR&K9Qze zI?KsV=BoHAHKRbO@wlufUFv8A>PnFTZETv0dMn7 zPhEhY^_^&a*f$LAI~%8Xj1ctAVZaFns@meKs?!!>p+LxJVg5T&Us(2?Xi(UGzzJc> z6nxe5*F~C3mw$Na<-HS?=DNeNn=5`7=hZN_k^@=|b;%LEi(`|;@8S;PDm2@Ju>xQh zy^CXZ@w>Q#%+3B_tN_@(6}gLJc3<1xMe4kuXIQFFk+VJ+%d#7?lH)t*FDA1oIT~Vj zafY2NISPQ?Gm*PE_Feogu0#87Zv9cQjJxy(7YA}JkKe`ls4L`t%cUuEfjVwhZiNuP Si}O)G?-9BtXa!KSCC5J+<~IHS literal 13660 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 ALI3~& literal 8790 zcmd5=O^g&p6n-_k!_KlYvkM0>;_MtWMx$YMfemV8B!WhaS(ZQb;>1V-h7C*bH^yWP z2QbmN#zZ{vYfzBD0xB_jATfrBKiR}JTunTPoY0Fum-YLqx_i2&s=FCPW-F=b?x~vh z-uK@3UcKq5uTCAvNvDKkdRk;l@bLO6krCW;PS)=?-_FsOV)$8>M-}c>;mx@VZW(x_ zwsmpm=%yW;2Nx(gRuazX;HsaO$xw&z2WGr;I;LUw|DoZ;Cn7YKbExP?e z%F9W)sEoI{#F1aD+<=)-Ar=_;{BHp}4-JkxjckY?TcTWtnN?#&u@X8AeuyZO>abkQ zVRguNv>VCLzGbNgy`_DiMf40=hveuvJzjx^Wc}x`>d?hlXRIh)4P6@AcMW;88_BS4 z`-qa|xN`c*T9t~d>=%4;%%R}j^Yp#>C^l4ytXLNl=grKP#4TNaO~t*x;hKv3dZUt+ za02IK-JggRdFWPA{mS?%=D!c{jp~Z!Zm{E52z3Ht(V>zNkWxG#<4>eTzx<>}nN_NX zjWPuSU_{a16Id&jvLg_e;E;gIq!ApFE4vQ44`2Bla%MEK+(kmQHEQ&Xr`!#y=5lwT z*qu~AqlD7}yNeex1ro=hyOrF7D`%8LR>)96awzzw?B-;sE2mH&Oq?j;c9e9dLg+Yf zbstvm#FaCWZ%j2>iZ!XosvCrx5u^@%fj4nI;ghU?#nq=!mmSNk_>aXc&l}5?WJ1ma4FqS?VH%L3f)$M36Ms5n z2m;Dw+InPd!97PUZ;rQkl88P@OgyRK+`2*vPmZroTiv#y;GQ#1e{ZKd~igpc(}LQ^_5;_ zFN9I5hQ7Ljj)YOntFT?B_ClXWyOzw=L9CA8${FRmrG2M` z4bh`3&tgiaM&B8$cE=%~a5!z>)57eGtYQ~N{~tqXJff`MabP)zsm1w8vAP@5+3s$_ zVoGsu;Ixaxg~jgb#jWkjB^{S0+QnX2r~3yJI+&n~J1zVY56#CVcfA0ik&WTMFN-|2 z49KN8vxql5W|`Z?DfFx=SB<&_#^C@u&w~oY6fMV`@n> zr31gt7<8{r#Cc({Jz(U3u^+rhWV_}?#CF|E(Q}6_*}lj}zR@>c&go3jCPeI`>}O7< zMddxLrsr^kYGJFW7M_mF4p3PUuWECVUGa#A^?}9*^+DfRs4jo*K^5h2{}&#vSvfqc zMT(un&0JH=Ch0~lUFS?%1pAZgM0P(Ipu6qejcMn2ctA|R7o7f@Q#GFQ)f^C_oi&H{ zS7C$WDIIC9ZUcuLbQS|^A-XsN4G(4jx@EIH=(PPrx4FlI&SLqPLFZ$616^BKPWxYm z{Z8!kdB@f4Znb96En56i7R%YGI6Tmrf|I>x*vRs+92{yl%WLR{98X0ofBTRJoyGEc zh|XpC3_!Q!V-LEB<CFRo9mJ}mEPk34 zMQQ(rZyrMHpTm#!u$0~PeWF855ibP}$(3D)JdQ5K=a3aY#BB5iO;iguX151H5%#qQ zfZy)I*_+rNFgD9G+k>;%h2bllGXULQyf|R)a8A|n!J!FBbg!X#U}@xx{=iu6!6a5N ge1)@tu5E?$EnoAaO9jzow+G`IoUEFEA+2!!3m|Jr#Q*>R diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-0-1.pcap index 8e2ed37dec32e1f59030b01dd8edd0e370c09e35..f9b68ed2af9380c93138a0b98db753d14f5415c0 100644 GIT binary patch literal 20780 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 HI063$@(&f2 diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-1-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-1-1.pcap index de77ff16d124ac9b8ebddbd8cbc32bca1e21d0e0..74c49389b42bcc1368f1a7e8db0049fcc9effa9c 100644 GIT binary patch literal 16470 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 literal 15544 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 Ip%%;iKLsbX(EtDd diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-2-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-2-1.pcap index b5d6c17f1b04ee17136bb6b0fc68c273b4bdf941..682391cc427dd556e09db1c1371b804c98743b9f 100644 GIT binary patch literal 23582 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 dGY%{lZF^zF`wH8HJ^#0{vUjARonmo diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-3-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-3-1.pcap index d8bf4dc1cb514a0c6a1821f9f07db26d6dbb20e5..2fdcea22d9a07a4d29e5b0fc8769f2cf92dda6c7 100644 GIT binary patch literal 18397 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 JAH1E5^&h*87K#7> diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-4-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-4-1.pcap index 8598cdad95612fc96bb1b4fa1b560ad0ea36f268..7958ef642ed34b82ca452d55f0b27d0f59e60265 100644 GIT binary patch literal 10558 zcmcJUYiv|S6oBXMqx)!(jgPdx+FLCkZ5kR&K@BA|!Ae@tMj;Ui$wD#FwnkzjMEZlR z^#?74KzV84M>Rf@7Lkyc5H(UB`h!N(#3KIC%D*ZL`5)7Dgsgzi*fSYIW@w|rgzyR<>!z(K{Kks! zyR)>ic1^nTezG+3%8Oku(dXc0<{Tl7@Qz(##pyHb6+WKZudt$IDVegoz={zEh<6tsqYUj?n<#MeP<_~u7K9)+;NK9-Fo7N+LWUzMXivK3A!>CEy-Asq*BUr2?(%R znPR1sN@e*7u#_swD7=b7-YB4oy6f(R9*wP>bx+>Z*vgX^VcpNcRw>{sS)y&>w{d{I0g8hp(QYzlk%-*s6%>m8qJ#pGP$JzgSNYJ3oxpUPp zb2w-XRY!x?u;EzH8g{-Nw1&=ig4PfYh18Yo*Z&fOFc=(V)?S|bM<|FLVSou!R z1_`v(g%*VxwRX&xhk5L~n3^U%tKzhnCh0L0*Bsl<;Y2?If2d&V=6a>lHy0!SJ&-DVkJraUK0UlgJzhDZpS1i6hAMF@TcvZQ4dv8Uk^ z{SMi~(0$kmiCvyA8*@t|@UcsV;NiatB+$yvwrdR0Rw^4JS}z=Bv)dYv=dKkLnMHII zXpVb8gMK}uv<;+6Vev#}rhvlYYOh?T(N5=w+M7U{dk+C+EwAI5SawiD@$y{yKLe>U zdyn;RWM>~Wm(>V8o)wV@=w%msmv!2yb#ZLzFEwMMMHi(LAXV11rz8_g$Qg7^V@YQ@ z2?^%nvI?GpW=HmFg7s{f9IWOYG#V4y!j1hJV8oVz)rU>nj+9l1|CyQ42F*wOwjC&a z;%F}EHIORN;qicN@v93=Oxb^o_-wjZbi|0eHq2R-n{&|z!y0pLTqv3o^J50OPv+xU zH3d&VgRF|vpKVq}wmGXh?DBlsS0N4ij5{u6?6Q2>=8T<&*+HxMdq`vC4;RTsHm|BQ z<&h;#qZ;5pH8Rk=s@p0`&6Jikc>nr%47M%cEsUjv-CSq7SI$bs8V4Qqf~+e9Gl70fog z#zxo?9?}3m*(L+cHsrw0XGS$Zb%Z&t4EP;Ht9W>%R|a^qij^4dMWAc14CrrBs=YGs z{10SMdtJw1 zc(1GM{5=LcEgFnFBzuR0{0DTWd3vrv=}G_F0zSX(BA+@0>Fi{IgfDb_XZ+^NJnoRL z8`l+w2$y-N=~K9QP)>**Ta4uC3wA!9_FM@VGIjzJ|G;*^`T-XRSr%n#+9w=6U;ig?O(42Zwc*8_U z&ty^sMh3cNpt<~TU~gTu3Jg#7h(I)?*@iY7Vc(uA6&R`Om4Rj(a$x^>iwX?y>63wG g8`iQB9$eh40wd%7GSF;84jg#BLj{Hx9~6QA0cOC3nE(I) literal 11487 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 MoJO2&3AJVWe=2cp-2eap diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-5-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-5-1.pcap index 76da658c2c4c930cafcf2392aa815a98e007f6ec..f7d66c6ff4c4e2806c5a0dd5fb443e9e9f32a187 100644 GIT binary patch literal 8304 zcmcJUT})g>6vyZ8-eo_qvN0x*m@JE88^GF)6i7cHU@A61mGr};5>fSA&aoXl4A#d>?PV6V-Fx+ELrwQ4ljSfbIPq?jLx3c&fEAqi( z71gPueZxk$!`lQ*ZsEe__uyrsQ%7x3nwyy1t*t0D_?wvE8o$Zf(0j+9;$`r zTYg(ObK7qVQ+NEfFn!l=3m^UHw}lVy5%L@?blCO#bdn?juurqSIY64i0o;QFbaBLw zcYYEG+H5otVm}k|D3Gvc((r+eof6>Y)m6^2`oVvjqwXzd#}?3lvR69K|$ggDZA@5cr%b z28NV5g{<;&aXQYb*aa}`k#SGW8WZYQ+)t9|z}y@@Gm#Q_#z=|H%gI>GvP#&u;SRq> zC-e;5C$!zCr!+u2DFe-!&w+bBzp4SA-Yo*1bw5vb^30Dj4AaPZI^{G$DRX^Eq7{w7rSJjIrj6+!;{Gl4RHCG3^d1{15XVP zX@JR-A`mxQvxW=I!=A-K4RH9B3^Z%VfxWvfX@HA8GSIBy3iEKFe@X+~)hh$d8gk(4 zUtiS#`v*i|7;KxTe4lwZ{POaafQO(CP|nQk5XTD(D7|v8An2JHi)!3B2|<^%l?44; z9Mx75p0ajUJbD= zpKZJaVW%ECAzcyU3U*&t#CQao7X{-12?_z((D7Ztx}n4=9B@yOL<55KTtI%;6-loD znDY2GD*qcP9*~iZ2TDMM|HGkDEl)<(Sa`HpC^8o8y+Cd*FM);p$#n%ryTK3a`gcOb z6dr`Wld%OQd!N!+ca@xm(ZZQnY*~UH1PMEXp}wzF7qb5!j4HGDsK4TrT~Ldf$}XGE zJ|tLwV6bLd1pW^&bwg1A literal 9280 zcmcIoVQdsd6n?wg?OiuOD*`P6uWKTp(3X~hC{Qhd5@RSfgeayYUVJ~K zfe1-yNQ5*oK;j<+MIuUqVh#Qg#5APQ9}Nj6#MB=s{4gT?sPE0pZg=<1-q3=R%rM`zBUB zR{van(=?c0((zi?>*6{5c((>%HD0Or?;%8N5~WPs<7W<@xA1-hL_#!HS#Y8ps1K{F z`2I93bb$UK+g`LV0dJ`f6y$FpvGL2VINF9+>iq>}Uyg>cOm3Pu4P56AF9<@ zm&j=G0*;2!Ypqw@XY}9KMJxpT#^SqQ3m?oa7GX`jhToXJX#bx1wNcwRze^B5UEO`% z085c)>WNI19E5q$J&k3m3$tO!il=MW0gbsVqKh`QM-!|ZRp$I4Sj>@dPNXE04Azb$ z)8hw=S?{=%Nefn`a)op=bE!iUY&Q$`%Z4nhz`sz}v!?*F4T~9|2bVHKmbJ=?Qb@Cs zR*w`-l$$<2g{^$keunBoLpBL`5JfKTrZ4cI{7O3mRBryoQ1AShfqD2p>fyo=OWbD2 z*|;#s1hHXZ#-@pH3tJSZcQKQanl!o=M;U%>Vq&h0;JX378{*&6;R_E5-<%Eg0tqU| zpJc4KaHTv+^PZnFe65NR(l*MqiW1xbCk*HiTF}pB3g~wnElyZ{lrSZT6A|R%0_dLrgl~3ax zJtpEa@3flfQGncMmzm;`ofi3-pA*>$1bdBGb{0mdvz)(jk4P3e(SlwF8ai>;xROLnZw8bo;zerEhSwc$Q<9jUmhB>P7ZvOMyvhN>aU`8*e0Imo8D#E{n5X1;KP zp}O|u>Lj3ffeQf7oMV8Vbp-*PwwX~>DUWG_R!BE-f>K!bIzb7$2B&JuR{%>38j|@r(`E{)!P{&H@Ek_u?P}^sKH~NbjxMB)#S==#*|Q=&5C>uKiM7640Cl z0pLG(8K7rPnu~7sEQq4YB`Q@ZPb%e0H!%xH*?Y|b!Zv3?m|@kU#r`w{(1JFo_ZMR2 zMHVsq^kMl7D48zG20jKZrP`i{0p7wJtCW6HXKK75hjAkW&*GK3el0E_XiGIgQwssb zH~R3%1T}(t2hTWc@ezv~jh3K?%vkJHbVM4n&>ptX*vH~4e#DGDgGYX5Ou&(`KX7zp zLTcV8c)mn+VLII;WR_96K@A2`m+3je{#R#Nh(M!lsBs>z)U&%aZxY;k9KnVOMi*t7 zgcSqL58)8*0?2lsg>NW?fAl18WN!vO&v*z)&rQ^L6D57b8^QYhdh?Oao=i|#<=kc& zhAw&wV6@TKOp3(!p^ohbYtNcojO`zAG>`F754Df6-HapHJm74PA^N5%8hbIe+X8z& z-Ne+z93L&)pHxQdY1w|T_O@0PW4mc;#G7EI#n=wL;cSl~`tn@FUJ(8NXwO{u3nVH) zQ)4SDfUbR;)jo6KF9gG06zR_|G-p>q z3)PTUPiFxSMxuxNfY_rM_FI=)Gbc+ z^r}-9VDfF_O%1+4K($1}%BkBHN&oRvY>VWfTRiWP`?M{hrnW@^mN@P|g<++&9nIk{uA5EE&G|SuDz%wDk-^ZeyM$g;1F=IodY^sRwe;y!f1zF| z=yulu;P!1C(5YO*xGan_aH+zUrwrk(N2(U(a%U>2;<7&AGMJ$dg6g=WBY`rux+?Ao`-IK7Ym&L z&1zpGI9$hH8RUS@oefbg3DB(eO@RlSduutMo!^)QG^?!uyWlPdbb2>O0cGh*Ee~p) zRKkEyGg>r{LQ7MdK+QF$El`_->eMDs^V|kYxVLplD-Yeax{{%r)eZoUP2+&hlC4QV zbInm<|n%B8X9XRJMzRm#6Y6pPtZ{vWDe<10hx#lQgzz-HJe2rB^ZQ{{fa|(gl98{N@jQ{`u diff --git a/src/devices/mesh/dot11s/test/hwmp-simplest-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/hwmp-simplest-regression-test-0-1.pcap index 2c72d0caa1bbad50c76c4ff79e793901625cab61..5164b6e7861614d9c4fcbd7c37b2a56a0a603e7c 100644 GIT binary patch delta 1957 zcmZXVU1$_n6vyY@S$95Gcat_YSxv|FB~iC58Y1*-6QzP1cN;b$hz+D$LW?@4e$_mP zS`C#L7iGswSr=OyeJWjw(gAG?%@!Yum{_)zK&9=H7QrM^ww6+)me708o!Ob4%*$ow z{LkwoxOUg<_WeE24 zCdqI3*`|ari#mNnZy(;xKhwY*d22ADHt=_8wgS4|MLNAobz$;8mTKCn4%#`%%|sLw zOVHY3Ql{Dn=Z3}>KwDj;wS3yTTo!a^Ltdukb3NxZM>Wvp7U>+HWS>vQ8;VSaqUKp& z7Aav-5K@$oy71u&@}mDGJT0<;`7!0A%0OyxC5Fimg3NW^fZ4GUZmvaa^bwKnbzn31Gd~=4R1Ja3_(PZh3&| za4=?yvE8;Ka;{s(*DeELdCW_2+>lDQByPMBWkPh_{IA>ba z--%@Eh>QzafDm*3i0vYxUgv-vof-fNDKEfsQyLB7mx}=CG#`xCxgh%sGM?@Nz$-i4 z0CpTu2jhiyvH#~u$euPU1*d$OmmeG+fb3uTz1hw%6kB@?cE+&zQ?bs4I>T9d^9f)b zA9S-M?u4BlwoVH$9d6dmd*7^k#@ef7RawSgUIv1udkKyka-b}Uhe}ZWb%k^Fa zc47#^(OnZjDjjl@WE!zf2wRs)0_Y9%%GFKRsp;j{pDw delta 1915 zcmZXVUu+ab9LINN&)eBMpcVJZoxO5LLfX5YZ3>zbG+21x!K6)k&3O+Nnl_CD54Gxr zOKfVy`T%L8cAa?ZJ@rg9ArTUE((+O%FQk+bJT$pbjfA2Pq)n(sDKQ%2{MotNTjphU z_xJsMe&6}+?Ci#hXJf@P9fr@w%$+gVwrnl5gRobjcL7uy#0|(~=5bVVfFxevZ32N4EK1e-euI z=~@@WHNdWAZlF2oO!w3b zoT8U>9GFjXz#g)hlI@7Wo9pahVE%wRS@vOCWFJ17;n_cuKSpZh*@i0#K~K)lZ5%!9 zBt1ccq7V4`NdzC|IV4BcPD%?=-vt3k8wqaZQI8uStw`Zafm00f`{_C>c(jPXEZ-ER zv=hQUd+MT8Y*UXMoa4!}+Cnh$T4nEA1pT2M3ZtqbXDI@TO*c2a~a1)r9RJm2n?QY^GisX}W zy$OXK35qhdf0>)uopT}(jo3R=>aHX?=mm1-ZnY)8MgjTo=XDkgTp4piWKV42#IX#g z{6Z%FuCrrp^#TOP{oKp32`5Icda(w*KvO5RJZFqw9QT5nl`dh$Y)Nn{+N7Hytw`b7 z0>`vm%m=~w2FRDYOBa;l%X2K)++sQ@?96Un)Ret+-b+t*>rNa*;a7{+NBeLAWX=JzO#KN|BR&kXpn=(k;K#;9SPzu5%)E8zQ!){V)-A3`;=j6U5Jzt*O z^ZcLR^FJqtb0!uY6N`?d2WMJUR}d+wkce9|YC{ltoE#mww$$4(Jl95Q(^Vvf9oV-s zbvugx-bp%zs&%^JiCrAmMPpa$o|}xKW_)XxnL82YxDJ}@NcFpkh(q{X*aTf^Cpk%x zb%Z|J!{k@IVPhLNkNl3lHxBM&(;SzdC$IJ@ayk1J=JTLyU!}XbKy_|%1Pi8iAr9KV z1UnN^P^Ojkc9R^{DvawITLJCDDs921p-Uz}cidIVEco2cc$GC?&?Q&tET7~Zhlp#Z zbRDYEjyn=aO7k2Sp@hi9iN{F2vjLyy^$l}kI`^o9q?{SlMLLAX(Pr|l(1Q}>y3m7L z1-juL{Juc;3vTk9^gMo1BK;>flQ+fFc#mWPtW}dwB@xerz+qjbeI`6L_33{n9b5XMQ2mp)wAxyqWM~hPIlK||X`+X6EEjSNP@J!97+CLZv9st- zFei$st5~b+TxGr@o%-cA^pqCx1r3kn<0cVboCIb?v6eC|e}1(BLjp>0ed%x;Ew@E-0R{ayg1Bc*_Xo9rg@@cDmjOhcBm9$*^vv{5flf|18ron$dS6vi9~#A1xRSbPLfPJYSf7Ye(Y=l7@u4|>_nEE z?aWQ8(F=^TW2Fq68$WNZQ&I}MaN8imyVlHgQB delta 2067 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 Bp6~zw diff --git a/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-1-1.pcap b/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-1-1.pcap index f8e75cdee126aec09121ccf8a1cf738644901404..e7aa4d0e91e51b9c1e6f3dbf1fd8d9275e335c00 100644 GIT binary patch literal 14975 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 delta 2652 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 diff --git a/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-3-1.pcap b/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-3-1.pcap index 78232ddfe01405594332e3a318a2ff9861e9e464..d5ccc592ee7aff19448f1e212c61478516857822 100644 GIT binary patch literal 7304 zcmd5=O=w(I6h3z{ZOmr*oq554ANB>8r@iMp)0!z@jLh4_vYTY_vK|!Gr4fzo0)s( zyXSo8obR2Pn>Vg}nxj0$V|A72b^T^`QqU84&9h!7T9rdCb{khBF_{y$`4dq**WI&Y zQDsXP0&QNQ>;V1sz6wui*qIyOQ(oKH~9Sttu-@i2k~>OL=c**AKvVPEWY6 z&I@`HEbwfqQ++xXc!>F`Q>Ot-i|n*en%BZea?t_(PUA1;VB0&q`Nv{W(k*u^NgC!W`!|$YL96q>sTH0fS$$Ew%QxY&#GNv zo-SVOz_nOFHB%w4OSL-`qC@S*E8Zq+=yTjtuuDzY>K6=jTVe;i~*lnk=m7MVf*70>9DAa|=E>x^VA#MiwEBoUJY z;tZ1sv<0-LVCw|Zyhqg6Dz<>8IpQi~%I;>1%qSa4R9-&i)LBReQD@??Q*7BHGb%x; z{P#5nHK65kbM?NlwIhunO}+-~qVx*uLO62?`OKpv|NV4qO@4*961uJQz@}jDzc9;&So z{Pu&MlM{lkJXCO>u4W#U>gr^OfpM~Wy25n*bQK(2JYB<$e!5~#50!G39{$Eze}gTv;@I!~>beWFgbV`g_0 zNf9;*lQVHQu+#Z`53854i)Ye{DZNqWM@gPmuqEcRxfjdJ9wtP-%<-;`8SLGUBOdRP zDja&$|Z@G>Ic6#r~#cC zH2Wr&=RC@aiR76ikwx<&Rxs>_Ska8{wzHvU`@ad&npa-UZeDBHg)uyE-JvU_1<)lv zbU4dyUTYGRhWD&Gr~z#sZVti_ni8kZWf0hjm+`=NLS!k-k~+>-7!@MW)6S;?+drGy z&d31zyt7oSuDr9`ndSs+i;A)Rxr!%tGCI6^01cHBJFC2wWADsfV$*n+tzyTN{kv}b z=A?Q^k08~>UMJtPRV+rmRd!GV`gWIDK-|V=tJq)4OrMH18mG4WEy4C5O;s^o%~r9x z@^0Tu&Y>%$pFo$m<#3j*VlnE8s)HKP%)aIzoW;*JzlyOFUqj=ZO0ZOnREOtNG5qV) zP8DPOzxQdh)G1!wmZ@S3*oEO!u|@*6Ma9_u>9QwwGCI6E1C4WHXQ^1EyL0Ooky5cu m;9a(g>FA6X2Aot6={QndoN)3zTg773-YEw)pu)IWK>q*|%yjzz delta 1549 zcmZWnU1$_n6uv*Re}l6>PO`I`tj?tBCQ(e{Z<6h1Yrxf(s;nCALlV(SMUjZXH<9RL zPy!i_C^X5k#n?WiMOrC+Fc2+N@S$`?kQQqUeUL(t2EjaNDV}?0c4v(j=Fa7u?|$F; z?m45~3*F->o}D1JnSgO4pb~dYWbKcw(7s7R4q)T}>}N^)@(zAvl0YG1XadzfMMwev z1$#IJ8r`H*5tVCm(M`caDs!5bds!qf5;Nc~S2!&Z`?N`;_LYzL{Zcg^?z`dYB3pSB zn!-AqqMaIZ=?OVEO(3Qj0TI}Glfb8}1$4Tmo^_K>AEm^T+lg7MSRzYbd$)FdL+pP{ z+5xB8hB`%FW5g49-Ukc1W#@vdZwPu7y< z(Chl>a)f^gnhZ;gIyZu^#w1-fh;%vJJUUS`b^_^4)pF30rxzsa(tALsKA2a6?Amvd z@o5AZpW*f{qf?-%b~ud2$fRVv9$gM}>vVC6&R+#<;G%)7myFx5eFo)Ae(`>dbRBdA z=ICKq4D|CJjleTC0VjgJ{G>da@F1As|HdR%%$9Vt!_ha*S*hQZsMQzm?l@8_xZht0 zeZOU*eiQr@8e)&aFt1v$OU zp;A5j z-CCjGZ(9BMiYAOjGJJ4@I49t*NH0^`gmCCqTZQo3x+ENrX4sraNO=}-m#pRJ4EwC3 zQUlXAW7L8>u_CXGKtWn1>AQc*7W{!v>&=RI6n6w%T=RKNj=;S%w&3S9EUqlmDY&Pv zs`m7#L)dogKS_ALxt5S)QuefkHEt9{$tj{Ozw!+c)T-EDYjNsbNQ?j(i_T{S5YYUs*E60p)$I=w| z(RfJLqs1hY5=zzPB}qkkrn8c37O|cK1(WXRy13lnkhDA9gPb>Udl&536#}ekcc#{= zV63rvs-f1ZUu11d_I7up)7xAs&GY#IS=?Z5xt`n9alD5s|NodMPS5ADxZSvU#k~a^ CbYK$z diff --git a/src/devices/mesh/dot11s/test/pmp-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/pmp-regression-test-0-1.pcap index f8fbb750feb871cc73d58038251d30a8e4da0eb1..3f8136701252a84c65b63b0ed84d9992ae1e2492 100644 GIT binary patch delta 58 zcmcc2cA0HM8Y5?@A_GGZ0}xOAC^@-<(Sb=)X|fli4Ce_Y28IBjc)-L$$;li{c1$;v MCZ3U*oWk@T0Ktn80RR91 delta 58 zcmcc2cA0HM8Y5?cA_GGZ0}xOAC^@-<(SgZCX|fli4CgH+28IBjc)-L$$;li{c1*97 MCZ3U*oWk@T0L;P=TL1t6 diff --git a/src/devices/mesh/dot11s/test/pmp-regression-test-1-1.pcap b/src/devices/mesh/dot11s/test/pmp-regression-test-1-1.pcap index 4422a27360c9d49a24dd70b3f23ba8648162fb2d..66196523f9849c35b6c9533b437b82ae83cf73d5 100644 GIT binary patch delta 57 zcmcc2cA0HM8YAajMFxf-1|XjJQF3wzqXXmH$)1d|oGwZX3;{slfQf~YlR22|m{^o2 Lo{^cH!t@>h)!h%{ delta 58 zcmcc2cA0HM8YAZqMFxf-1|XjJQF3wzqXQF%(qu128O|^z28IBjc)-L$$;li{c1&W* M6VJ#@PGNcv0L;=4U;qFB diff --git a/src/devices/mesh/flame/test/flame-regression-test-0-1.pcap b/src/devices/mesh/flame/test/flame-regression-test-0-1.pcap index 49c3afe29ca8b303d06611a75d3335e8dde99a87..75fc121e92ad416a3cf7fcc7ee4294138156e99c 100644 GIT binary patch delta 345 zcmX9(ze~el5dH4En6IfZP214gAjZK#Ly`UguDUt61j+7CTt(<&T?7@>a5%Urw$edC zN&f%^2N6Xa6v06kS39^?@DhjP?j7&my|*>d8@tSc;i3?8f{U(fmkwb{wvayM2vuPk zr7j3EWd%%l;dxf~$dw^}@%(K5?xRomD$%lqT$68&^=c4Z++_nWpB`<#MI|sbmffO{=9^jLWl(#*4 z%Y@j;W7I7x&LEBom~hC<289H_7g4NoPb#xZ4RB&J+lIJi27t@MdP;5&1XQ;k@ZeO@ ziRMww4soriSX0;euG*rWl{n`hIUldjRBGeiW*fJ@!L)d#7yxXHqba*X0Anm67~RD>=_e}ak|*JVp7|_JI{Me6IZX1Gu!1G%3@129 zP2rD{x~vkuN`tXACL5)FYZ3FUjILTds#`v$Tt*M_ugkZp-=!D$p;N%EH87%IYyjq5 z)UG%xNU;rBS-twUtWz`8P7UE>sSS19khaum%9#&x;Q|Ot$?T4$QSrK})q!eNn?^?& z&~PM2X=w$!kpe)4-sHTNc++Fkz2gP3XfN={A>GEt&_5J(V0l!C`M7W-%mligITmID zTQSoo!h{}aRiUp_jxm*8ANK|vV-m_#8FWmXv|h>oILmG>Xu3tf&05%irsHZA;~A+1 I^|cp&0r0dA8+3G^X5hLq`7&Y@kNe3Hbr;H z!0U8?6%x7alwnL8=O?|489u|lW1rV(*fcPAsg4>=kZWBKsHbq%3-O*B>?sbZ!(AI~ z(dOAcJQr>D5{IJ0k20&jD>!y6+)LeHfABU{;6h1}TF)XV1hGvk$?m(*feYU`-;ZV(|rwB{Q{m*Rou3b=Ms;mEZoY*Cq3bmnMmm#`uU=Gkk-opp5Py83vn1j*k`GQ78h~B9uSkB<{K{^EZSAtM9aR; z2N{zqliaG0uc>L#ku}?oau&X1V%(96{$fw|h^ah|Wu1ot3$N4N%{gb6_}3%CZyDpR zt9bV@A>at*jNLqTy9j48i)|nBY|ZHK8j0B%*oVbVDM@hU{LT@hG5XN_RF1K!S$;I4>CYT(Gg3o19*jd>4FGO*6EtdT;-+bT9#O1r;ILSo;(BTaTf#H?vm7FoQOZ=z; zyyj7+m|$#$YWj5@;F0uoSqK}mRzJMj3}@{Cr$huBis4Ttz_tjXWw;M7Er~vaqLRXK zXsG!VV|5Cu<3KKtZJ6Lg=vqZ_;gFoC?rD+F;E2_L1()Hd_rK0wmf^D#U@Z~BDKV{i z6DO)1+WXuHNg2UAu@<%@3Af!~+(5HFJiz62fO9Gm-`-8EW;ooRSjIS*ir|S@8;?^} z&X@4f*@X3ytxNcu?!ela)KRugQI!^UGLvFne|lSqi*5+_=hB3|xD-aL!zQu?4iBL+ zR!P>kGVXM5z*kwBWIxx$5w8T>*Gc1D^&&VV)>A*dCRkO+9H7W*jX9>L))RqGOg(@0 C^LJ?g delta 541 zcmZXQ&nrYx6vyvO(UaH}&MTu4-%H~?acwmWpX{HBU!)tX6rP6#L>;+dwO#Gu zu(iQuVNDZ!xB8}y@#we%Y?i!(r*Go4oxlrSz_kmKEEobFNz;+l52J@GeI-m=OE6Lj z$=r!Wwgpd>a5N&INSa_bOn$d%^{;o0lfVFZPD=!fkx#JpG@OSzzpUd`v<0#Dufb32-ObFAi<5Mf@@o-jKP&FQBjvhLB!-2 ztl~oOvCxH;EQDIB8}W(m1S^t6+z4%;_y9rBJ2&3V;k>?k?tjm)dZThBPq)xZ7ut56 zzYzKvt9`Fdui6_84r-WH^L$J`D7&So7Nf5;MFY$=(@sd4=UZ2%e7Fkjl%N zWS$7Q^ctT-COyJjc+T(DI_T*I56 z6lWw+CmT~HeGw#$5?w$-KT0X|G6gh6yzCQtWKBHR4gOt|%p-H%ditAw_WEMzkgfwyx^EHxTQ$_7f<)!FKw9;CU5N51Au6JJHz)cX|3!xF9AXHNqnP7@4zdIDqY}n9o0+lk=FGTY|vYM25Y9!2?#`(%4V|sNT*%HmxUc(NYib@ zul5EH13uBY$#{UPu$we!rKu7s!F_Vf6pr+_JUumiO+YF~r0ZeRuhz}qfWLAr$T{1m zx~bwz(dCh0`=C<8JXGDZ!+@g-eRihtVnBu~x(we88O9^D?an|>CJ+1gZJffjKDjBC zYcBLi4J$gNiS&-(KT$m%%>k^4JEzsQg0c&Y%8@SjBrGp09A&T}#xg8OwMe%nHmoXC zi+VKCZYfz7qIxuSKnVc^_z~k#tV;ATft?x*x0T_xIHFxcJ-=?8M3F(HfqxPw2dRO$K3`7(v}iP2Mz3N z&SP9&%DwRb7_M$j1OR-EtJod!^!`MR@ItdO67hIW{gnACP+f($nN!Gdv*!M^&eK07 zYg%fwVJRN}NMg{i!k}kU7)-l3t@vC{PZ86IsjK)yL)e3^CiKT#TvmO4*&M9UE#$Nc z-3Mt6*sSQRIJnm6;*;j{Zzq5dp)c2lZ+em5;ciPFXZ0fYGh7jVMRY$8aF~_E@z2N@ z)or{bmHIKETR5C(Q-Y0AIZXB|>eCbKh&h6EGFIVdx`<%GH6nZ?Du6CZhEF4+^A2+? z%<LqdF&0}DR_oAho#p{?)uva-2q!~kIINyIxiw4Njh(!{T{vfW_xzCB zn<=OfLG`*P-4mI@@K9zU(TA|rz1aee=l0TrV8#atW@Z|WrP>s6$0eJqSr>|1;!_;F z02Fd@xl@Yaggcisl$|zo<%?vYFTaN_Vof%W18!XIkPIA5d5R_w8$+Rajc(r#&ZbGr zB&k!1W2NI@UP~j!@)5q$6C^c<{;%nf5&;8dYlLQ?oD<}hB284CJm$BSI32#o#H0Tu Lofs3q$E~@)kb3yV delta 1129 zcmZ`(U1%It6u#%q?9R^a&SYkjO?H!=?94`?D2z*pKS8ru7qX=w4I&sQXk%JdD`JBL z6^)QU$mSsri61@~gxUuMLyM90rKKi)Xi@TDlF~kj+MtMtkUU6L1nIpu-EH#V!{yF7 zobUV2Irp6TvwG*~LJm`27j`XUu~em7nD&Cj&#TmdoqQ*LAOkj4&3~hem6!G=BHw4eSSzOXX z{zgkvunLOQ`HN1I@=>>;_-!OK!&C#in9L#*4S6YrNjIaCqgIp>K4zmeez&#BIEREW z%tz8Fr}xu&xgEzHA4^7!=X27lD*XrfSe=_*lWoL9(em+Ytj3?~ZnFJ{ogl!TS)mYL zbqAO?EB3s`*t?>7d17-Y$KT_hXrh1|{f>b|o&TguIJPXEUydkkJz3-Hrpkx}=;Jv2 zn2+UTjlK}A_V{0Mp*_q0NHl=j%s>ma%{)%n6>VxzerH5OkBRu5Kt1{Dn%&N634`fu zlnc%YLvgmbHJZWuuE%d0s-7#t@r{@RPy6lZ291I1sS5W8P)?0$+ogTC7^BrAty7vd z+5aFe>?j$cTK0s(=CRRU!b(nG9q$N@G#5IU&{~aK`BnMI6h4m-}Cezg4e&>maBI$4}z} zy9*b(U!#kSl(x$KiXW?LYA4^INJm#k(hDhU#8lk1Y(u&ObFdjx?!a1s@>2<$C zgH68g{3^X7`RtWLd~gbBd>!N?VslwV0c(W{y(7Ll#cJBu4n`MI?%7YaT+m5Ve+apW V8-*%8tQxX)FuadBD%q1g>3im<70&C?!!e7HC*)`^js;pRR;jHZPCj;}UO&(_D5^K@GgGZx* z21k@eJ{d!AEEfq*Z^A>RWc*B29WGcFnj$V=PX#Suz@Bs{9E&s>1LW#=t+~R>b~w#T2M=m4jl>n%Cka%SLwB@OKFlk4ku=yb zk6*Bu!j@SM==FFK_4t~CUc*AatYJLn7e>X)h~dL}e=)cbu{hXBRDC3j+aC8huVOrD z({C)~Of1IFP=|O8hi>3hqD*7>Bk(t5lVw`MSkj?qc%Ce?*EUiot~}Mr;{p}%Hs$d` zG2lePnJwuMMGaY&*xDD8A`od;feBZ=7v&>U1fv`W@$&;bgD>i73>^M%>j}>4*jC z_^)gm3x$e^1#3Ypiqc)93lT&&x)5Esa--tHjd!LLFPzKAf6qDhKlje`JUuXN(;446 zOOw8n^XCV+$^MVJaafV0K1l@DbPHF=r7BLhTB?wwb1M4v0=|)JObKBlZAr7x#V&Vi zaCMuuW1MTWAHzu#vzozUx~Q@Ic?~;dm&S2i9%A3XYt^PW*5n$$iw1SP5DW4!q7?aZ z9G5cfk>JL=SXOG>nL=A+kSEfC9y*!JgxQTq(Ri8Jbdrc#_!V*ad`swL6(!Z9CYq|l zTg*)ty5@2&i*9X@_hfNXvuP2FnnyF(t2@+zqxum2#jN0cSk*mhpkz4o6(DagO3<#bakH=4xk%R|Veg2=SBM`wt}cv`7E| diff --git a/src/routing/aodv/test/aodv-chain-regression-test-3-0.pcap b/src/routing/aodv/test/aodv-chain-regression-test-3-0.pcap index 587f50a6dba32d9d0b5b5d812d4313806e5d92af..0fe7ecd7ba0cb080ff534963bd1f1d50574aaac4 100644 GIT binary patch delta 601 zcmYLEO=uHg6zqH7X7jT#%}<-`ZnBV`dQ*!^V;Z9FMG`crJ&G4uSbI?qURCsBK?Ji7 zib$ZMQbegD1-%J9h!8PVP}B-mJ?J553tp@7%SPgN_+Z|=c{8(F*eo=1bk(zt(G$-y zz4?Q*>iwwml!7wV_`8B>k)x-$PY$*5I&P>#@=dDP$~7(qah7XT#j-YnZCW7E`WY9;p`1U`3td{e~|bGo>((YeAPMOvE|IA53h-^C*Q} zZfE@>cd;Dm&`TsDj<_g>a44grn+&2Iw)vSNQ|cjGy((oDy>sKReUzTraDyz1K1a9lWz;|;q0kw0N5}9u(GphKSISM?O4{P|9v?1slN}*;lm=Whvmmtp z@Qs8kQvAw?(m;&tuJ~u$sbjCXcFVi&KSx?15?X&0(KOW^M6& XXJ2qKTjBRHf4nNkzqStqGMdsrAVBQ^f!m`L~8^T%;K0V|~~eQ`L6u zKAK#jGw_7Nt6@xtBF{xoR&1KW2T|ey9YacyzT=MK&@Id;9zDe$#p9EyHW!bk@iAs% zCK|$R)#r&c*0yAV&99NvJetF}jEi`oIdla}+9aPhgTXON4(4z#~NQ8Y3o+Aa^-hXV-}Bj!2rCf^a&Fo*ez{0}3C!XW(LXm`^2x^m~~;G}vV>*oD8FCc9t& diff --git a/src/routing/aodv/test/aodv-chain-regression-test-4-0.pcap b/src/routing/aodv/test/aodv-chain-regression-test-4-0.pcap index 7f1d812a2d3389a3dd51e03638b8f36b252a723f..36f531b9293e206fbe43c2e0721fd67451a0d251 100644 GIT binary patch delta 467 zcmX|+y-Pw-7{Y8hdTGlZ8)5V-}^l0c~3Lmj2}lJDO3itEGG~$NBF^C zWuS64$}U73%rdp|qth1NGS$s3WWqs6n%`;6iz;qVgLX0IR`HIC>|C;A36F|zREMIB z87Wj1M3!;dxsI%28Vpto*lv?tgH8)r_64vDj5&k$%zSBB(Amg8F?$Pw4o^YU+#$0V zTq^EK8omly2=i4~h%Z7&PQ@3d;h~tNtN0~GX%)SW4`CSy=3Oz2NCt!@zF&lXV@cWv zhipYDk1okpbV1HS(rMO6COu;4b7=T3x1lqS+b*r~=)9z`DOvcmuT5)>E!Pb|YucRR zqNfhnlZv+vD?Rz_HRwG?ee3jr|F;aqDa$<6Z$L@G6Q70$Ty`fd`pIR`i(|?fq{c0B Tr5KR%SiX?ofSrUzcl|Se@!ENX delta 466 zcmX|+KP&@L9LMkd?)t7zQ@vhE`TH`k!@LF zbzV1jr*cez#iG@&+a_mVk{!%yRrn2zHHY1q{Zf-`veAEH_b$pNe23BSN9eP&ijnQz4wH`1ahrRX`hb!~2 z+T%z)kcY-U`53TB3FF!{DU1JRVW``2Gz2X&g?m~ZZUile|G^I-M|5n{(=guY*iLl| TZZ+K342*;E&4JE zGH8+dFQQdZxHGU-2|pEsqIbGGa zkmnKlhMQdEs)4t0^w5n-R(8mT8NILUIPFt29%bPg}93XUgBG=V^C z#$=<1hshFt%hnAuhxWLIPsuh~!ITluZG@>&`hW+iBKOAy9o3~P)LACC?fOvBCBdor zycI*W;XDrrI@1@9Yi4Mu@kGe!*b_jmf#-nVRmeoteJ&Ar~2eB>da8sGSsI0JF OYPx_oO*Yz_5BvkB`NMJm delta 785 zcmXX^%}W$<7~c2Y`PkWynQ?b@-P+X|vB(NhXrm9b45UC@lnx!t3e;UB`Zx%IWo3Z| z9ddo>mTUw<$mmYtfPAwxDPH+eig!;~I`f&2Z4;$@1FxEd`ybCz1ow8tLZ>y|m^M z!KQs!jwt*fg!OQSN5pMMhFI|`!ANo0@FZd-W*|kTh)hw397S67aPQz#)WxQ0p(PT= zcC?cpMSO`~vbV*PD3-0pS~M>(bV34YPvH|QhR3mH)hCEi&7}o&o72>VDXSWmb(xEb z=bSh@WexBR#RH`vu7zsk+Sur@d&G+!XHxVHuIu0O%Re_B$;SWy diff --git a/src/routing/aodv/test/bug-606-test-1-0.pcap b/src/routing/aodv/test/bug-606-test-1-0.pcap index 75919c1f505db359c804e210daa707436bc0c09c..cc84ba05f0f6bd67631a0f258fe80427c0cdcecd 100644 GIT binary patch delta 841 zcmYLGO-NK>6rFqL&3p6z#%7#(W6yX>N(PRp*&?->F(QJ-85h=4%Tx#~qqeCK*}_Fm zCvz2AR4zn`Tty}=q5^*kN+=MNqNtEGp&y8{?>(j7;^W z6O`Q+%?_og1r2H*o(B~8DMrJnr8K4RRSjXq<-jgkq8}Kg7FHw#Sf{HfN_b$w_&NXht*ua_;NdoYD-O zbk^CsY&LWUHLNR#c#s6Wmq!SHJUV|P^g9fkbG7kj7IaM}L49oBlu$4yq#C^`dL>MV zTFqmUP%}(#ysg~mFiDv77UQ+shZS!XPuEzwT^<)Ed{v6MFP2m{^%ZKyL0>HrAqmUA zLh6L-Pou``Lc4!IUBsBPfO;_NZ{-0N-e?XM^mihZ0(yZoZ+F{8Z8O0SxFNt!G*K9D z)CheS7tH7TlKCE9vY{eyg2x);4`|2< zrf339!MLz(D468xYSSY!&>pH)%m`38|6+-1w||QQ-$c3p;i2rlvy_(#)D{*f0tUUBT*Hld1ZeASyb)r delta 935 zcmX|NIhKW*A*Uz-Y&T4rgh7GfVDK_8HdJ_w{Bh&C17dmVa<$2sTz&$;*f&RJOVe%)A{ z9uyLXXugnGUKr2uFDiU%r4eK(PaAR8AI5h>Lt6LHC)}lj^i#yjHJA7{qlWXe1^wc` z8*`lCdm0w`0H4s&=8jVYJ?=bj@ZyQPl|CZxPVgTe(w2jro-VcwJm)y~8mMIlKRmVE z=f@c?M_%`$MXTjuKT0`HJ29%A=d3A9a)l-GrKE>fTk@FuEKK+v{MNg;Cm=N#^mcej zJg?j3LeQ*4x39&0N!X*&O6a~8>Oq~A#B*O4^@Aee5?%Hp6J{A>nuAkD7flx%H+Yw) z@Xet%1SzFU(U1pCNY9 z8>NHZSP+k+^*rC8+_%C_#_IV-16J5|7!qdndX+Vacd;xVUZb2DY_hZ5m{!h9+_W?Q E0ARxQC;$Ke diff --git a/src/routing/aodv/test/bug-606-test-2-0.pcap b/src/routing/aodv/test/bug-606-test-2-0.pcap index 032b56f25fc094c52170b1d85b6fe9e3c8abd9bb..c414ed66633f93f7699b59a457b24f5bb07269b5 100644 GIT binary patch delta 643 zcmX|8JBU+36rH*AK6#(Xyq8!cl4#=kVT)u7u@d2Btpr73H-&||xIed1Q@DyNf(Qn* zNj!pxXzXlOSP=XavMXY%fwdHkBFbW8Y_?LI_b{2}4tLHy=bkfP_dMIxD)4T*I8VPh zuE>15vyTFSGk&?fS)r0ZPvs=j=d56CQrAf|j67!eIPEoXQs%J64KhqUTgDGwp>-2e zR_?YioSrq9=*z9BQ_WdTF&1f#2z{By3#wA+{zucYt0_v@Evn8tcL0l}7DbhoyrI-B zA6KmszKJ=y@5kF|6~;Dv{8c5~H0Jmx^o=4p3W53Ej^CP*LOaaiGq+K&#%Y~v%>q3k zO>~1^Q9{Bs&=WBUKL(MSC6>4|<9;4r>@D~sC4YpDmBW~Gj!&WE)WpPrAvIrtaHshi zUeYL9uEAg9l$Ezg&rgWh8g&^S%8`uDk+HaaLEj=>qc~B19v8)E0^boU7kC2=uS`9L zJKhXkGvh7M^$mI-XRZIq#!fH9A-~9vW8N?0gB#+WU!(Y5k(bI92cmOZm)Gm>(i8uQP-clN!!eb|ZQVVd?3Qcua``sQ~r-Mc^ w7~yTu)aH+b(>NR|tcG>0=sJ?A(=Ue0nbWwGQTUmu*GGgU5m-vMBFPjFq=oWEAEmG*aPZg-Wk{9Bm?j5eDZ5Y$2BdYCeE6Rylu#C1wLoS4$u}h ztV4F3uEehcm~_V+@nQJcwq&=6cF;3&IIp|#Q!ToV8>x!AR`Ex>(nsuy{#hnRn6*59 z&gi=ZuEbkLm~%3CV}({r?opP;<>Vf&sFod4kldtfYh2S~tHgpmH-{CwM)Lv?@}@pw zT^H5~%HX6^x^JFWru>ga7~l diff --git a/src/routing/olsr/test/bug780-0-0.pcap b/src/routing/olsr/test/bug780-0-0.pcap index 9f7b9925c6ffacc8988ca04cca3575e27a61cfe0..f6ae31d3bd08bb601645a179a70b63d723fd2e1f 100644 GIT binary patch delta 8213 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 G*#80DyR`#j^kz4|?S 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 htyd(LHJGnw3MrT>{d5_F`S=at{{dO~Y+(QZ diff --git a/src/routing/olsr/test/bug780-1-0.pcap b/src/routing/olsr/test/bug780-1-0.pcap index daa2752f384deee621c1216991776ac7e32273df..085151586ace2e871c092e639eb1fcee5b6bb3c7 100644 GIT binary patch delta 7638 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 suLnE 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 JW5S&n`hP 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 Z9NiTkVvVY8o{;}W%a?x+qQzI){{fT5B2EAR delta 9995 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

Y# zqEPEOiRZ~j@R2P0Syv=$ouaYFrCu+NxYV8y=@lW;%w8{!xaHBX`&@o78Ws}TTS7fA zpyH5@r6~QI{y3Y<)%^%pu1Rk0Aj60CLvfZ^VfJyT`baFc*%~9vK2Df@ zEQ;DPK$v|zvU>(%7&A~B<~xG`7Xd5Z_KAdXiATi=OCKO)BWtb^k8C$v_J+;M2VsG~ z<58#V%%Xvy;D+?__!rl}&4WOJnV%U1H&FC;c5zddJ?;|#dR1(aq&H!Z*FJ$4zBL5J z-u@JOrGAQHqj=d66pMhBCnX@&dN5KIpFMZ0(}U20H-~~B8JDk7&S3C!=u;#P4#suk zH9d)sDcy%)J+Hxldqu*<*uvjU0D}SQx}%j_5_`l@q|YWiKgMAvQWGN5glgBU*$GbwUQkQ>zJIpY|<&*49fgJskkFR|Yg*l}D(@}U!C;2tmf zQds*$l>X;AR+Yt<{r-xu*zopMuI(eucIqTanG5ieZoFXj!E1@oloe{6Lnvh zj$I~A$91Dx&x>Y4Xoy((XS0xNI0L!;-@LeP@X~4MTiw}!Br>vw88gt&?b8weX$Cyx zHH`@mX*&}OI?n*qyAmqK7T#bMI5ikl-WRR>D{(iOjr5^ez%9&w;|$rbf4T2$oBjLp z)Y;NKH_a9wxY8w6PbI4EsX+Bls*K#@xv8KsI|Dclq+!KR(m<8_Y|z(v4(LP7$}8s} zJ2D-T6kk}z^O>2@D#o_2EcvJmfYZ*E1w4>)jGKep;|w83`_dmsWJp^LX1fe7>(z5` zkm1iD{8l>iz~AzCPA2T|qWs9`oP{k~%|ZWKX0Zf)l=|6lMpouY7dkrggIPc}K~w^f z3Toe*ivWb@BmRKPm(B&48JXztBUuN=fG`hb#;X^MW*XVyOhP(@#0iCODS2p?K*%(F L65$$zuPOfz!l-ei diff --git a/src/routing/olsr/test/olsr-tc-regression-test-0-1.pcap b/src/routing/olsr/test/olsr-tc-regression-test-0-1.pcap index da5ad3711eedb285078d28d6f4db850a7bc5fba5..e9bbf4e43ab6fd90306cfaf57f968d0fa8f25aec 100644 GIT binary patch delta 154 zcmX>ibVO)^40FSAhKcftOqZ)B%1KWA&%SYyAR{LuBLf2m7b7F{GVcTPdnCCREJ$*jPp~=z4TTxAS%e*#J2`>lIxk$30SEw&8yRc> delta 155 zcmX>ibVO)^40Cif^F;YX=Czt^6Xhi){%7B~NRW|}nUR5kgNu=oaq=FoxvK7Ec=HIMb?8unh8m74%d2Q#VS0`jJ$A@ HL9PM-2|F6W diff --git a/src/routing/olsr/test/olsr-tc-regression-test-2-1.pcap b/src/routing/olsr/test/olsr-tc-regression-test-2-1.pcap index 12f2a945a36b871d3483f27a3e18467d3db05b58..f48dcdadedf748a516df3df0a338b98b8b455f02 100644 GIT binary patch delta 155 zcmX>ibVO)^40FSAhKcft%%7&PPL!9J_@8~_B0)w@Mn(n(4lYJU=E-{)vpE^rU_1k+ s>qtBSW@O$6=J!Z)FIbS|HlJX11{w-8X0r%8GIw$U$8}z~Bm)ot0Jg6gs{jB1 delta 155 zcmX>ibVO)^40Cif^F;YXX8r~sB{A_o`^H6rjGWAj3=AAxjEszv_b_I2GPA*W229tH qcmmAGybsLpk>p;mAjxe$!Rib&6lTn35q4zm Date: Tue, 12 Jan 2010 17:15:23 +0100 Subject: [PATCH 08/21] Revert bug 706 fix: Remove traces change for bug 706 --- .../hwmp-proactive-regression-test-0-1.pcap | Bin 8259 -> 8082 bytes .../hwmp-proactive-regression-test-1-1.pcap | Bin 12626 -> 13024 bytes .../hwmp-proactive-regression-test-2-1.pcap | Bin 13876 -> 14332 bytes .../hwmp-proactive-regression-test-3-1.pcap | Bin 12558 -> 13660 bytes .../hwmp-proactive-regression-test-4-1.pcap | Bin 7967 -> 8790 bytes .../hwmp-reactive-regression-test-0-1.pcap | Bin 20780 -> 10772 bytes .../hwmp-reactive-regression-test-1-1.pcap | Bin 16470 -> 15544 bytes .../hwmp-reactive-regression-test-2-1.pcap | Bin 23582 -> 13894 bytes .../hwmp-reactive-regression-test-3-1.pcap | Bin 18397 -> 9793 bytes .../hwmp-reactive-regression-test-4-1.pcap | Bin 10558 -> 11487 bytes .../hwmp-reactive-regression-test-5-1.pcap | Bin 8304 -> 9280 bytes .../hwmp-simplest-regression-test-0-1.pcap | Bin 77039 -> 77039 bytes .../hwmp-simplest-regression-test-1-1.pcap | Bin 80402 -> 80402 bytes ...hwmp-target-flags-regression-test-0-1.pcap | Bin 10533 -> 10632 bytes ...hwmp-target-flags-regression-test-1-1.pcap | Bin 14975 -> 14952 bytes ...hwmp-target-flags-regression-test-2-1.pcap | Bin 13263 -> 13418 bytes ...hwmp-target-flags-regression-test-3-1.pcap | Bin 7304 -> 7392 bytes .../dot11s/test/pmp-regression-test-0-1.pcap | Bin 851 -> 851 bytes .../dot11s/test/pmp-regression-test-1-1.pcap | Bin 851 -> 851 bytes .../flame/test/flame-regression-test-0-1.pcap | Bin 5244 -> 5894 bytes .../flame/test/flame-regression-test-1-1.pcap | Bin 7298 -> 7192 bytes .../flame/test/flame-regression-test-2-1.pcap | Bin 5180 -> 5552 bytes .../test/aodv-chain-regression-test-0-0.pcap | Bin 6938 -> 7278 bytes .../test/aodv-chain-regression-test-1-0.pcap | Bin 9076 -> 9184 bytes .../test/aodv-chain-regression-test-2-0.pcap | Bin 7450 -> 7350 bytes .../test/aodv-chain-regression-test-3-0.pcap | Bin 7292 -> 7292 bytes .../test/aodv-chain-regression-test-4-0.pcap | Bin 5050 -> 5050 bytes src/routing/aodv/test/bug-606-test-0-0.pcap | Bin 5456 -> 5726 bytes src/routing/aodv/test/bug-606-test-1-0.pcap | Bin 6368 -> 6748 bytes src/routing/aodv/test/bug-606-test-2-0.pcap | Bin 4790 -> 5090 bytes src/routing/olsr/test/bug780-0-0.pcap | Bin 91032 -> 90950 bytes src/routing/olsr/test/bug780-1-0.pcap | Bin 95830 -> 96098 bytes src/routing/olsr/test/bug780-2-0.pcap | Bin 103402 -> 103858 bytes .../test/olsr-tc-regression-test-0-1.pcap | Bin 2372 -> 2372 bytes .../test/olsr-tc-regression-test-1-1.pcap | Bin 3444 -> 3444 bytes .../test/olsr-tc-regression-test-2-1.pcap | Bin 2372 -> 2372 bytes 36 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-0-1.pcap index 8dd79250e723b83b47e9ae07a76bceb9a5c395f2..cbe7163ed62b1c9ceefe2f0a0ba15522fb0db8a6 100644 GIT binary patch literal 8082 zcmd5=Pi&M$6o0ebrQ6+>T_n<0v|Sb9By6gdG-_F+t%h*eP$AJ?Hh~&RN&+DvCB|e; z4`Sk>2Z`x{L<@={gh~|I)dR8NfZEstkr)m=c(4}_q=ByeEZoL*-kRw zzc>4P@Au}tH?wnd?()Y8N|M`FR)`KcFYjC?+KXrI3)Sb;*A97WcdtFPTi{uw-+!QM zOYxP;_|wV5W5?cns!Py?9C2T9?(%(rcD4}zK(&{@(KMX=KQxS8C0Y+<+;3KuR#F`B zvai-inyeF*F^apLf1Y}TE*`zqDU4h*-EtdF; z@8-><94*J;@gZlUyMV~u9{nXM&`>Yo%B_O~`{YLXtS;?- zs1xlT(crA9zB;&91r0$B_l0U8cRbDodg%!gyJ$@Xl=MaFGF(U-n^{n1 z=3oESKuyuI0eBm+-#DXOzz@zCfEoHT2Qx?WVKd{sSyX0r-u>G^P0=X>Fy5OEVAnHq z24IFxb;8VhxcJ`W@QwFoNtxMu8dZZIwPh(q{asL}&W_26C z1Dvr8$V6miBYBImKtVa8l(_}Pwcal%y0S&UMO0WX_nm@bI%HVb9WryKmG;0^?&-;3 z*$&j>96bUEI)9!`O0PqR(Yhq@C!$bR1*7DV8zW%9>9q?FI`M|->5jF`1tA-xiaKXY# zMhtTY?IAd?Q6p7ugMi+S~W6Rx1C?3?DMPMKN z%EHQT;SJ;Xb~JS z)P{H&=TY~kF}o{QEbP46y6dWionBjWWo2qG!^64IGKniH zZ~-S;48RQC+KM%OaGSoSbD{4{M*SaW=`a#(7I*IUf>eP7%~p_*RLv|%Z2x}PZ%-hW zUbL|bBv1*X(1OdC3NfEuQ$mdG|6`qnolGE>9!y*2E|5S+n42t#d<&F^HNY-@Q(R%Q ziMB7kX2g4nCX7&z-xOCQ9_{FU+yKnb#C9amA};=>nBBY+I}szqq?=j#2KEw-6R4_m z+7bvwve^lA9QGURWQs7mc^kVx0+kgzTLSs)nwCHvpIO*>3G~+ImbnWg(3Hzg-(#xs zum;%0uRu-#=&znI;yp#(JHnwJzXG{{^%o7m40ZP-fvULp353O`!3xCE_!a0QH3_x^ zLX0*uf!O}&6^NzrD^NwTvn7zvt|{KU@)Saq_Vxnc zP6m=}aqh=sAl<9@LeM%{Fk7Zoz z{bLzj*^~2;4pINJvW`O%J*Gnjgxw*Ve%5TX9?q}I#@}tHC6Y2T*<@R%mF>M?gKPpOa&Hw-a literal 8259 zcmd5>U1(fI6h5=bP4*{o6MaZ@+sz8K^(ASfZGvd)7ECNsAsA7xRJZ=oNW_R(sd;cQ zg{C#dD1?GOSo^2OMq@yuv_h%Ah*X0X6@1bMiHP`MA%c*2&dl68=&N*{3x%BDW8wscfzpbnQ49Su zj?(bv`X?TJdhe!o24}KBeMR2+`_0f>2lNBcJ|0&jjQ<}JzCQ$T6$+z%sVt;|;D9d+ zhbxWldl6s&XHmEFZ-G4H{8bCYa8Dq2k1>V)9Y+ARBR2JN8DNDsd;tjT%imyP7h9yK z(9Agx4#FZ6))td+;SkVRFaed}bMX4_7OeFpMS{Oz|EYv;QG&5xLVKj}&ZK2Y#Hch` z!Cw-zbl{W~mn5Mq$yvlVqzhz}{_4vLdp{sF>D^V@mz<&w68-|hG)jn<&t9>x*R20f z95R%C0r3s#f$fJ*0NjR}Qn!ag5em@P0eGd>Ou*yU@Mm#p3Pl0zJqgf<->EN@?cQI2 z+iw8Y!NkuMNc=6ZMkQe6jKer!=%`t!;LtIn>bU7tC4>BoqlPdoKMn|C3~hofFvwA< zEoj1?Ivr~eu?BeM21(>igY3XhHiInfXK^_u0Oi`S{Y#b{bHvCoe{?3HAAdpJp0rv7 zyJY960hopxlZ%W!$D*05EthhrDN$3oHUrgzPDBk;Az9~}387-VngyX|_RH4{z%+cG zMKyD&D5~3<61C-AuYu~pSBR>s>9%IKP_ymHvj$)q9&bZ6&$UER-PV+-?Yr+YP(2ty z)KE=|2e&ngLd}kr9}K`WWI9mI-R)7-UmjqN_$i^oD+#3zh3E-|zEC42zj#oA^YsWr)a8wUk z(NT5JKYpSScH(^M$uWJG(zc&0tVN12JxwM{Hem4q4fQ~u0J3SuJTV)e_&2i9MGae4 zzp67}0nJ+m3UrTP3nOQIL?MOd(ZHdTjTJm&^C^{;rS8tkbejRbbyXudd0NHRES3>A zkl0yRQ?13WpRusw9!;DF-fe_gyi-q(Nmjx&rBw?!f(_S-Zju!_b(!9atpK!AWYO~s zQZP(kuS_HTOQ^q5esRrdbRI`{;+=ZL6Qx}XID!qmCDyLoTLMq?XgXp4`d%z{lbGF2 zQwf_FV-bJg9t|j9Z0;_MBW=lvIRJBY7C=Rug-zeSgo}mjYT{y~|8ETzc07P+^!cP^ z?X&l>?|O#MuG}(_pOwXdmitu;U>@E_TtzP79y`!Oj*yA-kFdQ1e?B zc0m9gc-yjeS^!P@?9>`lq=!|&&b_CUBvH4$uw%(pF$NKlrt*j{Mv-M%kh1HX8nnyhA_>(lR}t(3gv4bolroDT^erc!z4PkEt>P(Rft6GU)N@!deDQYVG{itgam>O diff --git a/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-1-1.pcap b/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-1-1.pcap index 1f768d2d8f3a369ad5082f211408160717c7ae7b..96730b748f0ae6e0eb23583b80a14481c39ec34f 100644 GIT binary patch literal 13024 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 diff --git a/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-2-1.pcap b/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-2-1.pcap index 3158e01ffca1646f61b3e3d11933fbfd1557659f..6563289d62c2d75d5d642be16db1de99dc0ed70f 100644 GIT binary patch literal 14332 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 Ho4fx5bX7{e literal 13876 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 Si}O)G?-9BtXa!KSCC5J+<~IHS diff --git a/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-4-1.pcap b/src/devices/mesh/dot11s/test/hwmp-proactive-regression-test-4-1.pcap index f8068c2a627b6eb694c484355c0dba70e730d1a8..dee2051207d8c2a70461ff584f3723fde9a2ec42 100644 GIT binary patch literal 8790 zcmd5=O^g&p6n-_k!_KlYvkM0>;_MtWMx$YMfemV8B!WhaS(ZQb;>1V-h7C*bH^yWP z2QbmN#zZ{vYfzBD0xB_jATfrBKiR}JTunTPoY0Fum-YLqx_i2&s=FCPW-F=b?x~vh z-uK@3UcKq5uTCAvNvDKkdRk;l@bLO6krCW;PS)=?-_FsOV)$8>M-}c>;mx@VZW(x_ zwsmpm=%yW;2Nx(gRuazX;HsaO$xw&z2WGr;I;LUw|DoZ;Cn7YKbExP?e z%F9W)sEoI{#F1aD+<=)-Ar=_;{BHp}4-JkxjckY?TcTWtnN?#&u@X8AeuyZO>abkQ zVRguNv>VCLzGbNgy`_DiMf40=hveuvJzjx^Wc}x`>d?hlXRIh)4P6@AcMW;88_BS4 z`-qa|xN`c*T9t~d>=%4;%%R}j^Yp#>C^l4ytXLNl=grKP#4TNaO~t*x;hKv3dZUt+ za02IK-JggRdFWPA{mS?%=D!c{jp~Z!Zm{E52z3Ht(V>zNkWxG#<4>eTzx<>}nN_NX zjWPuSU_{a16Id&jvLg_e;E;gIq!ApFE4vQ44`2Bla%MEK+(kmQHEQ&Xr`!#y=5lwT z*qu~AqlD7}yNeex1ro=hyOrF7D`%8LR>)96awzzw?B-;sE2mH&Oq?j;c9e9dLg+Yf zbstvm#FaCWZ%j2>iZ!XosvCrx5u^@%fj4nI;ghU?#nq=!mmSNk_>aXc&l}5?WJ1ma4FqS?VH%L3f)$M36Ms5n z2m;Dw+InPd!97PUZ;rQkl88P@OgyRK+`2*vPmZroTiv#y;GQ#1e{ZKd~igpc(}LQ^_5;_ zFN9I5hQ7Ljj)YOntFT?B_ClXWyOzw=L9CA8${FRmrG2M` z4bh`3&tgiaM&B8$cE=%~a5!z>)57eGtYQ~N{~tqXJff`MabP)zsm1w8vAP@5+3s$_ zVoGsu;Ixaxg~jgb#jWkjB^{S0+QnX2r~3yJI+&n~J1zVY56#CVcfA0ik&WTMFN-|2 z49KN8vxql5W|`Z?DfFx=SB<&_#^C@u&w~oY6fMV`@n> zr31gt7<8{r#Cc({Jz(U3u^+rhWV_}?#CF|E(Q}6_*}lj}zR@>c&go3jCPeI`>}O7< zMddxLrsr^kYGJFW7M_mF4p3PUuWECVUGa#A^?}9*^+DfRs4jo*K^5h2{}&#vSvfqc zMT(un&0JH=Ch0~lUFS?%1pAZgM0P(Ipu6qejcMn2ctA|R7o7f@Q#GFQ)f^C_oi&H{ zS7C$WDIIC9ZUcuLbQS|^A-XsN4G(4jx@EIH=(PPrx4FlI&SLqPLFZ$616^BKPWxYm z{Z8!kdB@f4Znb96En56i7R%YGI6Tmrf|I>x*vRs+92{yl%WLR{98X0ofBTRJoyGEc zh|XpC3_!Q!V-LEB<CFRo9mJ}mEPk34 zMQQ(rZyrMHpTm#!u$0~PeWF855ibP}$(3D)JdQ5K=a3aY#BB5iO;iguX151H5%#qQ zfZy)I*_+rNFgD9G+k>;%h2bllGXULQyf|R)a8A|n!J!FBbg!X#U}@xx{=iu6!6a5N ge1)@tu5E?$EnoAaO9jzow+G`IoUEFEA+2!!3m|Jr#Q*>R literal 7967 zcmd5>O>9(E6h3#_p)+sN&HxKY3!SGHswR>#Ak{=*{HdU5GO@;$;;8Wlg*Zu9jWHQv z0f|JKG-Bcg5fQC5DV?2lK>`bnCaur~TM|iXT(D4=TF<%n{oFhEyj~|LGcURGe(rtW zIp4YGudhp&=FX&`8^U8{1>j(CbNLv+vv^HovHq}n+AB|e;qM?kCGc8gPORHFRN7ZP zw4?j*YvXTj-zZ=v4>VSSv%G%@M!JArP{;cxGzrK54+-~t2tdlxSgI?jpg7>oohMhD z{T^p4xQYhPzW{?m^4Bepz&(ZB(?UQhPy+3I7GMwF(ctlY@L{wF_)AAGy?T7TyjDMb zF&MzWISr0AW=n84z5p0SF*FwI04ws4a--e%;qfgXiqVEf8h(!JM3450d=KE#0>C49 zO`~4tLDkZQF|kZnv1bjW;TS9n9<-2p1}1qc<(F_96+WvZUK65cV=0L z0nzNDjroj2%@B3IVWFm>hN!X6Q>gv8pj1p&(3l5zkX-bY#?fEO-i3`YnGLo#W9<=2e~4u z`L~7Ywq}TWdOf4&bBJoH`Rf7UC>9kkibWS{Z59i9LI<&)t!i*=v1kqMW#K3m1=LO! zi>PGvh8oVHKF!5~R$W0*t3Ddp#Z}PqI^}m?5q2t*iGqY>UuA?D%}!O>S71HHBPw+t z%Uk?0gnfi?3Dq;oP0}E#LE9itVw7_R@z3h_pM-0obRzMFKtVbhrZM$2Th*%pD^>F#T{^I9$FO_!g6u z{lo4#Jeb*vEy8K5qPshp0Cl*$ooNyNMAW!N2n*dTnwbWl&dO>NOs7_xfWFqwbVmA@ zQ3q=iq!ZEXI~ZFQJ0qP{Lw34zcMQ8>k6|bECw9;074@9rKuM7=)71kfo&H3NwHE6c?s3Cx&ufm`djRz?@<7`D^QRgc8=J!!h@R+U;tgW{M}uFLewMUOaP7S)B~tnnb#3ORkez% zK*+P50Yv&IS0I{oSD;Trc6I=D0J~CR1tNAYIV;etV#ftg%&si~BzGsV0@19y0@W3} zUDxbd;lboC44@;Hzq>0?fV%sxDJFofA!=NKNX>)&Df^R$o}>F}V0`7Fm&~s`^n?yN z@86`sv0r&wg1c|?e+svyn4;1t2mc=iAIZv(MwA2P(Hjz;!Q19fo-dgeBxu8edEJ6H5zb1>vaHam_k2c}v0Zf~Ec|E`3X4A)>B6#iBpO6jGW?t# zd^EBR@|fTa;%;h!B+un!)UMq*Ik~AJ)47|Pi?|98^G{yYvULEvY+_SG>>hMBHH(rQ za5*_<*S4IzFR`g1cJ8KTQn4GIu-gw0?jOaRJhZzxg}R%X5cP6{$;lIl8t3GH0Qf3i ALI3~& diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-0-1.pcap index f9b68ed2af9380c93138a0b98db753d14f5415c0..8e2ed37dec32e1f59030b01dd8edd0e370c09e35 100644 GIT binary patch literal 10772 zcmb_iU2I%O6+U-&uXlY(+l||VNJ;IbG);mk#{_VS)U*z&qlz}j3hsj;kya&E18If9 zFO&$eiWLzG6{Z4#RDv8S2INr5O(;ARg9}Ylf)Fdz@*@#sAw~5=ks=@uG`QjWX72CK zT#t9lmFDhUpSj;TbN=ScS-8eVv_fbzhdzG*EY`Syc!TRGL*yPENZxN0g;U}L9AC}#| z=ZT)qcaCgG;h+5fMeU8EIlzk zc_f@B0{}dLFC4K#G?cIA;NB}rAqkR($We+wDaDjZu7QJLE{zQa&u&X8EHa3uh6}1i z27#W}W{^UP`&r-{+%+<|AKz|SeTMr$o2#cw6s4e4$J;aDkk5Y!RKp!J+V8|26Yi&X zSh&Z!KQWf;OnOc<(;GWsai+TrXBxa%k$qS+huu4?)QL#tl?4MZkaLw~&l@vPXWy#i z`Ftp5g!g%qhicG&<7Dwce?=?$hZ3- z<{kspt<4DaZ@z)*%N$S>ZBk6PHb=CW+aB6u00uI+%_`>m;hVeg9!E3E_u4CU7PdjNc~0{KT3}pIrM#`#{}OeKG8Li2-~k)@D*8c2Q_Cu z3GpMXe0i&(6<;2LR;1pYT#$qS5Mlb1H;*^N_`v{?wm# zCIY&P6GT@B#R(UtMb0ly$lqO@Ohm;AY_PWCq!h+J@$-ulQcpRHlSZ4X*Tsphs>$KG z+~S1P>(1f?p{8r)HcGRE`_FTW6LNQN0Cmj5wX-&CI+ORN;Y{ugU_t{9KK&&FFpw_{ zE_=n=&Q=$7Z>JIJOXCKr?>!CFB!N;l?f|W7F%h8D(^>KkZo<7L4{XIV^r?4=+>cL=_&@|PaD^n025^g%eNVHPf5 z`uNcf=ds%?oMQ!V*&tE}B1dH^Tyt8%{s1Vr;NbiSInxIeVQ4)_*nha{MNhi*EY379 zuJms3%eTN3sEGx#ZmUD0reR?Lx>$=IwAU#M#QR}l-Ho}};qEyUVJr7-2mAHSmQ}?% z{w_3E2R4UY$0MNNvgsIWYFEcU0>6A6FTck^jb%N1hfCJF64fdzBA{JaUj)B=S>30Z zhL+~O{!>Oi4|j=|jHK?~%p%lBPZ+4axAVT%UE*J7%H|?smHu?L>@fdCzDf~_?W*(@ z@XJ@}(7dIjRkB7IbtYZXh9z@!Mq&t$p0||D@oM|gb=Zqp9F0aMgyW125_XZ_FPO?L zK58h}y{AtrJlR*AH37ZmaI3XWztAm%c!k4$N}QLP?AsWYhUKD$M|eh0)WY*Xv1^&x zlWBGJM5eMQ6MBvN##)mNu^)6MvIb`1!e-Gf_7B!uT5uWfSnR0ErQ8%q`P5TibkIyU5)ygo13tvA51$L0o_fNMw?EifAP@@A&2~?3aRdTh6A+fY)A2NjFszPdSs@R3ZO=I-4rf(T0LP@!D2jl!W`MXsV2W4@X>T zkg-mfxW6;}uf8wu7bP-rZ#;{X1kU<~Z#rw?yy2|wji;#r50CCK0E5!~hnKysHw;vF z;*L;HZZ%N-!YELarVVxPP5`tAE+hb!a%)Wh#C8{7(?lkAU%S|k-D$C=awgucfNJ!j z6*WrNLq@u0aih~UC%VgpZ_WXW8`?yGYITj#5%ZNkO2?x#uTR zU;c@uh>Djx`9dX0C{az2k!~VN*JXFY(iLzeg1CD_+E?sGZ}Ek zC}NmFwf%|kSzA;nrzZ6uwy4l9ueo$J(*C82817Gc3K3Rp`08C!-7yoEAjfu}G87VY zU7B3>%6A+~I~h^$asHpjd`G)JGY)!87%RE|=RxW*#H?ny5#S%WtCWdcUFn4e)NQ4b-#Fz zVepwxSkBcMh0k=9Rl1=JZSZ+;uphptu(v^t6&B@NIWj6#+= zia@<)E@;E6mP8&a>_t#ng>c0DGYVUb5_z{fk?Vhb3sUj(TO0S-zZZUES$&3kvm_s`b)-{ z7=i9hLj77H^3;=;4Zxs0{?xM9ebZFhMTzQ8LJ{h77YtOt^hKa1r40ey>mJZS^vuVu HI063$@(&f2 literal 20780 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 Ip%%;iKLsbX(EtDd literal 16470 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 diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-2-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-2-1.pcap index 682391cc427dd556e09db1c1371b804c98743b9f..b5d6c17f1b04ee17136bb6b0fc68c273b4bdf941 100644 GIT binary patch literal 13894 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 dGY%{lZF^zF`wH8HJ^#0{vUjARonmo literal 23582 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 JAH1E5^&h*87K#7> literal 18397 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 MoJO2&3AJVWe=2cp-2eap literal 10558 zcmcJUYiv|S6oBXMqx)!(jgPdx+FLCkZ5kR&K@BA|!Ae@tMj;Ui$wD#FwnkzjMEZlR z^#?74KzV84M>Rf@7Lkyc5H(UB`h!N(#3KIC%D*ZL`5)7Dgsgzi*fSYIW@w|rgzyR<>!z(K{Kks! zyR)>ic1^nTezG+3%8Oku(dXc0<{Tl7@Qz(##pyHb6+WKZudt$IDVegoz={zEh<6tsqYUj?n<#MeP<_~u7K9)+;NK9-Fo7N+LWUzMXivK3A!>CEy-Asq*BUr2?(%R znPR1sN@e*7u#_swD7=b7-YB4oy6f(R9*wP>bx+>Z*vgX^VcpNcRw>{sS)y&>w{d{I0g8hp(QYzlk%-*s6%>m8qJ#pGP$JzgSNYJ3oxpUPp zb2w-XRY!x?u;EzH8g{-Nw1&=ig4PfYh18Yo*Z&fOFc=(V)?S|bM<|FLVSou!R z1_`v(g%*VxwRX&xhk5L~n3^U%tKzhnCh0L0*Bsl<;Y2?If2d&V=6a>lHy0!SJ&-DVkJraUK0UlgJzhDZpS1i6hAMF@TcvZQ4dv8Uk^ z{SMi~(0$kmiCvyA8*@t|@UcsV;NiatB+$yvwrdR0Rw^4JS}z=Bv)dYv=dKkLnMHII zXpVb8gMK}uv<;+6Vev#}rhvlYYOh?T(N5=w+M7U{dk+C+EwAI5SawiD@$y{yKLe>U zdyn;RWM>~Wm(>V8o)wV@=w%msmv!2yb#ZLzFEwMMMHi(LAXV11rz8_g$Qg7^V@YQ@ z2?^%nvI?GpW=HmFg7s{f9IWOYG#V4y!j1hJV8oVz)rU>nj+9l1|CyQ42F*wOwjC&a z;%F}EHIORN;qicN@v93=Oxb^o_-wjZbi|0eHq2R-n{&|z!y0pLTqv3o^J50OPv+xU zH3d&VgRF|vpKVq}wmGXh?DBlsS0N4ij5{u6?6Q2>=8T<&*+HxMdq`vC4;RTsHm|BQ z<&h;#qZ;5pH8Rk=s@p0`&6Jikc>nr%47M%cEsUjv-CSq7SI$bs8V4Qqf~+e9Gl70fog z#zxo?9?}3m*(L+cHsrw0XGS$Zb%Z&t4EP;Ht9W>%R|a^qij^4dMWAc14CrrBs=YGs z{10SMdtJw1 zc(1GM{5=LcEgFnFBzuR0{0DTWd3vrv=}G_F0zSX(BA+@0>Fi{IgfDb_XZ+^NJnoRL z8`l+w2$y-N=~K9QP)>**Ta4uC3wA!9_FM@VGIjzJ|G;*^`T-XRSr%n#+9w=6U;ig?O(42Zwc*8_U z&ty^sMh3cNpt<~TU~gTu3Jg#7h(I)?*@iY7Vc(uA6&R`Om4Rj(a$x^>iwX?y>63wG g8`iQB9$eh40wd%7GSF;84jg#BLj{Hx9~6QA0cOC3nE(I) diff --git a/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-5-1.pcap b/src/devices/mesh/dot11s/test/hwmp-reactive-regression-test-5-1.pcap index f7d66c6ff4c4e2806c5a0dd5fb443e9e9f32a187..76da658c2c4c930cafcf2392aa815a98e007f6ec 100644 GIT binary patch literal 9280 zcmcIoVQdsd6n?wg?OiuOD*`P6uWKTp(3X~hC{Qhd5@RSfgeayYUVJ~K zfe1-yNQ5*oK;j<+MIuUqVh#Qg#5APQ9}Nj6#MB=s{4gT?sPE0pZg=<1-q3=R%rM`zBUB zR{van(=?c0((zi?>*6{5c((>%HD0Or?;%8N5~WPs<7W<@xA1-hL_#!HS#Y8ps1K{F z`2I93bb$UK+g`LV0dJ`f6y$FpvGL2VINF9+>iq>}Uyg>cOm3Pu4P56AF9<@ zm&j=G0*;2!Ypqw@XY}9KMJxpT#^SqQ3m?oa7GX`jhToXJX#bx1wNcwRze^B5UEO`% z085c)>WNI19E5q$J&k3m3$tO!il=MW0gbsVqKh`QM-!|ZRp$I4Sj>@dPNXE04Azb$ z)8hw=S?{=%Nefn`a)op=bE!iUY&Q$`%Z4nhz`sz}v!?*F4T~9|2bVHKmbJ=?Qb@Cs zR*w`-l$$<2g{^$keunBoLpBL`5JfKTrZ4cI{7O3mRBryoQ1AShfqD2p>fyo=OWbD2 z*|;#s1hHXZ#-@pH3tJSZcQKQanl!o=M;U%>Vq&h0;JX378{*&6;R_E5-<%Eg0tqU| zpJc4KaHTv+^PZnFe65NR(l*MqiW1xbCk*HiTF}pB3g~wnElyZ{lrSZT6A|R%0_dLrgl~3ax zJtpEa@3flfQGncMmzm;`ofi3-pA*>$1bdBGb{0mdvz)(jk4P3e(SlwF8ai>;xROLnZw8bo;zerEhSwc$Q<9jUmhB>P7ZvOMyvhN>aU`8*e0Imo8D#E{n5X1;KP zp}O|u>Lj3ffeQf7oMV8Vbp-*PwwX~>DUWG_R!BE-f>K!bIzb7$2B&JuR{%>38j|@r(`E{)!P{&H@Ek_u?P}^sKH~NbjxMB)#S==#*|Q=&5C>uKiM7640Cl z0pLG(8K7rPnu~7sEQq4YB`Q@ZPb%e0H!%xH*?Y|b!Zv3?m|@kU#r`w{(1JFo_ZMR2 zMHVsq^kMl7D48zG20jKZrP`i{0p7wJtCW6HXKK75hjAkW&*GK3el0E_XiGIgQwssb zH~R3%1T}(t2hTWc@ezv~jh3K?%vkJHbVM4n&>ptX*vH~4e#DGDgGYX5Ou&(`KX7zp zLTcV8c)mn+VLII;WR_96K@A2`m+3je{#R#Nh(M!lsBs>z)U&%aZxY;k9KnVOMi*t7 zgcSqL58)8*0?2lsg>NW?fAl18WN!vO&v*z)&rQ^L6D57b8^QYhdh?Oao=i|#<=kc& zhAw&wV6@TKOp3(!p^ohbYtNcojO`zAG>`F754Df6-HapHJm74PA^N5%8hbIe+X8z& z-Ne+z93L&)pHxQdY1w|T_O@0PW4mc;#G7EI#n=wL;cSl~`tn@FUJ(8NXwO{u3nVH) zQ)4SDfUbR;)jo6KF9gG06zR_|G-p>q z3)PTUPiFxSMxuxNfY_rM_FI=)Gbc+ z^r}-9VDfF_O%1+4K($1}%BkBHN&oRvY>VWfTRiWP`?M{hrnW@^mN@P|g<++&9nIk{uA5EE&G|SuDz%wDk-^ZeyM$g;1F=IodY^sRwe;y!f1zF| z=yulu;P!1C(5YO*xGan_aH+zUrwrk(N2(U(a%U>2;<7&AGMJ$dg6g=WBY`rux+?Ao`-IK7Ym&L z&1zpGI9$hH8RUS@oefbg3DB(eO@RlSduutMo!^)QG^?!uyWlPdbb2>O0cGh*Ee~p) zRKkEyGg>r{LQ7MdK+QF$El`_->eMDs^V|kYxVLplD-Yeax{{%r)eZoUP2+&hlC4QV zbInm<|n%B8X9XRJMzRm#6Y6pPtZ{vWDe<10hx#lQgzz-HJe2rB^ZQ{{fa|(gl98{N@jQ{`u literal 8304 zcmcJUT})g>6vyZ8-eo_qvN0x*m@JE88^GF)6i7cHU@A61mGr};5>fSA&aoXl4A#d>?PV6V-Fx+ELrwQ4ljSfbIPq?jLx3c&fEAqi( z71gPueZxk$!`lQ*ZsEe__uyrsQ%7x3nwyy1t*t0D_?wvE8o$Zf(0j+9;$`r zTYg(ObK7qVQ+NEfFn!l=3m^UHw}lVy5%L@?blCO#bdn?juurqSIY64i0o;QFbaBLw zcYYEG+H5otVm}k|D3Gvc((r+eof6>Y)m6^2`oVvjqwXzd#}?3lvR69K|$ggDZA@5cr%b z28NV5g{<;&aXQYb*aa}`k#SGW8WZYQ+)t9|z}y@@Gm#Q_#z=|H%gI>GvP#&u;SRq> zC-e;5C$!zCr!+u2DFe-!&w+bBzp4SA-Yo*1bw5vb^30Dj4AaPZI^{G$DRX^Eq7{w7rSJjIrj6+!;{Gl4RHCG3^d1{15XVP zX@JR-A`mxQvxW=I!=A-K4RH9B3^Z%VfxWvfX@HA8GSIBy3iEKFe@X+~)hh$d8gk(4 zUtiS#`v*i|7;KxTe4lwZ{POaafQO(CP|nQk5XTD(D7|v8An2JHi)!3B2|<^%l?44; z9Mx75p0ajUJbD= zpKZJaVW%ECAzcyU3U*&t#CQao7X{-12?_z((D7Ztx}n4=9B@yOL<55KTtI%;6-loD znDY2GD*qcP9*~iZ2TDMM|HGkDEl)<(Sa`HpC^8o8y+Cd*FM);p$#n%ryTK3a`gcOb z6dr`Wld%OQd!N!+ca@xm(ZZQnY*~UH1PMEXp}wzF7qb5!j4HGDsK4TrT~Ldf$}XGE zJ|tLwV6bLd1pW^&bwg1A diff --git a/src/devices/mesh/dot11s/test/hwmp-simplest-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/hwmp-simplest-regression-test-0-1.pcap index 5164b6e7861614d9c4fcbd7c37b2a56a0a603e7c..2c72d0caa1bbad50c76c4ff79e793901625cab61 100644 GIT binary patch delta 1915 zcmZXVUu+ab9LINN&)eBMpcVJZoxO5LLfX5YZ3>zbG+21x!K6)k&3O+Nnl_CD54Gxr zOKfVy`T%L8cAa?ZJ@rg9ArTUE((+O%FQk+bJT$pbjfA2Pq)n(sDKQ%2{MotNTjphU z_xJsMe&6}+?Ci#hXJf@P9fr@w%$+gVwrnl5gRobjcL7uy#0|(~=5bVVfFxevZ32N4EK1e-euI z=~@@WHNdWAZlF2oO!w3b zoT8U>9GFjXz#g)hlI@7Wo9pahVE%wRS@vOCWFJ17;n_cuKSpZh*@i0#K~K)lZ5%!9 zBt1ccq7V4`NdzC|IV4BcPD%?=-vt3k8wqaZQI8uStw`Zafm00f`{_C>c(jPXEZ-ER zv=hQUd+MT8Y*UXMoa4!}+Cnh$T4nEA1pT2M3ZtqbXDI@TO*c2a~a1)r9RJm2n?QY^GisX}W zy$OXK35qhdf0>)uopT}(jo3R=>aHX?=mm1-ZnY)8MgjTo=XDkgTp4piWKV42#IX#g z{6Z%FuCrrp^#TOP{oKp32`5Icda(w*KvO5RJZFqw9QT5nl`dh$Y)Nn{+N7Hytw`b7 z0>`vm%m=~w2FRDYOBa;l%X2K)++sQ@?96Un)Ret+-b+t*>rNa*;a7{+NBeLAWX=JzO#woxOUg<_WeE24 zCdqI3*`|ari#mNnZy(;xKhwY*d22ADHt=_8wgS4|MLNAobz$;8mTKCn4%#`%%|sLw zOVHY3Ql{Dn=Z3}>KwDj;wS3yTTo!a^Ltdukb3NxZM>Wvp7U>+HWS>vQ8;VSaqUKp& z7Aav-5K@$oy71u&@}mDGJT0<;`7!0A%0OyxC5Fimg3NW^fZ4GUZmvaa^bwKnbzn31Gd~=4R1Ja3_(PZh3&| za4=?yvE8;Ka;{s(*DeELdCW_2+>lDQByPMBWkPh_{IA>ba z--%@Eh>QzafDm*3i0vYxUgv-vof-fNDKEfsQyLB7mx}=CG#`xCxgh%sGM?@Nz$-i4 z0CpTu2jhiyvH#~u$euPU1*d$OmmeG+fb3uTz1hw%6kB@?cE+&zQ?bs4I>T9d^9f)b zA9S-M?u4BlwoVH$9d6dmd*7^k#@ef7RawSgUIv1udkKyka-b}Uhe}ZWb%k^Fa zc47#^(OnZjDjjl@WE!zf2wRs)0_Y9%%GFKRsp;j{pDw diff --git a/src/devices/mesh/dot11s/test/hwmp-simplest-regression-test-1-1.pcap b/src/devices/mesh/dot11s/test/hwmp-simplest-regression-test-1-1.pcap index 36422afdc56704de643032c17f2eaba32e2b38b6..e4ccc9865b291f943e7d3016809cb05b97fe2628 100644 GIT binary patch delta 2067 zcmZXVZERCj7{~89xAeYL?35NZ=+gTE*Fs%0VCz=NUNG4wN3xRIgaC6(Bf(BU(yWQg zK46VXwm93JxXWT9+XoE_QOxBfCRovAIw>)oMuHj%8>oaTzGQ4B8sd5BxxFpt%hPk8 z|MNe;^YrALi6z^_k}czbd7thK0WI4hLtkDGhk(Z};PI0`o9KtX`_X_>i~6ArZr_x> z(+B_Egd$SyYNDv$EC{=B+?D;S4jltsaAC8V%LD|W7w3AjN9vFaJK%J{G#l^;a8H? z5MYcKX2NZJF^=(4m2c1XC* z9+;BRjGTk7%2d5ZL5HO})F3gIImGMH9r{FX>v>9Z+IU!f z?h(lLqmcg&kA|ISi|BHOrZ8tAEEK?7!kO>Z?HPyoihxL z>w+&X6P@#JV}(xts1ZD7v;;#O5WU_hgE#bnTHtaI2P?GLlQ;W%rzD0ptfgoffv7|RjfAU~Whl8^3-?bXG+GZ|Lhy)Qm)`NX|l=V|ddFNKYbn;0FW+T`DeFj)IVKN|BR&kXpn=(k;K#;9SPzu5%)E8zQ!){V)-A3`;=j6U5Jzt*O z^ZcLR^FJqtb0!uY6N`?d2WMJUR}d+wkce9|YC{ltoE#mww$$4(Jl95Q(^Vvf9oV-s zbvugx-bp%zs&%^JiCrAmMPpa$o|}xKW_)XxnL82YxDJ}@NcFpkh(q{X*aTf^Cpk%x zb%Z|J!{k@IVPhLNkNl3lHxBM&(;SzdC$IJ@ayk1J=JTLyU!}XbKy_|%1Pi8iAr9KV z1UnN^P^Ojkc9R^{DvawITLJCDDs921p-Uz}cidIVEco2cc$GC?&?Q&tET7~Zhlp#Z zbRDYEjyn=aO7k2Sp@hi9iN{F2vjLyy^$l}kI`^o9q?{SlMLLAX(Pr|l(1Q}>y3m7L z1-juL{Juc;3vTk9^gMo1BK;>flQ+fFc#mWPtW}dwB@xerz+qjbeI`6L_33{n9b5XMQ2mp)wAxyqWM~hPIlK||X`+X6EEjSNP@J!97+CLZv9st- zFei$st5~b+TxGr@o%-cA^pqCx1r3kn<0cVboCIb?v6eC|e}1(BLjp>0ed%x;Ew@E-0R{ayg1Bc*_Xo9rg@@cDmjOhcBm9$*^vv{5flf|18ron$dS6vi9~#A1xRSbPLfPJYSf7Ye(Y=l7@u4|>_nEE z?aWQ8(F=^TW2Fq68$WNZQ&I}MaN8imyVlHgQB diff --git a/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-0-1.pcap index 4814ba843e8632ca72d583fec71e1b1b381f13f4..3f42ab2263edc198b500ccdc13d580faea316b74 100644 GIT binary patch delta 1650 zcmZWoU2GIp6rOwU?Cj2VyED79-5>U6rpR_5C@rxC%9dRu3MdlNRt!-?tdvG$VuWa- z^58Z+n1+flJrBf$-R+`VOdp`lCK!KUZ68$BCi;j8EW|_`5{-*C^b@qP*inyT+^*Lk6VD<~ZId>~JA0U5=K7HBYC(Rs!qdwity9vrQVd){Qt0=6YLGhKz z*Ish?BY6*8@#$XG`ryfxVcF0&JhiPa>#~L0+`2gLBaoW6RJrGfoxc5>Q=@?TmB#nj~yUa9z^jNH8AD(lH)hqE4 zHoJy#vzKwoUvH5fj4lSRhqGu9u7;l@PdwbJ^5%d9rbmYZkrJ7v=TSLMoCO=Mg!nV(mv`72!7sU)e@lCclZ6 z;h#6Q3{P1la@7JaF~6Ob_?(7T36UZk!!|mFR>nV{{x@l}> z<}xA~uw8zcDUnC%c~p+L8L>0a^OlUg`^sF#{ydd&l!kU0j#CG{7GpB}`}eK~{tFPs Bp6~zw delta 1739 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 diff --git a/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-2-1.pcap b/src/devices/mesh/dot11s/test/hwmp-target-flags-regression-test-2-1.pcap index 9802141990717725b1e3a6526ab0526d32d63343..fcd2dce3b538ffecaf7b3eea524a6178f12583ca 100644 GIT binary patch literal 13418 zcmd5?Z;V|<6+idAee3I!vUlH8wy|{g6=_#dwyQN1WxFg1OF=Z*Xro_fT&NgL+OUTB zC)KbokQgF1EPjxL7TRiCVui4gsEH|YTOu)pP4)vAOep1>7^2~WXiN<2@64H*cjwN` z-aat<-XwSKy>F(!bAIQXIdkr8Uw;1ACrZ>urme0LeM`TbJVG>qXTDl3qE*$@U?bDx z@yJB-CjXLDe^TFc_4uu`2R74Z`VQWG?>E&vbT0twOStp3(qcq3L8+@}^uzS|1kY^{ zf!Mhzp{E9juT_0l@1LbzW#WGz?V+PYm*bJIms|212{v9XdpyczP|cMdk4NW=xQqdd zdGKYq$iEkP_4GY)DJey``|T4%Gr04$@}RbsU|Y)%C(2q`d#z!qN|I!3^#brcTM05G zjvfn)rWjCd8KYJ=<4GB{mV7_D{rGsmx(@gEX5DtAJO&AI_V=F%$ana?U->6~9*}SC z`w~VuviP#T|G!4pBfkj97Yjq?u9E@(%Bc2lleB*kQg*>dVy}c%T1iUOj_p0b_pC3- zkiHm_?&Jw8{SqQyq-P_4?o>d!<-Y%P!1fOJ@eWruYf#RxzZVkX?9XA;TU(CrAz#-0 zCD^{tv;F-~2Bcf|2lpm)3w*#=F5k->Gc(zH(94lEIzn$I$>ZqU%>U9vm2LteUpZ8r z%XH{hC+_f2E3`Ms0}f4AV`}OEHGsR1d4M&V1YqK$9)2f^s>vJFcMbCE%tmns4)#We66$`y>);QHRP-vw6Fy7(5$f2>J^i)<=iZ+QsZ1w4(Iti@M1`^Lgmq|AHZ&jJ73iYv}7$4KY^E)i~!?T zEtwtL;`b@ctG{iGVmHJFI-XP7(kb>cSio()wZ)uhno_1f){3vvh{e7N zoOphC7SXy0Y`*L&m4ZUzxIQD2-TaV`<3xFD1J>yQnZ6!9$HVi`(qpGI=h5QwW=a$t z89D21ofW!%Q-0ShE^iEAbJYW^(N+K^K5B7!V^ClHdjPdL0@SVO+#P;tV>uI4&SKEJ z@T`y@Tw{kHgkwu~iK}JLhJ7oJtrwcscyNvM5y5`)^0Mzz1hFKSFAqdn>1EjDsYHYL z62UE(ToeO}NIsXA{l%ap1C3icr*3#_@k+os94oNd^# z7-NsCCnxc~_@TADa^Huul0&h!pdblpgu!!?#VhW1qIBTymvL+zYcmFWxKr#`u88Wb zqiNh=Z|M~KSDX6_*57f1J;FQPCD;U&qpX5I$Fa3dW_cc&^^L>FPa|H!;Rv0qPahGGBih&j7Sty(_>3LpMm= z!AdNG8{Z!u?)USLE&N``XoP_lrWs_uKP&_F{ZUbp90pf3qo9&_22(LhN#!&JU_n0z z7D)i~o~;41h>jXmn?-+TG}xKuD@kq*L3p2q{<0JcX{q4MZ+S;@hVnmGpI zKOMviwTR?HR|h0p&fB(SI2*|lM0#&pG?JBtJK?;%Js??OGv}d?_4~VGHjWxgA~{qd z0$>XI@s7y$UP`F8-X-EF^!GffY{u*sLhQ1E+h`efS-VOB+ym@ZJ|19aqvi+KWTVE} zmvt_m6?RxDybyCyBWqK|t6u}Y7RT0m(1O8^e?msE2R|9rTi32D20LEmMX>(^Y%d;c zwEyYatYjy*$U1AhA(Gu_H|Js;Qu@PKJ=wL+1Fr(xlWZe#$5=qJ6N$$aB=70`kn`1= zlHUThC)q~HN5-QoT<6m{k?iKv{6}CPuX3tkjj!`Z;5E?SV`p=A^-}?M;!DY5>7rqm z&DlM}?zT?{*je9we`kQ5ie~f8^0r}@jhdceS9}ORBl>S&dd>UxtUHcQA3m|Tb`m(1lPG~Oil>AAVI1kBLZ>?Q9 zBW3-kpo6#YRA}<(JxEC&yOime&?MPl+*7TdVK;>G&||0cXLfg@i|rA)Z&vfjk;s=wE@(-#(=sXox3dmiPJ65wNBuwVkv))k`LUjoCC4*ZpRs!=UN-M zb2vMQj~=@+u%BeZx-lLPYlKuLtk=ETXYS8He~+CF>wX*+c%F4?tQCnux5g6B_5iy* z(X$EW{@sxPJMo>a<66QlRL8-q+IL;4<5>S6L4VJ8N^>6FhC>q1cg|+{hGFN|aXrB9 z?$7~>-7Ig$iHFB7RfL3N%9|}(!>RuBIj3vBE3V__l=^gC`ARPnS7`H&d=f6M;|yTm z*F3-)RREaysKs@hK|TA$0BZR#GNl&rKWhXb=-`EW~h$q0e0U*_VCh*(x2J=1D(e%yW!Pmgg2wI z0o0SbfqDv^yDW?AxH)mH`}Z)(sqMh+N*%|}i`Q{H8n5Gcw78CI#lsr^^(7P5>t4sP z{_#4FM~mw?GVJ_Qj~-wbuj80qaUHjSS!kg;t{t~ssRda7cpb;17eZC4vsvm7XZLR? z`Bm99cFU+ky@aba3}&~pu#Q`h$PCqSJ>a|II!?#l^z!vWOkX`t>w*WNJx2PKfTdjJ3c literal 13263 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 CbYK$z literal 7304 zcmd5=O=w(I6h3z{ZOmr*oq554ANB>8r@iMp)0!z@jLh4_vYTY_vK|!Gr4fzo0)s( zyXSo8obR2Pn>Vg}nxj0$V|A72b^T^`QqU84&9h!7T9rdCb{khBF_{y$`4dq**WI&Y zQDsXP0&QNQ>;V1sz6wui*qIyOQ(oKH~9Sttu-@i2k~>OL=c**AKvVPEWY6 z&I@`HEbwfqQ++xXc!>F`Q>Ot-i|n*en%BZea?t_(PUA1;VB0&q`Nv{W(k*u^NgC!W`!|$YL96q>sTH0fS$$Ew%QxY&#GNv zo-SVOz_nOFHB%w4OSL-`qC@S*E8Zq+=yTjtuuDzY>K6=jTVe;i~*lnk=m7MVf*70>9DAa|=E>x^VA#MiwEBoUJY z;tZ1sv<0-LVCw|Zyhqg6Dz<>8IpQi~%I;>1%qSa4R9-&i)LBReQD@??Q*7BHGb%x; z{P#5nHK65kbM?NlwIhunO}+-~qVx*uLO62?`OKpv|NV4qO@4*961uJQz@}jDzc9;&So z{Pu&MlM{lkJXCO>u4W#U>gr^OfpM~Wy25n*bQK(2JYB<$e!5~#50!G39{$Eze}gTv;@I!~>beWFgbV`g_0 zNf9;*lQVHQu+#Z`53854i)Ye{DZNqWM@gPmuqEcRxfjdJ9wtP-%<-;`8SLGUBOdRP zDja&$|Z@G>Ic6#r~#cC zH2Wr&=RC@aiR76ikwx<&Rxs>_Ska8{wzHvU`@ad&npa-UZeDBHg)uyE-JvU_1<)lv zbU4dyUTYGRhWD&Gr~z#sZVti_ni8kZWf0hjm+`=NLS!k-k~+>-7!@MW)6S;?+drGy z&d31zyt7oSuDr9`ndSs+i;A)Rxr!%tGCI6^01cHBJFC2wWADsfV$*n+tzyTN{kv}b z=A?Q^k08~>UMJtPRV+rmRd!GV`gWIDK-|V=tJq)4OrMH18mG4WEy4C5O;s^o%~r9x z@^0Tu&Y>%$pFo$m<#3j*VlnE8s)HKP%)aIzoW;*JzlyOFUqj=ZO0ZOnREOtNG5qV) zP8DPOzxQdh)G1!wmZ@S3*oEO!u|@*6Ma9_u>9QwwGCI6E1C4WHXQ^1EyL0Ooky5cu m;9a(g>FA6X2Aot6={QndoN)3zTg773-YEw)pu)IWK>q*|%yjzz diff --git a/src/devices/mesh/dot11s/test/pmp-regression-test-0-1.pcap b/src/devices/mesh/dot11s/test/pmp-regression-test-0-1.pcap index 3f8136701252a84c65b63b0ed84d9992ae1e2492..f8fbb750feb871cc73d58038251d30a8e4da0eb1 100644 GIT binary patch delta 58 zcmcc2cA0HM8Y5?cA_GGZ0}xOAC^@-<(SgZCX|fli4CgH+28IBjc)-L$$;li{c1*97 MCZ3U*oWk@T0L;P=TL1t6 delta 58 zcmcc2cA0HM8Y5?@A_GGZ0}xOAC^@-<(Sb=)X|fli4Ce_Y28IBjc)-L$$;li{c1$;v MCZ3U*oWk@T0Ktn80RR91 diff --git a/src/devices/mesh/dot11s/test/pmp-regression-test-1-1.pcap b/src/devices/mesh/dot11s/test/pmp-regression-test-1-1.pcap index 66196523f9849c35b6c9533b437b82ae83cf73d5..4422a27360c9d49a24dd70b3f23ba8648162fb2d 100644 GIT binary patch delta 58 zcmcc2cA0HM8YAZqMFxf-1|XjJQF3wzqXQF%(qu128O|^z28IBjc)-L$$;li{c1&W* M6VJ#@PGNcv0L;=4U;qFB delta 57 zcmcc2cA0HM8YAajMFxf-1|XjJQF3wzqXXmH$)1d|oGwZX3;{slfQf~YlR22|m{^o2 Lo{^cH!t@>h)!h%{ diff --git a/src/devices/mesh/flame/test/flame-regression-test-0-1.pcap b/src/devices/mesh/flame/test/flame-regression-test-0-1.pcap index 75fc121e92ad416a3cf7fcc7ee4294138156e99c..49c3afe29ca8b303d06611a75d3335e8dde99a87 100644 GIT binary patch delta 444 zcmY+AJxBvV5QTSkF1KE?iDwWrBAi%=Bq}K^OcN|Z3Q@rnK@M!AMXEH4f}Iu$f{umQ zsNfF-70KCX6=JK1m5pE;u@V~_LDb!~a$(td%j26j^VPpPbP)!A&Z)_JXdCi8W08as zUkT9@bVH3kVF?>Hqba*X0Anm67~RD>=_e}ak|*JVp7|_JI{Me6IZX1Gu!1G%3@129 zP2rD{x~vkuN`tXACL5)FYZ3FUjILTds#`v$Tt*M_ugkZp-=!D$p;N%EH87%IYyjq5 z)UG%xNU;rBS-twUtWz`8P7UE>sSS19khaum%9#&x;Q|Ot$?T4$QSrK})q!eNn?^?& z&~PM2X=w$!kpe)4-sHTNc++Fkz2gP3XfN={A>GEt&_5J(V0l!C`M7W-%mligITmID zTQSoo!h{}aRiUp_jxm*8ANK|vV-m_#8FWmXv|h>oILmG>Xu3tf&05%irsHZA;~A+1 I^|cp&0r0a5%Urw$edC zN&f%^2N6Xa6v06kS39^?@DhjP?j7&my|*>d8@tSc;i3?8f{U(fmkwb{wvayM2vuPk zr7j3EWd%%l;dxf~$dw^}@%(K5?xRomD$%lqT$68&^=c4Z++_nWpB`<#MI|sbmffO{=9^jLWl(#*4 z%Y@j;W7I7x&LEBom~hC<289H_7g4NoPb#xZ4RB&J+lIJi27t@MdP;5&1XQ;k@ZeO@ ziRMww4soriSX0;euG*rWl{n`hIUldjRBGeiW*fJ@!L)d#7yxX;6h1}TF)XV1hGvk$?m(*feYU`-;ZV(|rwB{Q{m*Rou3b=Ms;mEZoY*Cq3bmnMmm#`uU=Gkk-opp5Py83vn1j*k`GQ78h~B9uSkB<{K{^EZSAtM9aR; z2N{zqliaG0uc>L#ku}?oau&X1V%(96{$fw|h^ah|Wu1ot3$N4N%{gb6_}3%CZyDpR zt9bV@A>at*jNLqTy9j48i)|nBY|ZHK8j0B%*oVbVDM@hU{LT@hGdA8+3G^X5hLq`7&Y@kNe3Hbr;H z!0U8?6%x7alwnL8=O?|489u|lW1rV(*fcPAsg4>=kZWBKsHbq%3-O*B>?sbZ!(AI~ z(dOAcJQr>D5{IJ0k20&jD>!y6+)LeHfABU{O(UaH}&MTu4-%H~?acwmWpX{HBU!)tX6rP6#L>;+dwO#Gu zu(iQuVNDZ!xB8}y@#we%Y?i!(r*Go4oxlrSz_kmKEEobFNz;+l52J@GeI-m=OE6Lj z$=r!Wwgpd>a5N&INSa_bOn$d%^{;o0lfVFZPD=!fkx#JpG@OSzzpUd`v<0#5XN_RF1K!S$;I4>CYT(Gg3o19*jd>4FGO*6EtdT;-+bT9#O1r;ILSo;(BTaTf#H?vm7FoQOZ=z; zyyj7+m|$#$YWj5@;F0uoSqK}mRzJMj3}@{Cr$huBis4Ttz_tjXWw;M7Er~vaqLRXK zXsG!VV|5Cu<3KKtZJ6Lg=vqZ_;gFoC?rD+F;E2_L1()Hd_rK0wmf^D#U@Z~BDKV{i z6DO)1+WXuHNg2UAu@<%@3Af!~+(5HFJiz62fO9Gm-`-8EW;ooRSjIS*ir|S@8;?^} z&X@4f*@X3ytxNcu?!ela)KRugQI!^UGLvFne|lSqi*5+_=hB3|xD-aL!zQu?4iBL+ zR!P>kGVXM5z*kwBWIxx$5w8T>*Gc1D^&&VV)>A*dCRkO+9H7W*jX9>L))RqGOg(@0 C^LJ?g diff --git a/src/routing/aodv/test/aodv-chain-regression-test-0-0.pcap b/src/routing/aodv/test/aodv-chain-regression-test-0-0.pcap index 08055edb775b438cabd1e6df519405da85a42f47..fd958dd44d6f22aa4a4574962c3a6ccbc919ea14 100644 GIT binary patch delta 825 zcmY*XOKTHR6u#%oWM-1dJRoWFuxTfP+Y%%#DaD};G`MQSA7Di!7Ez(ySc^(UXa%t} zJtFu(X%~_{Xsf}6Aew~>H%ditAw_WEMzkgfwyx^EHxTQ$_7f<)!FKw9;CU5N51Au6JJHz)cX|3!xF9AXHNqnP7@4zdIDqY}n9o0+lk=FGTY|vYM25Y9!2?#`(%4V|sNT*%HmxUc(NYib@ zul5EH13uBY$#{UPu$we!rKu7s!F_Vf6pr+_JUumiO+YF~r0ZeRuhz}qfWLAr$T{1m zx~bwz(dCh0`=C<8JXGDZ!+@g-eRihtVnBu~x(we88O9^D?an|>CJ+1gZJffjKDjBC zYcBLi4J$gNiS&-(KT$m%%>k^4JEzsQg0c&Y%8@SjBrGp09A&T}#xg8OwMe%nHmoXC zi+VKCZYfz7qIxuSKnVc^_z~k#tV;ATft?xDufb32-ObFAi<5Mf@@o-jKP&FQBjvhLB!-2 ztl~oOvCxH;EQDIB8}W(m1S^t6+z4%;_y9rBJ2&3V;k>?k?tjm)dZThBPq)xZ7ut56 zzYzKvt9`Fdui6_84r-WH^L$J`D7&So7Nf5;MFY$=(@sd4=UZ2%e7Fkjl%N zWS$7Q^ctT-COyJjc+T(DI_T*I56 z6lWw+CmT~HeGw#$5?w$-KT0X|G6gh6yzCQtWKBHR4gOt|%p-!G=BHw4eSSzOXX z{zgkvunLOQ`HN1I@=>>;_-!OK!&C#in9L#*4S6YrNjIaCqgIp>K4zmeez&#BIEREW z%tz8Fr}xu&xgEzHA4^7!=X27lD*XrfSe=_*lWoL9(em+Ytj3?~ZnFJ{ogl!TS)mYL zbqAO?EB3s`*t?>7d17-Y$KT_hXrh1|{f>b|o&TguIJPXEUydkkJz3-Hrpkx}=;Jv2 zn2+UTjlK}A_V{0Mp*_q0NHl=j%s>ma%{)%n6>VxzerH5OkBRu5Kt1{Dn%&N634`fu zlnc%YLvgmbHJZWuuE%d0s-7#t@r{@RPy6lZ291I1sS5W8P)?0$+ogTC7^BrAty7vd z+5aFe>?j$cTK0s(=CRRU!b(nG9q$N@G#5IU&{~aK`BnMI6h4m-}Cezg4e&>maBI$4}z} zy9*b(U!#kSl(x$KiXW?LYA4^INJm#k(hDhU#8lk1Y(u&ObFdjx?!a1s@>2<$C zgH68g{3^X7`RtWLd~gbBd>!N?VslwV0c(W{y(7Ll#cJBu4n`MI?%7YaT+m5Ve+apW V8-*%8tQxX)FuadBD%q1g>3im<70&*x0T_xIHFxcJ-=?8M3F(HfqxPw2dRO$K3`7(v}iP2Mz3N z&SP9&%DwRb7_M$j1OR-EtJod!^!`MR@ItdO67hIW{gnACP+f($nN!Gdv*!M^&eK07 zYg%fwVJRN}NMg{i!k}kU7)-l3t@vC{PZ86IsjK)yL)e3^CiKT#TvmO4*&M9UE#$Nc z-3Mt6*sSQRIJnm6;*;j{Zzq5dp)c2lZ+em5;ciPFXZ0fYGh7jVMRY$8aF~_E@z2N@ z)or{bmHIKETR5C(Q-Y0AIZXB|>eCbKh&h6EGFIVdx`<%GH6nZ?Du6CZhEF4+^A2+? z%<LqdF&0}DR_oAho#p{?)uva-2q!~kIINyIxiw4Njh(!{T{vfW_xzCB zn<=OfLG`*P-4mI@@K9zU(TA|rz1aee=l0TrV8#atW@Z|WrP>s6$0eJqSr>|1;!_;F z02Fd@xl@Yaggcisl$|zo<%?vYFTaN_Vof%W18!XIkPIA5d5R_w8$+Rajc(r#&ZbGr zB&k!1W2NI@UP~j!@)5q$6C^c<{;%nf5&;8dYlLQ?oD<}hB284CJm$BSI32#o#H0Tu Lofs3q$E~@)kb3yV diff --git a/src/routing/aodv/test/aodv-chain-regression-test-2-0.pcap b/src/routing/aodv/test/aodv-chain-regression-test-2-0.pcap index 487afe87ea7406f121c92244ee620a802a0f9aa6..30f1d7b930a65f328815f306df7999c6914959f8 100644 GIT binary patch delta 663 zcmYL`OK1~O6o%)Vnam^aw3FINW;BYrkUCaqpcbu7a1-o<>bgD>i73>^M%>j}>4*jC z_^)gm3x$e^1#3Ypiqc)93lT&&x)5Esa--tHjd!LLFPzKAf6qDhKlje`JUuXN(;446 zOOw8n^XCV+$^MVJaafV0K1l@DbPHF=r7BLhTB?wwb1M4v0=|)JObKBlZAr7x#V&Vi zaCMuuW1MTWAHzu#vzozUx~Q@Ic?~;dm&S2i9%A3XYt^PW*5n$$iw1SP5DW4!q7?aZ z9G5cfk>JL=SXOG>nL=A+kSEfC9y*!JgxQTq(Ri8Jbdrc#_!V*ad`swL6(!Z9CYq|l zTg*)ty5@2&i*9X@_hfNXvuP2FnnyF(t2@+zqxum2#jN0cSk*mhpkz4o6(DagO3<#bakH=4xk%R|Veg2=SBM`wt}cv`7E| delta 721 zcmXw0O-L0{7@hB%dGq7@@6EF}zL|PONQ)YzQZmGRgC&v{g)J-V!PrI$3T+XT5xs%} zpQnw57J?9#i;$u}0vG*gDC?!!e7HC*)`^js;pRR;jHZPCj;}UO&(_D5^K@GgGZx* z21k@eJ{d!AEEfq*Z^A>RWc*B29WGcFnj$V=PX#Suz@Bs{9E&s>1LW#=t+~R>b~w#T2M=m4jl>n%Cka%SLwB@OKFlk4ku=yb zk6*Bu!j@SM==FFK_4t~CUc*AatYJLn7e>X)h~dL}e=)cbu{hXBRDC3j+aC8huVOrD z({C)~Of1IFP=|O8hi>3hqD*7>Bk(t5lVw`MSkj?qc%Ce?*EUiot~}Mr;{p}%Hs$d` zG2lePnJwuMMGaY&*xDD8A`od;feBZ=7v&>U1fv`W@$&;GMdsrAVBQ^f!m`L~8^T%;K0V|~~eQ`L6u zKAK#jGw_7Nt6@xtBF{xoR&1KW2T|ey9YacyzT=MK&@Id;9zDe$#p9EyHW!bk@iAs% zCK|$R)#r&c*0yAV&99NvJetF}jEi`oIdla}+9aPhgTXON4(4z#~NQ8Y3o+Aa^-hXV-}Bj!2rCf^a&Fo*ez{0}3C!XW(LXm`^2x^m~~;G}vV>*oD8FCc9t& delta 601 zcmYLEO=uHg6zqH7X7jT#%}<-`ZnBV`dQ*!^V;Z9FMG`crJ&G4uSbI?qURCsBK?Ji7 zib$ZMQbegD1-%J9h!8PVP}B-mJ?J553tp@7%SPgN_+Z|=c{8(F*eo=1bk(zt(G$-y zz4?Q*>iwwml!7wV_`8B>k)x-$PY$*5I&P>#@=dDP$~7(qah7XT#j-YnZCW7E`WY9;p`1U`3td{e~|bGo>((YeAPMOvE|IA53h-^C*Q} zZfE@>cd;Dm&`TsDj<_g>a44grn+&2Iw)vSNQ|cjGy((oDy>sKReUzTraDyz1K1a9lWz;|;q0kw0N5}9u(GphKSISM?O4{P|9v?1slN}*;lm=Whvmmtp z@Qs8kQvAw?(m;&tuJ~u$sbjCXcFVi&KSx?15?X&0(KOW^M6& XXJ2qKTjBRHf4nNkzqStqTH`k!@LF zbzV1jr*cez#iG@&+a_mVk{!%yRrn2zHHY1q{Zf-`veAEH_b$pNe23BSN9eP&ijnQz4wH`1ahrRX`hb!~2 z+T%z)kcY-U`53TB3FF!{DU1JRVW``2Gz2X&g?m~ZZUile|G^I-M|5n{(=guY*iLl| TZZ+K342*;Y8hdTGlZ8)5V-}^l0c~3Lmj2}lJDO3itEGG~$NBF^C zWuS64$}U73%rdp|qth1NGS$s3WWqs6n%`;6iz;qVgLX0IR`HIC>|C;A36F|zREMIB z87Wj1M3!;dxsI%28Vpto*lv?tgH8)r_64vDj5&k$%zSBB(Amg8F?$Pw4o^YU+#$0V zTq^EK8omly2=i4~h%Z7&PQ@3d;h~tNtN0~GX%)SW4`CSy=3Oz2NCt!@zF&lXV@cWv zhipYDk1okpbV1HS(rMO6COu;4b7=T3x1lqS+b*r~=)9z`DOvcmuT5)>E!Pb|YucRR zqNfhnlZv+vD?Rz_HRwG?ee3jr|F;aqDa$<6Z$L@G6Q70$Ty`fd`pIR`i(|?fq{c0B Tr5KR%SiX?ofSrUzcl|Se@!ENX diff --git a/src/routing/aodv/test/bug-606-test-0-0.pcap b/src/routing/aodv/test/bug-606-test-0-0.pcap index 7d0916ae4b2ecf1fdb74559f58e5a33442c516d0..57f6bb62fde14a377c63ae60f27b8a02923bc32b 100644 GIT binary patch delta 785 zcmXX^%}W$<7~c2Y`PkWynQ?b@-P+X|vB(NhXrm9b45UC@lnx!t3e;UB`Zx%IWo3Z| z9ddo>mTUw<$mmYtfPAwxDPH+eig!;~I`f&2Z4;$@1FxEd`ybCz1ow8tLZ>y|m^M z!KQs!jwt*fg!OQSN5pMMhFI|`!ANo0@FZd-W*|kTh)hw397S67aPQz#)WxQ0p(PT= zcC?cpMSO`~vbV*PD3-0pS~M>(bV34YPvH|QhR3mH)hCEi&7}o&o72>VDXSWmb(xEb z=bSh@WexBR#RH`vu7zsk+Sur@d&G+!XHxVHuIu0O%Re_B$;SWy delta 730 zcmX|E&4JE zGH8+dFQQdZxHGU-2|pEsqIbGGa zkmnKlhMQdEs)4t0^w5n-R(8mT8NILUIPFt29%bPg}93XUgBG=V^C z#$=<1hshFt%hnAuhxWLIPsuh~!ITluZG@>&`hW+iBKOAy9o3~P)LACC?fOvBCBdor zycI*W;XDrrI@1@9Yi4Mu@kGe!*b_jmf#-nVRmeoteJ&Ar~2eB>da8sGSsI0JF OYPx_oO*Yz_5BvkB`NMJm diff --git a/src/routing/aodv/test/bug-606-test-1-0.pcap b/src/routing/aodv/test/bug-606-test-1-0.pcap index cc84ba05f0f6bd67631a0f258fe80427c0cdcecd..75919c1f505db359c804e210daa707436bc0c09c 100644 GIT binary patch delta 935 zcmX|NIhKW*A*Uz-Y&T4rgh7GfVDK_8HdJ_w{Bh&C17dmVa<$2sTz&$;*f&RJOVe%)A{ z9uyLXXugnGUKr2uFDiU%r4eK(PaAR8AI5h>Lt6LHC)}lj^i#yjHJA7{qlWXe1^wc` z8*`lCdm0w`0H4s&=8jVYJ?=bj@ZyQPl|CZxPVgTe(w2jro-VcwJm)y~8mMIlKRmVE z=f@c?M_%`$MXTjuKT0`HJ29%A=d3A9a)l-GrKE>fTk@FuEKK+v{MNg;Cm=N#^mcej zJg?j3LeQ*4x39&0N!X*&O6a~8>Oq~A#B*O4^@Aee5?%Hp6J{A>nuAkD7flx%H+Yw) z@Xet%1SzFU(U1pCNY9 z8>NHZSP+k+^*rC8+_%C_#_IV-16J5|7!qdndX+Vacd;xVUZb2DY_hZ5m{!h9+_W?Q E0ARxQC;$Ke delta 841 zcmYLGO-NK>6rFqL&3p6z#%7#(W6yX>N(PRp*&?->F(QJ-85h=4%Tx#~qqeCK*}_Fm zCvz2AR4zn`Tty}=q5^*kN+=MNqNtEGp&y8{?>(j7;^W z6O`Q+%?_og1r2H*o(B~8DMrJnr8K4RRSjXq<-jgkq8}Kg7FHw#Sf{HfN_b$w_&NXht*ua_;NdoYD-O zbk^CsY&LWUHLNR#c#s6Wmq!SHJUV|P^g9fkbG7kj7IaM}L49oBlu$4yq#C^`dL>MV zTFqmUP%}(#ysg~mFiDv77UQ+shZS!XPuEzwT^<)Ed{v6MFP2m{^%ZKyL0>HrAqmUA zLh6L-Pou``Lc4!IUBsBPfO;_NZ{-0N-e?XM^mihZ0(yZoZ+F{8Z8O0SxFNt!G*K9D z)CheS7tH7TlKCE9vY{eyg2x);4`|2< zrf339!MLz(D468xYSSY!&>pH)%m`38|6+-1w||QQ-$c3p;i2rlvy_(#)D{*f0tUUBT*Hld1ZeASyb)r diff --git a/src/routing/aodv/test/bug-606-test-2-0.pcap b/src/routing/aodv/test/bug-606-test-2-0.pcap index c414ed66633f93f7699b59a457b24f5bb07269b5..032b56f25fc094c52170b1d85b6fe9e3c8abd9bb 100644 GIT binary patch delta 694 zcmX|;J!lgF6vywq`^tUgE}=pKIk?~#1sm+pK~zivB4UFb5**q}Xi|et7C*3q7A#c9 z#{c4$EP|zi6{+YTbQeXZj#ZK1;vhoZ#CI3t4fnYJy|3T@y*m8$=z4+L-LS)Jgc&#A z?M?9?#wjQ2?w2^N;)9*@6nW-UMX5`yV@b=SO;svl)68RsG=8Z`X@mil_`Z&&k$a?S z)|4?S_#|m{u3Aq`MJY>*GGgU5m-vMBFPjFq=oWEAEmG*aPZg-Wk{9Bm?j5eDZ5Y$2BdYCeE6Rylu#C1wLoS4$u}h ztV4F3uEehcm~_V+@nQJcwq&=6cF;3&IIp|#Q!ToV8>x!AR`Ex>(nsuy{#hnRn6*59 z&gi=ZuEbkLm~%3CV}({r?opP;<>Vf&sFod4kldtfYh2S~tHgpmH-{CwM)Lv?@}@pw zT^H5~%HX6^x^JFWru>ga7~l delta 643 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 htyd(LHJGnw3MrT>{d5_F`S=at{{dO~Y+(QZ delta 8213 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 G*#80DnE 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 JW5S&n`hPEYXb6B1q_{B_fy#wN&h-`ZDdS8`{LF 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 suLE4am*Tm92sm$NWNhCWL9`n|yRxUi}ld18r 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

Y# zqEPEOiRZ~j@R2P0Syv=$ouaYFrCu+NxYV8y=@lW;%w8{!xaHBX`&@o78Ws}TTS7fA zpyH5@r6~QI{y3Y<)%^%pu1Rk0Aj60CLvfZ^VfJyT`baFc*%~9vK2Df@ zEQ;DPK$v|zvU>(%7&A~B<~xG`7Xd5Z_KAdXiATi=OCKO)BWtb^k8C$v_J+;M2VsG~ z<58#V%%Xvy;D+?__!rl}&4WOJnV%U1H&FC;c5zddJ?;|#dR1(aq&H!Z*FJ$4zBL5J z-u@JOrGAQHqj=d66pMhBCnX@&dN5KIpFMZ0(}U20H-~~B8JDk7&S3C!=u;#P4#suk zH9d)sDcy%)J+Hxldqu*<*uvjU0D}SQx}%j_5_`l@q|YWiKgMAvQWGN5glgBU*$GbwUQkQ>zJIpY|<&*49fgJskkFR|Yg*l}D(@}U!C;2tmf zQds*$l>X;AR+Yt<{r-xu*zopMuI(eucIqTanG5ieZoFXj!E1@oloe{6Lnvh zj$I~A$91Dx&x>Y4Xoy((XS0xNI0L!;-@LeP@X~4MTiw}!Br>vw88gt&?b8weX$Cyx zHH`@mX*&}OI?n*qyAmqK7T#bMI5ikl-WRR>D{(iOjr5^ez%9&w;|$rbf4T2$oBjLp z)Y;NKH_a9wxY8w6PbI4EsX+Bls*K#@xv8KsI|Dclq+!KR(m<8_Y|z(v4(LP7$}8s} zJ2D-T6kk}z^O>2@D#o_2EcvJmfYZ*E1w4>)jGKep;|w83`_dmsWJp^LX1fe7>(z5` zkm1iD{8l>iz~AzCPA2T|qWs9`oP{k~%|ZWKX0Zf)l=|6lMpouY7dkrggIPc}K~w^f z3Toe*ivWb@BmRKPm(B&48JXztBUuN=fG`hb#;X^MW*XVyOhP(@#0iCODS2p?K*%(F L65$$zuPOfz!l-ei delta 9919 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 Z9NiTkVvVY8o{;}W%a?x+qQzI){{fT5B2EAR diff --git a/src/routing/olsr/test/olsr-tc-regression-test-0-1.pcap b/src/routing/olsr/test/olsr-tc-regression-test-0-1.pcap index e9bbf4e43ab6fd90306cfaf57f968d0fa8f25aec..da5ad3711eedb285078d28d6f4db850a7bc5fba5 100644 GIT binary patch delta 155 zcmX>ibVO)^40Cif^F;YX=Czt^6Xhi){%7B~NRW|}nUR5kgNu=oaq=FibVO)^40FSAhKcftOqZ)B%1KWA&%SYyAR{LuBLf2m7b7F{GVcTPdnCCREJ$*jPp~=z4TTxAS%e*#J2`>lIxk$30SEw&8yRc> diff --git a/src/routing/olsr/test/olsr-tc-regression-test-1-1.pcap b/src/routing/olsr/test/olsr-tc-regression-test-1-1.pcap index 8e6a80f27fc87d2d4874867899cd3eefc8b08299..2f75ccb8923d5867372228601508572d0deb42e0 100644 GIT binary patch delta 178 zcmew&^+jre4D;nG=85u&%+niyl*GjUuIvmzV5Y?eoxvK7Ec=HIMb?8unh8m74%d2Q#VS0`jJ$A@ HL9PM-2|F6W delta 177 zcmew&^+jre4DibVO)^40Cif^F;YXX8r~sB{A_o`^H6rjGWAj3=AAxjEszv_b_I2GPA*W229tH qcmmAGybsLpk>p;mAjxe$!Rib&6lTn35q4zmibVO)^40FSAhKcft%%7&PPL!9J_@8~_B0)w@Mn(n(4lYJU=E-{)vpE^rU_1k+ s>qtBSW@O$6=J!Z)FIbS|HlJX11{w-8X0r%8GIw$U$8}z~Bm)ot0Jg6gs{jB1 From 90d2134e893ecd813fdefa614c4b396bf8f06a0d Mon Sep 17 00:00:00 2001 From: Faker Moatamri Date: Tue, 12 Jan 2010 17:16:04 +0100 Subject: [PATCH 09/21] Revert bug 706 fix because it breaks the regression testing --- src/devices/mesh/mesh-wifi-interface-mac.cc | 10 ---------- src/devices/mesh/mesh-wifi-interface-mac.h | 2 -- src/devices/wifi/adhoc-wifi-mac.cc | 7 ------- src/devices/wifi/adhoc-wifi-mac.h | 1 - src/devices/wifi/dca-txop.cc | 7 ------- src/devices/wifi/dca-txop.h | 2 +- src/devices/wifi/edca-txop-n.cc | 8 +------- src/devices/wifi/edca-txop-n.h | 1 - src/devices/wifi/nqap-wifi-mac.cc | 2 -- src/devices/wifi/nqsta-wifi-mac.cc | 7 +------ src/devices/wifi/nqsta-wifi-mac.h | 1 - src/devices/wifi/qadhoc-wifi-mac.cc | 13 ++++--------- src/devices/wifi/qadhoc-wifi-mac.h | 5 ++++- src/devices/wifi/qap-wifi-mac.cc | 5 ----- src/devices/wifi/qsta-wifi-mac.cc | 10 +--------- src/devices/wifi/qsta-wifi-mac.h | 1 - 16 files changed, 12 insertions(+), 70 deletions(-) diff --git a/src/devices/mesh/mesh-wifi-interface-mac.cc b/src/devices/mesh/mesh-wifi-interface-mac.cc index 351cb4d75..e5404cbaa 100644 --- a/src/devices/mesh/mesh-wifi-interface-mac.cc +++ b/src/devices/mesh/mesh-wifi-interface-mac.cc @@ -720,16 +720,6 @@ MeshWifiInterfaceMac::TxFailed (WifiMacHeader const &hdr) { m_txErrCallback (hdr); } -void -MeshWifiInterfaceMac::DoStart () -{ - m_beaconDca->Start (); - for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); i ++) - { - i->second->Start (); - } - WifiMac::DoStart (); -} void MeshWifiInterfaceMac::FinishConfigureStandard (enum WifiPhyStandard standard) diff --git a/src/devices/mesh/mesh-wifi-interface-mac.h b/src/devices/mesh/mesh-wifi-interface-mac.h index 5c74f3f5a..60bb5b0c5 100644 --- a/src/devices/mesh/mesh-wifi-interface-mac.h +++ b/src/devices/mesh/mesh-wifi-interface-mac.h @@ -179,8 +179,6 @@ private: bool GetBeaconGeneration () const; /// Real d-tor virtual void DoDispose (); - ///Initiator at t=0 - void DoStart (); private: typedef std::map > Queues; diff --git a/src/devices/wifi/adhoc-wifi-mac.cc b/src/devices/wifi/adhoc-wifi-mac.cc index 9f1fe354f..44af9e4d8 100644 --- a/src/devices/wifi/adhoc-wifi-mac.cc +++ b/src/devices/wifi/adhoc-wifi-mac.cc @@ -298,11 +298,4 @@ AdhocWifiMac::TxFailed (const WifiMacHeader &hdr) { m_txErrCallback (hdr); } -void -AdhocWifiMac::DoStart () -{ - m_dca->Start (); - WifiMac::DoStart (); -} - } // namespace ns3 diff --git a/src/devices/wifi/adhoc-wifi-mac.h b/src/devices/wifi/adhoc-wifi-mac.h index 66f4798d9..2da19ac70 100644 --- a/src/devices/wifi/adhoc-wifi-mac.h +++ b/src/devices/wifi/adhoc-wifi-mac.h @@ -82,7 +82,6 @@ public: private: // inherited from Object base class. virtual void DoDispose (void); - void DoStart (); /* invoked by the MacLows. */ void ForwardUp (Ptr packet, const WifiMacHeader *hdr); AdhocWifiMac (const AdhocWifiMac & ctor_arg); diff --git a/src/devices/wifi/dca-txop.cc b/src/devices/wifi/dca-txop.cc index 1e1e59453..eba746669 100644 --- a/src/devices/wifi/dca-txop.cc +++ b/src/devices/wifi/dca-txop.cc @@ -268,13 +268,6 @@ DcaTxop::Low (void) return m_low; } -void -DcaTxop::DoStart () -{ - m_dcf->ResetCw (); - m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ())); - ns3::Dcf::DoStart (); -} bool DcaTxop::NeedRts (Ptr packet) { diff --git a/src/devices/wifi/dca-txop.h b/src/devices/wifi/dca-txop.h index 2a805dd07..370bd7c31 100644 --- a/src/devices/wifi/dca-txop.h +++ b/src/devices/wifi/dca-txop.h @@ -121,7 +121,7 @@ private: // Inherited from ns3::Object Ptr Low (void); - void DoStart (); + /* dcf notifications forwarded here */ bool NeedsAccess (void) const; void NotifyAccessGranted (void); diff --git a/src/devices/wifi/edca-txop-n.cc b/src/devices/wifi/edca-txop-n.cc index 43b002858..68b9f8db0 100644 --- a/src/devices/wifi/edca-txop-n.cc +++ b/src/devices/wifi/edca-txop-n.cc @@ -686,11 +686,5 @@ EdcaTxopN::SetMsduAggregator (Ptr aggr) { m_aggregator = aggr; } -void -EdcaTxopN::DoStart () -{ - m_dcf->ResetCw (); - m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ())); - ns3::Dcf::DoStart (); -} + } //namespace ns3 diff --git a/src/devices/wifi/edca-txop-n.h b/src/devices/wifi/edca-txop-n.h index 75759d9fa..298eb2700 100644 --- a/src/devices/wifi/edca-txop-n.h +++ b/src/devices/wifi/edca-txop-n.h @@ -132,7 +132,6 @@ public: void SetMsduAggregator (Ptr aggr); private: - void DoStart (); /** * This functions are used only to correctly set addresses in a-msdu subframe. * If aggregating sta is a STA (in an infrastructured network): diff --git a/src/devices/wifi/nqap-wifi-mac.cc b/src/devices/wifi/nqap-wifi-mac.cc index c3e4bbd9b..437de6108 100644 --- a/src/devices/wifi/nqap-wifi-mac.cc +++ b/src/devices/wifi/nqap-wifi-mac.cc @@ -606,8 +606,6 @@ NqapWifiMac::DoStart (void) { m_beaconEvent = Simulator::ScheduleNow (&NqapWifiMac::SendOneBeacon, this); } - m_dca->Start (); - m_beaconDca->Start (); WifiMac::DoStart (); } diff --git a/src/devices/wifi/nqsta-wifi-mac.cc b/src/devices/wifi/nqsta-wifi-mac.cc index cae47eef7..571b6ebe4 100644 --- a/src/devices/wifi/nqsta-wifi-mac.cc +++ b/src/devices/wifi/nqsta-wifi-mac.cc @@ -686,10 +686,5 @@ NqstaWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) break; } } -void -NqstaWifiMac::DoStart () -{ - m_dca->Start (); - WifiMac::DoStart (); -} + } // namespace ns3 diff --git a/src/devices/wifi/nqsta-wifi-mac.h b/src/devices/wifi/nqsta-wifi-mac.h index 4c148c8dc..c20046a59 100644 --- a/src/devices/wifi/nqsta-wifi-mac.h +++ b/src/devices/wifi/nqsta-wifi-mac.h @@ -119,7 +119,6 @@ private: BEACON_MISSED, REFUSED }; - void DoStart (); void SetBssid (Mac48Address bssid); void SetActiveProbing (bool enable); bool GetActiveProbing (void) const; diff --git a/src/devices/wifi/qadhoc-wifi-mac.cc b/src/devices/wifi/qadhoc-wifi-mac.cc index a4b32714d..a2bff3114 100644 --- a/src/devices/wifi/qadhoc-wifi-mac.cc +++ b/src/devices/wifi/qadhoc-wifi-mac.cc @@ -108,6 +108,10 @@ QadhocWifiMac::DoDispose (void) m_dcfManager = 0; m_low = 0; m_phy = 0; + m_voEdca = 0; + m_viEdca = 0; + m_beEdca = 0; + m_bkEdca = 0; m_stationManager = 0; for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) { @@ -441,14 +445,5 @@ QadhocWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) break; } } -void -QadhocWifiMac::DoStart () -{ - for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) - { - i->second->Start (); - } - WifiMac::DoStart (); -} } //namespace ns3 diff --git a/src/devices/wifi/qadhoc-wifi-mac.h b/src/devices/wifi/qadhoc-wifi-mac.h index 48859f21a..bf65b0299 100644 --- a/src/devices/wifi/qadhoc-wifi-mac.h +++ b/src/devices/wifi/qadhoc-wifi-mac.h @@ -78,7 +78,6 @@ public: private: Callback, Mac48Address, Mac48Address> m_forwardUp; virtual void DoDispose (void); - void DoStart (); void Receive (Ptr packet, const WifiMacHeader *hdr); void ForwardUp (Ptr packet, Mac48Address from, Mac48Address to); QadhocWifiMac &operator = (const QadhocWifiMac &); @@ -102,6 +101,10 @@ private: Ptr GetBKQueue (void) const; Queues m_queues; + Ptr m_voEdca; + Ptr m_viEdca; + Ptr m_beEdca; + Ptr m_bkEdca; Ptr m_low; Ptr m_phy; Ptr m_stationManager; diff --git a/src/devices/wifi/qap-wifi-mac.cc b/src/devices/wifi/qap-wifi-mac.cc index f0a42c66a..ec9a8d6f1 100644 --- a/src/devices/wifi/qap-wifi-mac.cc +++ b/src/devices/wifi/qap-wifi-mac.cc @@ -791,11 +791,6 @@ QapWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) void QapWifiMac::DoStart (void) { - m_beaconDca->Start (); - for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) - { - i->second->Start (); - } m_beaconEvent.Cancel (); if (m_enableBeaconGeneration) { diff --git a/src/devices/wifi/qsta-wifi-mac.cc b/src/devices/wifi/qsta-wifi-mac.cc index 1b6c11c7f..1df061ed5 100644 --- a/src/devices/wifi/qsta-wifi-mac.cc +++ b/src/devices/wifi/qsta-wifi-mac.cc @@ -775,13 +775,5 @@ QstaWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard) } } -void -QstaWifiMac::DoStart () -{ - for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) - { - i->second->Start (); - } - WifiMac::DoStart (); -} + } //namespace ns3 diff --git a/src/devices/wifi/qsta-wifi-mac.h b/src/devices/wifi/qsta-wifi-mac.h index 6c6fa2530..cc151f35b 100644 --- a/src/devices/wifi/qsta-wifi-mac.h +++ b/src/devices/wifi/qsta-wifi-mac.h @@ -87,7 +87,6 @@ public: void StartActiveAssociation (void); private: - void DoStart (); void SetBssid (Mac48Address bssid); Mac48Address GetBroadcastBssid (void); void Receive (Ptr p, const WifiMacHeader *hdr); From a8d2438b42851c24bc826487df4e5c1d336cdab0 Mon Sep 17 00:00:00 2001 From: fmoatamr Date: Tue, 12 Jan 2010 18:52:34 +0100 Subject: [PATCH 10/21] Added tag ns-3.7-RC3 for changeset 892efc87a151 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 1394c82d5..d0737c2e5 100644 --- a/.hgtags +++ b/.hgtags @@ -41,3 +41,4 @@ c975274c9707b1f07d94cc51f205c351122131a5 ns-3.5 79ff6ad1adbb7b4677759ddf52028b68b0515168 ns-3.6-RC3 39a82d7a0d661febe42e75f26ada79424258e330 ns-3.6-RC4 d55c479666ac6be0575fac695ddf355c0530e0dd ns-3.6 +892efc87a1518fb69b04628c779195aee139d33e ns-3.7-RC3 From 7623a960a5c01d666b3f6761b58f9ec1c805c75a Mon Sep 17 00:00:00 2001 From: Faker Moatamri Date: Wed, 13 Jan 2010 10:30:56 +0100 Subject: [PATCH 11/21] Bug 781: Suppress the valgrind error: Invalid read size of 8 in TestSuite devices-mesh-dot11s-regression --- test.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++- testpy.supp | 5 ++++ 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 testpy.supp diff --git a/test.py b/test.py index 979eaeacd..0895ad65d 100755 --- a/test.py +++ b/test.py @@ -585,10 +585,92 @@ def make_library_path(): if options.verbose: print "os.environ[\"LD_LIBRARY_PATH\"] == %s" % os.environ["LD_LIBRARY_PATH"] +# +# Short note on generating suppressions: +# +# See the valgrind documentation for a description of suppressions. The easiest +# way to generate a suppression expression is by using the valgrind +# --gen-suppressions option. To do that you have to figure out how to run the +# test in question. +# +# If you do "test.py -v -g -s then test.py will output most of what +# you need. For example, if you are getting a valgrind error in the +# devices-mesh-dot11s-regression test suite, you can run: +# +# ./test.py -v -g -s devices-mesh-dot11s-regression +# +# You should see in the verbose output something that looks like: +# +# Synchronously execute valgrind --suppressions=/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/testpy.supp +# --leak-check=full --error-exitcode=2 /home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build/debug/utils/test-runner +# --suite=devices-mesh-dot11s-regression --basedir=/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev +# --tempdir=testpy-output/2010-01-12-22-47-50-CUT +# --out=testpy-output/2010-01-12-22-47-50-CUT/devices-mesh-dot11s-regression.xml +# +# You need to pull out the useful pieces, and so could run the following to +# reproduce your error: +# +# valgrind --suppressions=/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/testpy.supp +# --leak-check=full --error-exitcode=2 /home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build/debug/utils/test-runner +# --suite=devices-mesh-dot11s-regression --basedir=/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev +# --tempdir=testpy-output +# +# Hint: Use the first part of the command as is, and point the "tempdir" to +# somewhere real. You don't need to specify an "out" file. +# +# When you run the above command you should see your valgrind error. The +# suppression expression(s) can be generated by adding the --gen-suppressions=yes +# option to valgrind. Use something like: +# +# valgrind --gen-suppressions=yes --suppressions=/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/testpy.supp +# --leak-check=full --error-exitcode=2 /home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build/debug/utils/test-runner +# --suite=devices-mesh-dot11s-regression --basedir=/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev +# --tempdir=testpy-output +# +# Now when valgrind detects an error it will ask: +# +# ==27235== ---- Print suppression ? --- [Return/N/n/Y/y/C/c] ---- +# +# to which you just enter 'y'. +# +# You will be provided with a suppression expression that looks something like +# the following: +# { +# +# Memcheck:Addr8 +# fun:_ZN3ns36dot11s15HwmpProtocolMac8SendPreqESt6vectorINS0_6IePreqESaIS3_EE +# fun:_ZN3ns36dot11s15HwmpProtocolMac10SendMyPreqEv +# fun:_ZN3ns36dot11s15HwmpProtocolMac18RequestDestinationENS_12Mac48AddressEjj +# ... +# the rest of the stack frame +# ... +# } +# +# You need to add a supression name which will only be printed out by valgrind in +# verbose mode (but it needs to be there in any case). The entire stack frame is +# shown to completely characterize the error, but in most cases you won't need +# all of that info. For example, if you want to turn off all errors that happen +# when the function (fun:) is called, you can just delete the rest of the stack +# frame. You can also use wildcards to make the mangled signatures more readable. +# +# I added the following to the testpy.supp file for this particular error: +# +# { +# Supress invalid read size errors in SendPreq() when using HwmpProtocolMac +# Memcheck:Addr8 +# fun:*HwmpProtocolMac*SendPreq* +# } +# +# Now, when you run valgrind the error will be suppressed. +# +VALGRIND_SUPPRESSIONS_FILE = "testpy.supp" + def run_job_synchronously(shell_command, directory, valgrind): + (base, build) = os.path.split (NS3_BUILDDIR) + suppressions_path = os.path.join (base, VALGRIND_SUPPRESSIONS_FILE) path_cmd = os.path.join (NS3_BUILDDIR, NS3_ACTIVE_VARIANT, shell_command) if valgrind: - cmd = "valgrind --leak-check=full --error-exitcode=2 %s" % path_cmd + cmd = "valgrind --suppressions=%s --leak-check=full --error-exitcode=2 %s" % (suppressions_path, path_cmd) else: cmd = path_cmd diff --git a/testpy.supp b/testpy.supp new file mode 100644 index 000000000..ff7deb13f --- /dev/null +++ b/testpy.supp @@ -0,0 +1,5 @@ +{ + Supress invalid read size errors in SendPreq() when using HwmpProtocolMac + Memcheck:Addr8 + fun:*HwmpProtocolMac*SendPreq* +} From fdfa55c298bad012989628e78ea32ea1b350d208 Mon Sep 17 00:00:00 2001 From: Josh Pelkey Date: Wed, 13 Jan 2010 09:58:37 -0500 Subject: [PATCH 12/21] Fix bug 779: NixVectorRouting ignores specified outgoing interface in RouteOutput --- .../ipv4-nix-vector-routing.cc | 310 +++++++++--------- .../ipv4-nix-vector-routing.h | 9 +- 2 files changed, 155 insertions(+), 164 deletions(-) diff --git a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc index eb73bf89e..aa0c6936d 100644 --- a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc +++ b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.cc @@ -117,7 +117,7 @@ Ipv4NixVectorRouting::FlushIpv4RouteCache () } Ptr -Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest) +Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest, Ptr oif) { NS_LOG_FUNCTION_NOARGS (); @@ -146,7 +146,8 @@ Ipv4NixVectorRouting::GetNixVector (Ptr source, Ipv4Address dest) // otherwise proceed as normal // and build the nix vector std::vector< Ptr > parentVector; - BFS (NodeList::GetNNodes (), source, destNode, parentVector); + + BFS (NodeList::GetNNodes (), source, destNode, parentVector, oif); if (BuildNixVector (parentVector, source->GetId (), destNode->GetId (), nixVector)) { @@ -495,7 +496,7 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< NS_LOG_LOGIC ("Nix-vector not in cache, build: "); // Build the nix-vector, given this node and the // dest IP address - nixVectorInCache = GetNixVector (m_node, header.GetDestination ()); + nixVectorInCache = GetNixVector (m_node, header.GetDestination (), oif); // cache it m_nixCache.insert (NixMap_t::value_type (header.GetDestination (), nixVectorInCache)); @@ -523,18 +524,38 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< uint32_t numberOfBits = nixVectorForPacket->BitCount (m_totalNeighbors); uint32_t nodeIndex = nixVectorForPacket->ExtractNeighborIndex (numberOfBits); - // Possibly search here in a cache for this node index - // and look for a Ipv4Route. If we have it, don't - // need to do the next 3 lines. + // Search here in a cache for this node index + // and look for a Ipv4Route rtentry = GetIpv4RouteInCache (header.GetDestination ()); - // not in cache - if (!rtentry) + + if (!rtentry || !(rtentry->GetOutputDevice () == oif)) { + // not in cache or a different specified output + // device is to be used + + // first, make sure we erase existing (incorrect) + // rtentry from the map + if (rtentry) + { + m_ipv4RouteCache.erase(header.GetDestination ()); + } + NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); Ipv4Address gatewayIp; uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); + int32_t interfaceIndex = 0; + + if (!oif) + { + interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); + } + else + { + interfaceIndex = (m_ipv4)->GetInterfaceForDevice(oif); + } + + NS_ASSERT_MSG (interfaceIndex != -1, "Interface index not found for device"); - uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); // start filling in the Ipv4Route info @@ -543,7 +564,15 @@ Ipv4NixVectorRouting::RouteOutput (Ptr p, const Ipv4Header &header, Ptr< rtentry->SetGateway (gatewayIp); rtentry->SetDestination (header.GetDestination ()); - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); + + if (!oif) + { + rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); + } + else + { + rtentry->SetOutputDevice (oif); + } sockerr = Socket::ERROR_NOTERROR; @@ -582,143 +611,50 @@ Ipv4NixVectorRouting::RouteInput (Ptr p, const Ipv4Header &header, // Get the nix-vector from the packet Ptr nixVector = p->GetNixVector(); - // make sure it exists, if not something - // went wrong - if (!nixVector) + // If nixVector isn't in packet, something went wrong + NS_ASSERT (nixVector); + + // Get the interface number that we go out of, by extracting + // from the nix-vector + if (m_totalNeighbors == 0) { - NS_LOG_ERROR ("Nix-vector wasn't in the packet! Rebuild."); - - Ptr nixVectorInCache; - - NS_LOG_DEBUG ("Dest IP from header: " << header.GetDestination ()); - - // check if cache - nixVectorInCache = GetNixVectorInCache(header.GetDestination ()); - - // not in cache - if (!nixVectorInCache) - { - NS_LOG_LOGIC ("RouteInput(): Nix-vector not in cache, build: "); - - // Build the nix-vector, given this node and the - // dest IP address - nixVectorInCache = GetNixVector (m_node, header.GetDestination ()); - } - - // path exists - if (nixVectorInCache) - { - NS_LOG_LOGIC ("Nix-vector contents: " << *nixVectorInCache); - - // cache it - m_nixCache.insert(NixMap_t::value_type(header.GetDestination (), nixVectorInCache)); - - // create a new nix vector to be used, - // we want to keep the cached version clean - Ptr nixVectorForPacket; - nixVectorForPacket = CreateObject (); - nixVectorForPacket = nixVectorInCache->Copy(); - - // Get the interface number that we go out of, by extracting - // from the nix-vector - if (m_totalNeighbors == 0) - { - m_totalNeighbors = FindTotalNeighbors (); - } - uint32_t numberOfBits = nixVectorForPacket->BitCount (m_totalNeighbors); - uint32_t nodeIndex = nixVectorForPacket->ExtractNeighborIndex (numberOfBits); - - rtentry = GetIpv4RouteInCache (header.GetDestination ()); - // not in cache - if (!rtentry) - { - NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); - Ipv4Address gatewayIp; - uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); - - uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); - Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); - - // start filling in the Ipv4Route info - rtentry = Create (); - rtentry->SetSource (ifAddr.GetLocal ()); - - rtentry->SetGateway (Ipv4Address(gatewayIp)); - rtentry->SetDestination (header.GetDestination ()); - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); - - // add rtentry to cache - m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); - } - - NS_LOG_LOGIC ("Nix-vector contents: " << *nixVectorInCache << " : Remaining bits: " << nixVectorForPacket->GetRemainingBits()); - - // Add nix-vector in the packet class - // have to copy the packet first b/c - // it is const - Ptr newPacket = Create (); - newPacket = p->Copy(); - - NS_LOG_LOGIC ("Adding Nix-vector to packet: " << *nixVectorForPacket); - newPacket->SetNixVector(nixVectorForPacket); - - // call the unicast callback - // local deliver is handled by Ipv4StaticRoutingImpl - // so this code is never even called if the packet is - // destined for this node. - ucb (rtentry, newPacket, header); - return true; - } - else // path doesn't exist - { - NS_LOG_ERROR ("No path to the dest: " << header.GetDestination ()); - return false; - } + m_totalNeighbors = FindTotalNeighbors (); } - else + uint32_t numberOfBits = nixVector->BitCount (m_totalNeighbors); + uint32_t nodeIndex = nixVector->ExtractNeighborIndex (numberOfBits); + + rtentry = GetIpv4RouteInCache (header.GetDestination ()); + // not in cache + if (!rtentry) { - // Get the interface number that we go out of, by extracting - // from the nix-vector - if (m_totalNeighbors == 0) - { - m_totalNeighbors = FindTotalNeighbors (); - } - uint32_t numberOfBits = nixVector->BitCount (m_totalNeighbors); - uint32_t nodeIndex = nixVector->ExtractNeighborIndex (numberOfBits); + NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); + Ipv4Address gatewayIp; + uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); + uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); + Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); - rtentry = GetIpv4RouteInCache (header.GetDestination ()); - // not in cache - if (!rtentry) - { - NS_LOG_LOGIC ("Ipv4Route not in cache, build: "); - Ipv4Address gatewayIp; - uint32_t index = FindNetDeviceForNixIndex (nodeIndex, gatewayIp); - uint32_t interfaceIndex = (m_ipv4)->GetInterfaceForDevice(m_node->GetDevice(index)); - Ipv4InterfaceAddress ifAddr = m_ipv4->GetAddress (interfaceIndex, 0); + // start filling in the Ipv4Route info + rtentry = Create (); + rtentry->SetSource (ifAddr.GetLocal ()); - // start filling in the Ipv4Route info - rtentry = Create (); - rtentry->SetSource (ifAddr.GetLocal ()); + rtentry->SetGateway (gatewayIp); + rtentry->SetDestination (header.GetDestination ()); + rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); - rtentry->SetGateway (gatewayIp); - rtentry->SetDestination (header.GetDestination ()); - rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIndex)); - - // add rtentry to cache - m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); - } - - NS_LOG_LOGIC ("At Node " << m_node->GetId() << ", Extracting " << numberOfBits << - " bits from Nix-vector: " << nixVector << " : " << *nixVector); - - // call the unicast callback - // local deliver is handled by Ipv4StaticRoutingImpl - // so this code is never even called if the packet is - // destined for this node. - ucb (rtentry, p, header); - - return true; + // add rtentry to cache + m_ipv4RouteCache.insert(Ipv4RouteMap_t::value_type(header.GetDestination (), rtentry)); } + + NS_LOG_LOGIC ("At Node " << m_node->GetId() << ", Extracting " << numberOfBits << + " bits from Nix-vector: " << nixVector << " : " << *nixVector); + + // call the unicast callback + // local deliver is handled by Ipv4StaticRoutingImpl + // so this code is never even called if the packet is + // destined for this node. + ucb (rtentry, p, header); + + return true; } // virtual functions from Ipv4RoutingProtocol @@ -744,7 +680,9 @@ Ipv4NixVectorRouting::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddr } bool -Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, Ptr dest, std::vector< Ptr > & parentVector) +Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, + Ptr dest, std::vector< Ptr > & parentVector, + Ptr oif) { NS_LOG_FUNCTION_NOARGS (); @@ -772,41 +710,36 @@ Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, Ptr d return true; } - - // Iterate over the current node's adjacent vertices - // and push them into the queue - for (uint32_t i = 0; i < (currNode->GetNDevices ()); i++) + // if this is the first iteration of the loop and a + // specific output interface was given, make sure + // we go this way + if (currNode == source && oif) { - // Get a net device from the node - // as well as the channel, and figure - // out the adjacent net device - Ptr localNetDevice = currNode->GetDevice (i); - // make sure that we can go this way if (ipv4) { - uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(currNode->GetDevice(i)); + uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(oif); if (!(ipv4->IsUp (interfaceIndex))) { NS_LOG_LOGIC ("Ipv4Interface is down"); - continue; + return false; } } - if (!(localNetDevice->IsLinkUp ())) - { - NS_LOG_LOGIC ("Link is down."); - continue; - } - Ptr channel = localNetDevice->GetChannel (); + if (!(oif->IsLinkUp ())) + { + NS_LOG_LOGIC ("Link is down."); + return false; + } + Ptr channel = oif->GetChannel (); if (channel == 0) { - continue; + return false; } // this function takes in the local net dev, and channnel, and // writes to the netDeviceContainer the adjacent net devs NetDeviceContainer netDeviceContainer; - GetAdjacentNetDevices (localNetDevice, channel, netDeviceContainer); + GetAdjacentNetDevices (oif, channel, netDeviceContainer); // Finally we can get the adjacent nodes // and scan through them. We push them @@ -827,6 +760,63 @@ Ipv4NixVectorRouting::BFS (uint32_t numberOfNodes, Ptr source, Ptr d } } } + else + { + // Iterate over the current node's adjacent vertices + // and push them into the queue + for (uint32_t i = 0; i < (currNode->GetNDevices ()); i++) + { + // Get a net device from the node + // as well as the channel, and figure + // out the adjacent net device + Ptr localNetDevice = currNode->GetDevice (i); + + // make sure that we can go this way + if (ipv4) + { + uint32_t interfaceIndex = (ipv4)->GetInterfaceForDevice(currNode->GetDevice(i)); + if (!(ipv4->IsUp (interfaceIndex))) + { + NS_LOG_LOGIC ("Ipv4Interface is down"); + continue; + } + } + if (!(localNetDevice->IsLinkUp ())) + { + NS_LOG_LOGIC ("Link is down."); + continue; + } + Ptr channel = localNetDevice->GetChannel (); + if (channel == 0) + { + continue; + } + + // this function takes in the local net dev, and channnel, and + // writes to the netDeviceContainer the adjacent net devs + NetDeviceContainer netDeviceContainer; + GetAdjacentNetDevices (localNetDevice, channel, netDeviceContainer); + + // Finally we can get the adjacent nodes + // and scan through them. We push them + // to the greyNode queue, if they aren't + // already there. + for (NetDeviceContainer::Iterator iter = netDeviceContainer.Begin (); iter != netDeviceContainer.End (); iter++) + { + Ptr remoteNode = (*iter)->GetNode (); + + // check to see if this node has been pushed before + // by checking to see if it has a parent + // if it doesn't (null or 0), then set its parent and + // push to the queue + if (parentVector.at (remoteNode->GetId ()) == 0) + { + parentVector.at (remoteNode->GetId ()) = currNode; + greyNodeList.push (remoteNode); + } + } + } + } // Pop off the head grey node. We have all its children. // It is now black. diff --git a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h index e8213e82f..5de8ff999 100644 --- a/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h +++ b/src/routing/nix-vector-routing/ipv4-nix-vector-routing.h @@ -78,9 +78,9 @@ class Ipv4NixVectorRouting : public Ipv4RoutingProtocol void ResetTotalNeighbors (void); /* takes in the source node and dest IP and calls GetNodeByIp, - * BFS, and BuildNixVector to finally return the built - * nix-vector */ - Ptr GetNixVector (Ptr, Ipv4Address); + * BFS, accounting for any output interface specified, and finally + * BuildNixVector to return the built nix-vector */ + Ptr GetNixVector (Ptr, Ipv4Address, Ptr); /* checks the cache based on dest IP for the nix-vector */ Ptr GetNixVectorInCache (Ipv4Address); @@ -124,7 +124,8 @@ class Ipv4NixVectorRouting : public Ipv4RoutingProtocol bool BFS (uint32_t numberOfNodes, Ptr source, Ptr dest, - std::vector< Ptr > & parentVector); + std::vector< Ptr > & parentVector, + Ptr oif); void DoDispose (void); From 774a746985f0c473050e657d3383445d06d3ddce Mon Sep 17 00:00:00 2001 From: "Gustavo J. A. M. Carneiro" Date: Thu, 14 Jan 2010 11:45:04 +0000 Subject: [PATCH 13/21] Bug 786 - Make Ipv4Address hashable from Python --- bindings/python/ns3modulegen.py | 1 + bindings/python/ns3modulegen_core_customizations.py | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/bindings/python/ns3modulegen.py b/bindings/python/ns3modulegen.py index 148f464a8..6bbe41af7 100755 --- a/bindings/python/ns3modulegen.py +++ b/bindings/python/ns3modulegen.py @@ -95,6 +95,7 @@ def main(): ns3modulegen_core_customizations.CommandLine_customizations(root_module) ns3modulegen_core_customizations.TypeId_customizations(root_module) ns3modulegen_core_customizations.add_std_ofstream(root_module) + ns3modulegen_core_customizations.add_ipv4_address_tp_hash(root_module) for local_module in LOCAL_MODULES: diff --git a/bindings/python/ns3modulegen_core_customizations.py b/bindings/python/ns3modulegen_core_customizations.py index d82aa1e63..807dbabb0 100644 --- a/bindings/python/ns3modulegen_core_customizations.py +++ b/bindings/python/ns3modulegen_core_customizations.py @@ -572,3 +572,14 @@ def add_std_ofstream(module): Parameter.new("::std::ofstream::openmode", 'mode', default_value="std::ios_base::out")]) ofstream.add_method('close', None, []) +def add_ipv4_address_tp_hash(module): + module.body.writeln(''' +long +_ns3_Ipv4Address_tp_hash (PyObject *obj) +{ + PyNs3Ipv4Address *addr = reinterpret_cast (obj); + return static_cast (ns3::Ipv4AddressHash () (*addr->obj)); +} +''') + module.header.writeln('long _ns3_Ipv4Address_tp_hash (PyObject *obj);') + module['Ipv4Address'].pytype.slots['tp_hash'] = "_ns3_Ipv4Address_tp_hash" From a9638dfb8299cd87298e8a12578e28012af00a37 Mon Sep 17 00:00:00 2001 From: fmoatamr Date: Fri, 15 Jan 2010 17:48:18 +0100 Subject: [PATCH 14/21] Update test.py to detect still reachable memory blocks as errors, it will fail if there is some reachable memory blocks reported by valgrind --- test.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 0895ad65d..1be897559 100755 --- a/test.py +++ b/test.py @@ -27,6 +27,7 @@ import Queue import signal import xml.dom.minidom import shutil +import re # # XXX This should really be part of a waf command to list the configuration @@ -670,7 +671,7 @@ def run_job_synchronously(shell_command, directory, valgrind): suppressions_path = os.path.join (base, VALGRIND_SUPPRESSIONS_FILE) path_cmd = os.path.join (NS3_BUILDDIR, NS3_ACTIVE_VARIANT, shell_command) if valgrind: - cmd = "valgrind --suppressions=%s --leak-check=full --error-exitcode=2 %s" % (suppressions_path, path_cmd) + cmd = "valgrind --suppressions=%s --leak-check=full --show-reachable=yes --error-exitcode=2 %s" % (suppressions_path, path_cmd) else: cmd = path_cmd @@ -679,14 +680,26 @@ def run_job_synchronously(shell_command, directory, valgrind): start_time = time.time() proc = subprocess.Popen(cmd, shell = True, cwd = directory, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout_results, stderr_results = proc.communicate() elapsed_time = time.time() - start_time - + ##detect errors ignored by valgrind + error = False + if valgrind: + reg = re.compile ('still reachable: ([^ ]+) bytes') + for line in proc.stderr: + result = reg.search(line) + if result is None: + continue + if result.group(1) != "0": + error = True + stdout_results, stderr_results = proc.communicate() + retval = proc.returncode + if retval == 0 and error: + retval = 1 if options.verbose: - print "Return code = ", proc.returncode + print "Return code = ", retval print "stderr = ", stderr_results - return (proc.returncode, stdout_results, stderr_results, elapsed_time) + return (retval, stdout_results, stderr_results, elapsed_time) # # This class defines a unit of testing work. It will typically refer to From d273aeaa8581fff642e840f14ecd569e9eebc2fd Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Tue, 12 Jan 2010 21:12:52 -0800 Subject: [PATCH 15/21] [bug 690] remove inoperative NscTcp cwnd trace connect --- examples/tcp/tcp-nsc-lfn.cc | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/examples/tcp/tcp-nsc-lfn.cc b/examples/tcp/tcp-nsc-lfn.cc index eed82205f..df4911f40 100644 --- a/examples/tcp/tcp-nsc-lfn.cc +++ b/examples/tcp/tcp-nsc-lfn.cc @@ -42,12 +42,6 @@ using namespace ns3; NS_LOG_COMPONENT_DEFINE ("TcpNscLfn"); -static void -CwndTracer (uint32_t oldval, uint32_t newval) -{ - NS_LOG_INFO ("Moving cwnd from " << oldval << " to " << newval); -} - int main (int argc, char *argv[]) { @@ -137,10 +131,6 @@ int main (int argc, char *argv[]) clientApp.Stop (Seconds (runtime + 1.0 + i)); } - // Trace changes to the congestion window - Config::ConnectWithoutContext ("/NodeList/1/$ns3::NscTcpL4Protocol/SocketList/0/CongestionWindow", - MakeCallback (&CwndTracer)); - // This tells ns-3 to generate pcap traces. PointToPointHelper::EnablePcapAll ("tcp-nsc-lfn"); From 8a0d92abea68d79223979f29ec26c05f4b62be17 Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Sat, 16 Jan 2010 14:05:19 -0800 Subject: [PATCH 16/21] update AUTHORS --- AUTHORS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/AUTHORS b/AUTHORS index 8bdbed2f5..03fb40d64 100644 --- a/AUTHORS +++ b/AUTHORS @@ -27,6 +27,7 @@ Francesco Malandrino (francesco.malandrino@gmail.com) Fabian Mauchle (f1mauchl@hsr.ch) Andrey Mazo (mazo@iitp.ru) Faker Moatamri (faker.moatamri@sophia.inria.fr) +Michael Nowatkowski (nowatkom@gmail.com) Duy Nguyen (duy@soe.ucsc.edu) Tommaso Pecorella (tommaso.pecorella@unifi.it) Yana Podkosova (yanapdk@rambler.ru) @@ -35,10 +36,12 @@ George F. Riley (riley@ece.gatech.edu) Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu) Guillaume Seguin (guillaume.seguin@sophia.inria.fr) Kulin Shah (m.kulin@gmail.com) +Phillip Sitbon (phillip.sitbon@gmail.com) Ewgenij Starostin (estar@cs.tu-berlin.de) Adrian S. W. Tam (adrian.sw.tam@gmail.com) Wilson Thong (wilsonwk@ee.cityu.edu.hk) Mauro Tortonesi (mauro.tortonesi@unife.it) +Andras Varga (andras@omnetpp.org) Sebastien Vincent (vincent@clarinet.u-strasbg.fr) Guillaume Vu-Brugier (gvubrugier@gmail.com) Tom Wambold (tom5760@gmail.com) From fc5d4422a4b71cf3eb4dd84974a039bd087a391e Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Sat, 16 Jan 2010 14:54:05 -0800 Subject: [PATCH 17/21] Update RELEASE_NOTES --- RELEASE_NOTES | 80 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 9 deletions(-) diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 5dfdbc846..175aa0055 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -31,30 +31,92 @@ http://www.nsnam.org/wiki/index.php/Installation New user-visible features ------------------------- - a) The ns-3 logging macros (NS_LOG_*) now report automatically the node id - of the event which called the macro. + a) Ad hoc On-Demand Distance Vector (AODV) routing model (RFC 3561) - b) Ad hoc On-Demand Distance Vector (AODV) routing model according to RFC 3561. + b) IPv6 extensions support to add IPv6 extensions and options. Two + examples (fragmentation and loose routing) are available. - c) Net-anim: - - interface for animation of point-to-point links. - - dumbbell, grid, and star examples in examples/animation + c) NetAnim interface: Provides an interface to the Qt-based NetAnim + animator, which supports static, point-to-point topology-based + packet animations. - d) Topology Helper classes: + d) New topology helpers have been introduced - PointToPointDumbbellHelper - PointToPointGridHelper - PointToPointStarHelper - CsmaStarHelper - e) IPv6 extensions support and two new examples for fragmentation and loose routing. + e) Equal-cost multipath for global routing: Enables quagga's equal + cost multipath for Ipv4GlobalRouting, and adds an attribute that + can enable it with random packet distribution policy across + equal cost routes. + + f) Binding sockets to devices: A method analogous to a SO_BINDTODEVICE + socket option has been introduced to class Socket + + g) Object::DoStart: Users who need to complete their object setup at + the start of a simulation can override this virtual method, perform their + adhoc setup, and then, must chain up to their parent. + + h) Ipv4::IsDestinationAddress method added to support checks of whether a + destination address should be accepted as one of the host's own + addresses. + + i) UniformDiscPositionAllocator added; distributes uniformly the nodes + within a disc of given radius. + + j) ChannelNumber attribute added to YansWifiPhy. Now it is possible to + setup wifi channel using WifiPhyHelper::Set() method. + + k) WaypointMobilityModel provides a method to add mobility as a set of + (time, position) pairs API changes from ns-3.6 ----------------------- API changes for this release are documented in the file CHANGES.html. +Bugs fixed +---------- +The following lists many of the bugs that were fixed since ns-3.6, in +many cases referencing the Bugzilla bug number + - bug 752: Object::DoStart is not executed for objects created at t > 0 + - bug 767: Incorrect modulation for 802.11a modes + - bug 725: wifi fragmentation and RTS cannot be used at the same time + - bug 782: CreateTap () requires IP address in modes other than + CONFIGURE_LOCAL. + - bug 769: Queue::GetTotalReceived{Bytes,Packets}() broken + - bug 738 ReceiveErrorModel called too late + - Fix NSC improper response to FIN + - Fixed bug in serialization of PbbAddressBlock. + - Fix bug 780 (problem in RoutingTableComputation with asymetric links), + while adding debugging methods to OLSR. + - bug 759: Ipv6 uses wrong outgoing interface. + - bug 770: IPv6 size calculation for unknown options is wrong. + - bug 771: Radvd does not set ttl value. + - Fix bug 606: Arp depends on IP routing system + - pad out CSMA payloads to 46 bytes if needed + - Drop CSMA packets with CRC errors, rescan, dox tweaks + - Add FCS capability to CSMA + - Mesh:Dot11s: fixed airtime metric + - Get emu working again: Add Dix/Llc option, add and use contextual + realtime schedule ops, don't refcount realtime simulator impl + - bug 695 - DcfManager::UpdateBackoff () uses slow HighPrecision::Div() + - bug 674 - EIFS is not handled correctly in DcfManager::GetAccessGrantStart + - bug 739 - OLSR: Strange HTime value in HELLO messages + - bug 746 - UDP source address is not set to bound address + - bug 735 Update Olsr for local delivery + - bug 740 OLSR MprCompute () works wrong: fixed + - bug 729 Enable IPv6 over PPP. + - bug 645: fixes for opening stats file with OMNeT++ + - bug 689: default energy detection and CCA thresholds are changed to be + more realistic. + - bug 733: OLSR MPR Computation give incorrect result + - Mesh: HWMP: fixed proactive routes + - Mesh: fixed FLAME PATH_UPDATE procedure, fixed mesh.cc + Known issues ------------ -ns-3.6 build is known to fail on the following platforms: +ns-3 builds have been known to fail on the following platforms: - gcc 3.3 and earlier - optimized builds on gcc 3.4.4 and 3.4.5 - optimized builds on linux x86 gcc 4.0.x From 469b730690d2c2ff425646ee9bbcc3824c2bc486 Mon Sep 17 00:00:00 2001 From: Faker Moatamri Date: Mon, 18 Jan 2010 10:00:46 +0100 Subject: [PATCH 18/21] Bug 790: Fix memory leak in routing-aodv-regression --- src/internet-stack/ipv4-l3-protocol.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/internet-stack/ipv4-l3-protocol.cc b/src/internet-stack/ipv4-l3-protocol.cc index 5b80bc7eb..d42484f51 100644 --- a/src/internet-stack/ipv4-l3-protocol.cc +++ b/src/internet-stack/ipv4-l3-protocol.cc @@ -196,6 +196,7 @@ Ipv4L3Protocol::DoDispose (void) *i = 0; } m_interfaces.clear (); + m_sockets.clear (); m_node = 0; m_routingProtocol = 0; Object::DoDispose (); From 5649245bb00d73bc164930c064c672514268499c Mon Sep 17 00:00:00 2001 From: Craig Dowell Date: Tue, 19 Jan 2010 16:56:44 +0100 Subject: [PATCH 19/21] Bug 792: Neither test.py nor waf --valgrind catch all kinds of memory leaks --- test.py | 31 +++++++++++++++++-------------- wutils.py | 8 ++------ 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/test.py b/test.py index 1be897559..9415135b1 100755 --- a/test.py +++ b/test.py @@ -671,7 +671,8 @@ def run_job_synchronously(shell_command, directory, valgrind): suppressions_path = os.path.join (base, VALGRIND_SUPPRESSIONS_FILE) path_cmd = os.path.join (NS3_BUILDDIR, NS3_ACTIVE_VARIANT, shell_command) if valgrind: - cmd = "valgrind --suppressions=%s --leak-check=full --show-reachable=yes --error-exitcode=2 %s" % (suppressions_path, path_cmd) + cmd = "valgrind --suppressions=%s --leak-check=full --show-reachable=yes --error-exitcode=2 %s" % (suppressions_path, + path_cmd) else: cmd = path_cmd @@ -680,21 +681,23 @@ def run_job_synchronously(shell_command, directory, valgrind): start_time = time.time() proc = subprocess.Popen(cmd, shell = True, cwd = directory, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - elapsed_time = time.time() - start_time - ##detect errors ignored by valgrind - error = False - if valgrind: - reg = re.compile ('still reachable: ([^ ]+) bytes') - for line in proc.stderr: - result = reg.search(line) - if result is None: - continue - if result.group(1) != "0": - error = True stdout_results, stderr_results = proc.communicate() + elapsed_time = time.time() - start_time + retval = proc.returncode - if retval == 0 and error: - retval = 1 + + # + # valgrind sometimes has its own idea about what kind of memory management + # errors are important. We want to detect *any* leaks, so the way to do + # that is to look for the presence of a valgrind leak summary section. + # + # If another error has occurred (like a test suite has failed), we don't + # want to trump that error, so only do the valgrind output scan if the + # test has otherwise passed (return code was zero). + # + if valgrind and retval == 0 and "== LEAK SUMMARY:" in stderr_results: + retval = 2 + if options.verbose: print "Return code = ", retval print "stderr = ", stderr_results diff --git a/wutils.py b/wutils.py index 56815931c..8df08b401 100644 --- a/wutils.py +++ b/wutils.py @@ -121,16 +121,12 @@ def run_argv(argv, env, os_env=None, cwd=None, force_no_valgrind=False): raise Utils.WafError("Options --command-template and --valgrind are conflicting") if not env['VALGRIND']: raise Utils.WafError("valgrind is not installed") - argv = [env['VALGRIND'], "--leak-check=full", "--error-exitcode=1"] + argv + argv = [env['VALGRIND'], "--leak-check=full", "--show-reachable=yes", "--error-exitcode=1"] + argv proc = subprocess.Popen(argv, env=proc_env, cwd=cwd, stderr=subprocess.PIPE) - reg = re.compile ('definitely lost: ([^ ]+) bytes') error = False for line in proc.stderr: sys.stderr.write(line) - result = reg.search(line) - if result is None: - continue - if result.group(1) != "0": + if "== LEAK SUMMARY" in line: error = True retval = proc.wait() if retval == 0 and error: From c0be5c00b3d9399725fbdb010ad5868e5bbfee5e Mon Sep 17 00:00:00 2001 From: Faker Moatamri Date: Tue, 19 Jan 2010 17:02:38 +0100 Subject: [PATCH 20/21] Bug 793: no creation of a new simulator when calling simulator::cancel or remove or IsExpired --- src/simulator/simulator.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/simulator/simulator.cc b/src/simulator/simulator.cc index 3a51d6f41..e3ef14898 100644 --- a/src/simulator/simulator.cc +++ b/src/simulator/simulator.cc @@ -291,6 +291,10 @@ void Simulator::Remove (const EventId &ev) { NS_LOG_FUNCTION (&ev); + if (*PeekImpl () == 0) + { + return; + } return GetImpl ()->Remove (ev); } @@ -298,6 +302,10 @@ void Simulator::Cancel (const EventId &ev) { NS_LOG_FUNCTION (&ev); + if (*PeekImpl () == 0) + { + return; + } return GetImpl ()->Cancel (ev); } @@ -305,6 +313,10 @@ bool Simulator::IsExpired (const EventId &id) { NS_LOG_FUNCTION (&id); + if (*PeekImpl () == 0) + { + return true; + } return GetImpl ()->IsExpired (id); } From 0a1ebfb8cc128c1df74e8f23baa6e71c496ce8fe Mon Sep 17 00:00:00 2001 From: Faker Moatamri Date: Tue, 19 Jan 2010 17:06:18 +0100 Subject: [PATCH 21/21] Bug 793: remove remaining memory leaks due to not cleaned Simulator --- src/contrib/event-garbage-collector.cc | 2 +- src/devices/wifi/wifi-test.cc | 2 +- src/helper/ipv4-address-helper.cc | 4 ++++ src/internet-stack/ipv4-test.cc | 2 +- src/internet-stack/ipv6-test.cc | 2 +- src/node/ipv4-address-generator.cc | 3 +++ src/routing/aodv/aodv-test-suite.cc | 4 ++-- 7 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/contrib/event-garbage-collector.cc b/src/contrib/event-garbage-collector.cc index f3280fff1..8a8dc154e 100644 --- a/src/contrib/event-garbage-collector.cc +++ b/src/contrib/event-garbage-collector.cc @@ -138,7 +138,7 @@ bool EventGarbageCollectorTestCase::DoRun (void) Simulator::Run (); NS_TEST_EXPECT_MSG_EQ (m_events, 0, ""); NS_TEST_EXPECT_MSG_EQ (m_counter, 50, ""); - + Simulator::Destroy (); return false; } diff --git a/src/devices/wifi/wifi-test.cc b/src/devices/wifi/wifi-test.cc index f03ade983..df619e5cf 100644 --- a/src/devices/wifi/wifi-test.cc +++ b/src/devices/wifi/wifi-test.cc @@ -143,7 +143,7 @@ WifiTest::DoRun (void) m_propDelay.SetTypeId ("ns3::RandomPropagationDelayModel"); m_mac.SetTypeId ("ns3::AdhocWifiMac"); RunOne (); - + Simulator::Destroy (); return false; } diff --git a/src/helper/ipv4-address-helper.cc b/src/helper/ipv4-address-helper.cc index 597157247..d61891271 100644 --- a/src/helper/ipv4-address-helper.cc +++ b/src/helper/ipv4-address-helper.cc @@ -23,6 +23,7 @@ #include "ns3/net-device.h" #include "ns3/ipv4.h" #include "ns3/ipv4-address-generator.h" +#include "ns3/simulator.h" #include "ipv4-address-helper.h" NS_LOG_COMPONENT_DEFINE("Ipv4AddressHelper"); @@ -200,6 +201,7 @@ void NetworkAllocatorHelperTestCase::DoTeardown (void) { Ipv4AddressGenerator::Reset (); + Simulator::Destroy (); } bool NetworkAllocatorHelperTestCase::DoRun (void) @@ -246,6 +248,7 @@ void AddressAllocatorHelperTestCase::DoTeardown (void) { Ipv4AddressGenerator::Reset (); + Simulator::Destroy (); } bool @@ -337,6 +340,7 @@ void ResetAllocatorHelperTestCase::DoTeardown (void) { Ipv4AddressGenerator::Reset (); + Simulator::Destroy (); } static class Ipv4AddressHelperTestSuite : public TestSuite diff --git a/src/internet-stack/ipv4-test.cc b/src/internet-stack/ipv4-test.cc index 9f38b5b7e..d23ef9ac7 100644 --- a/src/internet-stack/ipv4-test.cc +++ b/src/internet-stack/ipv4-test.cc @@ -94,7 +94,7 @@ Ipv4L3ProtocolTestCase::DoRun (void) Ipv4InterfaceAddress output = interface->GetAddress (2); NS_TEST_ASSERT_MSG_EQ (ifaceAddr4, output, "The addresses should be identical"); - + Simulator::Destroy (); return false; } diff --git a/src/internet-stack/ipv6-test.cc b/src/internet-stack/ipv6-test.cc index 35863b0ad..832728d09 100644 --- a/src/internet-stack/ipv6-test.cc +++ b/src/internet-stack/ipv6-test.cc @@ -135,7 +135,7 @@ Ipv6L3ProtocolTestCase::DoRun () index = ipv6->GetInterfaceForAddress ("2001:ffff:5678:9000::1"); /* address we just remove */ NS_TEST_ASSERT_MSG_EQ (index, (uint32_t) -1, "Address should not be found??"); - + Simulator::Destroy (); return false; }//end DoRun static class IPv6L3ProtocolTestSuite : public TestSuite diff --git a/src/node/ipv4-address-generator.cc b/src/node/ipv4-address-generator.cc index 7caeaaf23..3d908309e 100644 --- a/src/node/ipv4-address-generator.cc +++ b/src/node/ipv4-address-generator.cc @@ -560,6 +560,7 @@ void AddressAllocatorTestCase::DoTeardown (void) { Ipv4AddressGenerator::Reset (); + Simulator::Destroy (); } @@ -579,6 +580,7 @@ void NetworkAndAddressTestCase::DoTeardown (void) { Ipv4AddressGenerator::Reset (); + Simulator::Destroy (); } bool @@ -695,6 +697,7 @@ void AddressCollisionTestCase::DoTeardown (void) { Ipv4AddressGenerator::Reset (); + Simulator::Destroy (); } bool AddressCollisionTestCase::DoRun (void) diff --git a/src/routing/aodv/aodv-test-suite.cc b/src/routing/aodv/aodv-test-suite.cc index f86cb6c57..2737262a3 100644 --- a/src/routing/aodv/aodv-test-suite.cc +++ b/src/routing/aodv/aodv-test-suite.cc @@ -474,7 +474,7 @@ struct AodvRtableEntryTest : public TestCase NS_TEST_EXPECT_MSG_EQ (rt.IsPrecursorListEmpty (), true, "trivial"); rt.GetPrecursors (prec); NS_TEST_EXPECT_MSG_EQ (prec.size (), 2, "trivial"); - + Simulator::Destroy (); return GetErrorStatus (); } }; @@ -528,7 +528,7 @@ struct AodvRtableTest : public TestCase NS_TEST_EXPECT_MSG_EQ (rt.GetFlag (), INVALID, "trivial"); NS_TEST_EXPECT_MSG_EQ (rtable.DeleteRoute (Ipv4Address ("1.2.3.4")), true, "trivial"); NS_TEST_EXPECT_MSG_EQ (rtable.DeleteRoute (Ipv4Address ("1.2.3.4")), false, "trivial"); - + Simulator::Destroy (); return GetErrorStatus (); } };