A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
mac-rx-middle.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2005 INRIA
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation;
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19
*/
20
21
#ifndef MAC_RX_MIDDLE_H
22
#define MAC_RX_MIDDLE_H
23
24
#include <map>
25
#include "ns3/simple-ref-count.h"
26
#include "ns3/callback.h"
27
28
namespace
ns3
{
29
30
class
WifiMacHeader;
31
class
OriginatorRxStatus;
32
class
Packet;
33
class
Mac48Address;
34
class
WifiMacQueueItem;
35
41
class
MacRxMiddle
:
public
SimpleRefCount
<MacRxMiddle>
42
{
43
public
:
47
typedef
Callback<void, Ptr<WifiMacQueueItem>
>
ForwardUpCallback
;
48
49
MacRxMiddle
();
50
~MacRxMiddle
();
51
57
void
SetForwardCallback
(
ForwardUpCallback
callback);
58
64
void
Receive
(
Ptr<WifiMacQueueItem>
mpdu);
65
66
67
private
:
69
friend
class
MacRxMiddleTest
;
79
OriginatorRxStatus
*
Lookup
(
const
WifiMacHeader
* hdr);
90
bool
IsDuplicate
(
const
WifiMacHeader
* hdr,
OriginatorRxStatus
*originator)
const
;
106
Ptr<const Packet>
HandleFragments
(
Ptr<const Packet>
packet,
const
WifiMacHeader
* hdr,
107
OriginatorRxStatus
*originator);
108
112
typedef
std::map <Mac48Address, OriginatorRxStatus *, std::less<Mac48Address> >
Originators
;
116
typedef
std::map <std::pair<Mac48Address, uint8_t>,
OriginatorRxStatus
*, std::less<std::pair<Mac48Address,uint8_t> > >
QosOriginators
;
120
typedef
std::map <Mac48Address, OriginatorRxStatus *, std::less<Mac48Address> >::iterator
OriginatorsI
;
124
typedef
std::map <std::pair<Mac48Address, uint8_t>,
OriginatorRxStatus
*, std::less<std::pair<Mac48Address,uint8_t> > >::iterator
QosOriginatorsI
;
125
126
Originators
m_originatorStatus
;
127
QosOriginators
m_qosOriginatorStatus
;
128
ForwardUpCallback
m_callback
;
129
};
130
131
}
//namespace ns3
132
133
#endif
/* MAC_RX_MIDDLE_H */
ns3::MacRxMiddle::QosOriginators
std::map< std::pair< Mac48Address, uint8_t >, OriginatorRxStatus *, std::less< std::pair< Mac48Address, uint8_t > > > QosOriginators
typedef for a map between address, OriginatorRxStatus, and Traffic ID
Definition:
mac-rx-middle.h:116
ns3::MacRxMiddle::Originators
std::map< Mac48Address, OriginatorRxStatus *, std::less< Mac48Address > > Originators
typedef for a map between address and OriginatorRxStatus
Definition:
mac-rx-middle.h:112
ns3::MacRxMiddle::IsDuplicate
bool IsDuplicate(const WifiMacHeader *hdr, OriginatorRxStatus *originator) const
Check if we have already received the packet from the sender before (by looking at the sequence contr...
Definition:
mac-rx-middle.cc:227
ns3::Callback
Callback template class.
Definition:
callback.h:1279
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::MacRxMiddle::QosOriginatorsI
std::map< std::pair< Mac48Address, uint8_t >, OriginatorRxStatus *, std::less< std::pair< Mac48Address, uint8_t > > >::iterator QosOriginatorsI
typedef for an iterator for QosOriginators
Definition:
mac-rx-middle.h:124
ns3::SimpleRefCount
A template-based reference counting class.
Definition:
simple-ref-count.h:74
ns3::MacRxMiddle::OriginatorsI
std::map< Mac48Address, OriginatorRxStatus *, std::less< Mac48Address > >::iterator OriginatorsI
typedef for an iterator for Originators
Definition:
mac-rx-middle.h:120
ns3::MacRxMiddle::MacRxMiddleTest
friend class MacRxMiddleTest
allow MacRxMiddleTest associated class access
Definition:
mac-rx-middle.h:69
ns3::MacRxMiddle::m_originatorStatus
Originators m_originatorStatus
originator status
Definition:
mac-rx-middle.h:126
ns3::WifiMacHeader
Implements the IEEE 802.11 MAC header.
Definition:
wifi-mac-header.h:85
ns3::Ptr< WifiMacQueueItem >
ns3::MacRxMiddle::SetForwardCallback
void SetForwardCallback(ForwardUpCallback callback)
Set a callback to forward the packet up.
Definition:
mac-rx-middle.cc:186
ns3::MacRxMiddle
This class handles duplicate detection and recomposition of fragments.
Definition:
mac-rx-middle.h:42
ns3::MacRxMiddle::HandleFragments
Ptr< const Packet > HandleFragments(Ptr< const Packet > packet, const WifiMacHeader *hdr, OriginatorRxStatus *originator)
Check if the received packet is a fragment and handle it appropriately.
Definition:
mac-rx-middle.cc:240
ns3::MacRxMiddle::~MacRxMiddle
~MacRxMiddle()
Definition:
mac-rx-middle.cc:166
ns3::MacRxMiddle::m_callback
ForwardUpCallback m_callback
forward up callback
Definition:
mac-rx-middle.h:128
ns3::OriginatorRxStatus
A class to keep track of the packet originator status.
Definition:
mac-rx-middle.cc:36
ns3::MacRxMiddle::ForwardUpCallback
Callback< void, Ptr< WifiMacQueueItem > > ForwardUpCallback
typedef for callback
Definition:
mac-rx-middle.h:47
ns3::MacRxMiddle::m_qosOriginatorStatus
QosOriginators m_qosOriginatorStatus
QOS originator status.
Definition:
mac-rx-middle.h:127
ns3::MacRxMiddle::MacRxMiddle
MacRxMiddle()
Definition:
mac-rx-middle.cc:161
ns3::MacRxMiddle::Lookup
OriginatorRxStatus * Lookup(const WifiMacHeader *hdr)
Look up for OriginatorRxStatus associated with the sender address (by looking at ADDR2 field in the h...
Definition:
mac-rx-middle.cc:193
ns3::MacRxMiddle::Receive
void Receive(Ptr< WifiMacQueueItem > mpdu)
Receive a packet.
Definition:
mac-rx-middle.cc:299
src
wifi
model
mac-rx-middle.h
Generated on Fri Oct 1 2021 17:03:45 for ns-3 by
1.8.20