A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
mesh-wifi-interface-mac-plugin.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 IITP RAS
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation;
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program; if not, write to the Free Software
15
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
*
17
* Author: Pavel Boyko <boyko@iitp.ru>
18
*/
19
20
#ifndef MESH_WIFI_INTERFACE_MAC_PLUGIN_H
21
#define MESH_WIFI_INTERFACE_MAC_PLUGIN_H
22
23
#include "
mesh-wifi-beacon.h
"
24
25
#include "ns3/mac48-address.h"
26
#include "ns3/packet.h"
27
#include "ns3/simple-ref-count.h"
28
29
namespace
ns3
30
{
31
32
class
MeshWifiInterfaceMac;
33
34
/**
35
* \ingroup mesh
36
*
37
* \brief Common interface for mesh point interface MAC plugins
38
*
39
* \todo plugins description
40
*/
41
class
MeshWifiInterfaceMacPlugin
:
public
SimpleRefCount
<MeshWifiInterfaceMacPlugin>
42
{
43
public
:
44
/// This is for subclasses
45
virtual
~MeshWifiInterfaceMacPlugin
(){};
46
/**
47
* Each plugin must be installed on an interface to work
48
*
49
* \param parent the parent object
50
*/
51
virtual
void
SetParent
(
Ptr<MeshWifiInterfaceMac>
parent) = 0;
52
/**
53
* \brief Process received frame
54
* \param packet
55
* \param header
56
*
57
* \return false if (and only if) frame should be dropped
58
* \todo define when MAC call this
59
*/
60
virtual
bool
Receive
(
Ptr<Packet>
packet,
const
WifiMacHeader
& header) = 0;
61
/**
62
* \brief Update frame before it will be forwarded down
63
* \param packet
64
* \param header
65
* \param from
66
* \param to
67
* \return false if (and only if) frame should be dropped
68
* \todo define when MAC call this, preconditions & postconditions
69
*/
70
virtual
bool
UpdateOutcomingFrame
(
Ptr<Packet>
packet,
71
WifiMacHeader
& header,
72
Mac48Address
from,
73
Mac48Address
to) = 0;
74
/**
75
* \brief Update beacon before it will be formed and sent
76
* \param beacon
77
*
78
* \todo define when MAC call this
79
*/
80
virtual
void
UpdateBeacon
(
MeshWifiBeacon
& beacon)
const
= 0;
81
/**
82
* Assign a fixed random variable stream number to the random variables
83
* used by this model. Return the number of streams (possibly zero) that
84
* have been assigned.
85
*
86
* \param stream first stream index to use
87
* \return the number of stream indices assigned by this model
88
*/
89
virtual
int64_t
AssignStreams
(int64_t stream) = 0;
90
};
91
92
}
// namespace ns3
93
94
#endif
/* MESH_WIFI_INTERFACE_MAC_PLUGIN_H */
ns3::Mac48Address
an EUI-48 address
Definition:
mac48-address.h:46
ns3::MeshWifiBeacon
Beacon is beacon header + list of arbitrary information elements.
Definition:
mesh-wifi-beacon.h:42
ns3::MeshWifiInterfaceMacPlugin
Common interface for mesh point interface MAC plugins.
Definition:
mesh-wifi-interface-mac-plugin.h:42
ns3::MeshWifiInterfaceMacPlugin::AssignStreams
virtual int64_t AssignStreams(int64_t stream)=0
Assign a fixed random variable stream number to the random variables used by this model.
ns3::MeshWifiInterfaceMacPlugin::Receive
virtual bool Receive(Ptr< Packet > packet, const WifiMacHeader &header)=0
Process received frame.
ns3::MeshWifiInterfaceMacPlugin::~MeshWifiInterfaceMacPlugin
virtual ~MeshWifiInterfaceMacPlugin()
This is for subclasses.
Definition:
mesh-wifi-interface-mac-plugin.h:45
ns3::MeshWifiInterfaceMacPlugin::UpdateBeacon
virtual void UpdateBeacon(MeshWifiBeacon &beacon) const =0
Update beacon before it will be formed and sent.
ns3::MeshWifiInterfaceMacPlugin::SetParent
virtual void SetParent(Ptr< MeshWifiInterfaceMac > parent)=0
Each plugin must be installed on an interface to work.
ns3::MeshWifiInterfaceMacPlugin::UpdateOutcomingFrame
virtual bool UpdateOutcomingFrame(Ptr< Packet > packet, WifiMacHeader &header, Mac48Address from, Mac48Address to)=0
Update frame before it will be forwarded down.
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition:
ptr.h:77
ns3::SimpleRefCount
A template-based reference counting class.
Definition:
simple-ref-count.h:81
ns3::WifiMacHeader
Implements the IEEE 802.11 MAC header.
Definition:
wifi-mac-header.h:98
mesh-wifi-beacon.h
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
mesh
model
mesh-wifi-interface-mac-plugin.h
Generated on Tue May 28 2024 23:38:12 for ns-3 by
1.9.6