INET Framework for OMNeT++/OMNEST
inet::ieee80211::LegacyDuplicateRemoval Class Reference

#include <LegacyDuplicateRemoval.h>

Inheritance diagram for inet::ieee80211::LegacyDuplicateRemoval:
inet::ieee80211::IDuplicateRemoval

Public Member Functions

virtual bool isDuplicate (const Ptr< const Ieee80211DataOrMgmtHeader > &header) override
 
- Public Member Functions inherited from inet::ieee80211::IDuplicateRemoval
virtual ~IDuplicateRemoval ()
 

Protected Attributes

std::map< MacAddress, SequenceControlFieldlastSeenSeqNumCache
 

Member Function Documentation

◆ isDuplicate()

bool inet::ieee80211::LegacyDuplicateRemoval::isDuplicate ( const Ptr< const Ieee80211DataOrMgmtHeader > &  header)
overridevirtual

Implements inet::ieee80211::IDuplicateRemoval.

16 {
17  ASSERT(header->getType() != ST_DATA_WITH_QOS);
18  const MacAddress& address = header->getTransmitterAddress();
19  SequenceControlField seqVal(header->getSequenceNumber().get(), header->getFragmentNumber());
20  auto it = lastSeenSeqNumCache.find(address);
21  if (it == lastSeenSeqNumCache.end())
22  lastSeenSeqNumCache.insert(std::pair<MacAddress, SequenceControlField>(address, seqVal));
23  else if (it->second.getSequenceNumber() == seqVal.getSequenceNumber() && it->second.getFragmentNumber() == seqVal.getFragmentNumber() && header->getRetry())
24  return true;
25  else
26  it->second = seqVal;
27  return false;
28 }

Member Data Documentation

◆ lastSeenSeqNumCache

std::map<MacAddress, SequenceControlField> inet::ieee80211::LegacyDuplicateRemoval::lastSeenSeqNumCache
protected

Referenced by isDuplicate().


The documentation for this class was generated from the following files:
inet::ieee80211::ST_DATA_WITH_QOS
@ ST_DATA_WITH_QOS
Definition: Ieee80211Frame_m.h:169
inet::ieee80211::LegacyDuplicateRemoval::lastSeenSeqNumCache
std::map< MacAddress, SequenceControlField > lastSeenSeqNumCache
Definition: LegacyDuplicateRemoval.h:23