diff --git a/src/devices/mesh/dot11s/peer-management-plugin.cc b/src/devices/mesh/dot11s/peer-management-plugin.cc index 3c4723673..cbe8216f0 100644 --- a/src/devices/mesh/dot11s/peer-management-plugin.cc +++ b/src/devices/mesh/dot11s/peer-management-plugin.cc @@ -90,21 +90,24 @@ PeerManagerMacPlugin::Receive (Ptr const_packet, const WifiMacHeader & h fields = peerFrame.GetFields(); NS_ASSERT(fields.subtype == actionValue.peerLink); } - if (actionValue.peerLink != WifiMeshMultihopActionHeader::PEER_LINK_CLOSE) - { - if(!(m_parent->CheckSupportedRates(fields.rates))) + if ( + (actionValue.peerLink != WifiMeshMultihopActionHeader::PEER_LINK_CLOSE) && + !(m_parent->CheckSupportedRates(fields.rates)) + ) { m_protocol->ConfigurationMismatch (m_ifIndex, peerAddress); // Broken peer link frame - drop it return false; } - if (!fields.meshId.IsEqual(m_parent->GetSsid())) + if ( + (actionValue.peerLink != WifiMeshMultihopActionHeader::PEER_LINK_CONFIRM) && + !fields.meshId.IsEqual(m_parent->GetSsid()) + ) { m_protocol->ConfigurationMismatch (m_ifIndex, peerAddress); // Broken peer link frame - drop it return false; } - } IePeerManagement peerElement; packet->RemoveHeader(peerElement); //Check taht frame subtype corresponds peer link subtype