#include <Defragmentation.h>
◆ defragmentFrames()
| Packet * inet::ieee80211::Defragmentation::defragmentFrames |
( |
std::vector< Packet * > * |
fragmentFrames | ) |
|
|
overridevirtual |
Implements inet::ieee80211::IDefragmentation.
19 EV_DEBUG <<
"Defragmenting " << fragmentFrames->size() <<
" fragments.\n";
20 auto defragmentedFrame =
new Packet();
21 const auto& defragmentedHeader = staticPtrCast<Ieee80211DataOrMgmtHeader>(fragmentFrames->at(0)->peekAtFront<Ieee80211DataOrMgmtHeader>()->dupShared());
22 for (
auto fragmentFrame : *fragmentFrames) {
23 fragmentFrame->popAtFront<Ieee80211DataOrMgmtHeader>();
24 fragmentFrame->popAtBack<Ieee80211MacTrailer>(
B(4));
25 defragmentedFrame->insertAtBack(fragmentFrame->peekData());
26 std::string defragmentedName(fragmentFrame->getName());
27 auto index = defragmentedName.find(
"-frag");
28 if (index != std::string::npos)
29 defragmentedFrame->setName(defragmentedName.substr(0, index).c_str());
31 defragmentedHeader->setFragmentNumber(0);
32 defragmentedHeader->setMoreFragments(
false);
33 defragmentedFrame->insertAtFront(defragmentedHeader);
34 defragmentedFrame->insertAtBack(makeShared<Ieee80211MacTrailer>());
35 EV_TRACE <<
"Created " << *defragmentedFrame <<
".\n";
36 return defragmentedFrame;
Referenced by inet::ieee80211::BasicReassembly::addFragment().
The documentation for this class was generated from the following files: