A Discrete-Event Network Simulator
API
flame-protocol.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 IITP RAS
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: Kirill Andreev <andreev@iitp.ru>
19  */
20 
21 #ifndef FLAME_PROTOCOL_H
22 #define FLAME_PROTOCOL_H
23 
24 
25 #include "ns3/mesh-l2-routing-protocol.h"
26 #include "ns3/nstime.h"
27 #include "ns3/tag.h"
28 #include <map>
29 
45 namespace ns3 {
46 namespace flame {
47 class FlameProtocolMac;
48 class FlameHeader;
49 class FlameRtable;
54 class FlameTag : public Tag
55 {
56 public:
61 
68  receiver (a){}
69 
74  static TypeId GetTypeId ();
75  // Inherited from Tag
76  TypeId GetInstanceTypeId () const;
77  uint32_t GetSerializedSize () const;
78  void Serialize (TagBuffer i) const;
79  void Deserialize (TagBuffer i);
80  void Print (std::ostream &os) const;
81 
82 };
83 
89 {
90 public:
95  static TypeId GetTypeId ();
96  FlameProtocol ();
97  ~FlameProtocol ();
98  void DoDispose ();
99 
111  bool RequestRoute (uint32_t sourceIface, const Mac48Address source, const Mac48Address destination,
112  Ptr<const Packet> packet, uint16_t protocolType, RouteReplyCallback routeReply);
123  bool RemoveRoutingStuff (uint32_t fromIface, const Mac48Address source,
124  const Mac48Address destination, Ptr<Packet> packet, uint16_t& protocolType);
135  bool Install (Ptr<MeshPointDevice> mp);
145  void Report (std::ostream & os) const;
147  void ResetStats ();
148 private:
158 
160  static const uint16_t FLAME_PROTOCOL = 0x4040;
171  bool HandleDataFrame (uint16_t seqno, Mac48Address source, const FlameHeader flameHdr, Mac48Address receiver, uint32_t fromIface);
176  typedef std::map<uint32_t, Ptr<FlameProtocolMac> > FlamePluginMap;
179  //\}
186  //\}
188  uint8_t m_maxCost;
190  uint16_t m_myLastSeqno;
194  struct Statistics
195  {
196  uint16_t txUnicast;
197  uint16_t txBroadcast;
198  uint32_t txBytes;
199  uint16_t droppedTtl;
200  uint16_t totalDropped;
201 
205  void Print (std::ostream & os) const;
207  Statistics ();
208  };
210 
211 };
212 } // namespace flame
213 } // namespace ns3
214 #endif /* FLAME_PROTOCOL_H */
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::flame::FlameProtocol::m_myLastSeqno
uint16_t m_myLastSeqno
Sequence number:
Definition: flame-protocol.h:190
ns3::flame::FlameProtocol::Install
bool Install(Ptr< MeshPointDevice > mp)
Install FLAME on given mesh point.
Definition: flame-protocol.cc:296
ns3::flame::FlameTag::Print
void Print(std::ostream &os) const
Definition: flame-protocol.cc:103
ns3::flame::FlameProtocol::Statistics::txBroadcast
uint16_t txBroadcast
transmit broadcast
Definition: flame-protocol.h:197
ns3::flame::FlameTag::receiver
Mac48Address receiver
Receiver of the packet:
Definition: flame-protocol.h:60
ns3::Callback
Callback template class.
Definition: callback.h:1279
ns3::flame::FlameTag::FlameTag
FlameTag(Mac48Address a=Mac48Address())
Constructor.
Definition: flame-protocol.h:67
ns3::flame::FlameTag::GetInstanceTypeId
TypeId GetInstanceTypeId() const
Get the most derived TypeId for this Object.
Definition: flame-protocol.cc:57
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::flame::FlameProtocol::m_maxCost
uint8_t m_maxCost
Max Cost value (or TTL, because cost is actually hopcount)
Definition: flame-protocol.h:188
ns3::flame::FlameTag::Deserialize
void Deserialize(TagBuffer i)
Definition: flame-protocol.cc:86
ns3::flame::FlameProtocol::HandleDataFrame
bool HandleDataFrame(uint16_t seqno, Mac48Address source, const FlameHeader flameHdr, Mac48Address receiver, uint32_t fromIface)
Handles a packet: adds a routing information and drops packets by TTL or Seqno.
Definition: flame-protocol.cc:331
ns3::flame::FlameProtocol::FlamePluginMap
std::map< uint32_t, Ptr< FlameProtocolMac > > FlamePluginMap
interfaces
Definition: flame-protocol.h:176
ns3::MeshL2RoutingProtocol
Interface for L2 mesh routing protocol and mesh point communication.
Definition: mesh-l2-routing-protocol.h:45
ns3::flame::FlameProtocol::Statistics::Print
void Print(std::ostream &os) const
Print function.
Definition: flame-protocol.cc:358
ns3::Mac48Address
an EUI-48 address
Definition: mac48-address.h:44
ns3::flame::FlameProtocol::Statistics::Statistics
Statistics()
constructor
Definition: flame-protocol.cc:353
ns3::flame::FlameTag::GetTypeId
static TypeId GetTypeId()
Get the type ID.
Definition: flame-protocol.cc:46
ns3::flame::FlameProtocol::Report
void Report(std::ostream &os) const
Statistics.
Definition: flame-protocol.cc:368
ns3::flame::FlameHeader
Flame header.
Definition: flame-header.h:38
ns3::flame::FlameProtocol::ResetStats
void ResetStats()
Reset statistics function.
Definition: flame-protocol.cc:382
ns3::flame::FlameProtocol::Statistics::txBytes
uint32_t txBytes
transmit bytes
Definition: flame-protocol.h:198
ns3::Ptr< const Packet >
ns3::flame::FlameProtocol
FLAME routing protocol.
Definition: flame-protocol.h:89
ns3::flame::FlameProtocol::Statistics::totalDropped
uint16_t totalDropped
total dropped
Definition: flame-protocol.h:200
ns3::flame::FlameProtocol::m_interfaces
FlamePluginMap m_interfaces
interfaces
Definition: flame-protocol.h:177
ns3::flame::FlameProtocol::Statistics::droppedTtl
uint16_t droppedTtl
dropped TTL
Definition: flame-protocol.h:199
ns3::Tag
tag a set of bytes in a packet
Definition: tag.h:37
ns3::flame::FlameProtocol::Statistics
Statistics structure.
Definition: flame-protocol.h:195
ns3::flame::FlameProtocol::m_stats
Statistics m_stats
statistics
Definition: flame-protocol.h:209
ns3::flame::FlameProtocol::FlameProtocol
FlameProtocol()
Definition: flame-protocol.cc:135
ns3::flame::FlameTag
Transmitter and receiver addresses.
Definition: flame-protocol.h:55
ns3::flame::FlameProtocol::operator=
FlameProtocol & operator=(const FlameProtocol &flame)
assignment operator
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::flame::FlameProtocol::GetTypeId
static TypeId GetTypeId()
Get the type ID.
Definition: flame-protocol.cc:112
ns3::flame::FlameProtocol::m_address
Mac48Address m_address
address
Definition: flame-protocol.h:178
ns3::flame::FlameTag::transmitter
Mac48Address transmitter
transmitter for incoming:
Definition: flame-protocol.h:58
ns3::flame::FlameTag::GetSerializedSize
uint32_t GetSerializedSize() const
Definition: flame-protocol.cc:63
ns3::flame::FlameProtocol::m_lastBroadcast
Time m_lastBroadcast
Max Cost value (or TTL, because cost is actually hopcount)
Definition: flame-protocol.h:185
ns3::flame::FlameProtocol::FlameProtocol
FlameProtocol(const FlameProtocol &)
type conversion operator
ns3::flame::FlameTag::Serialize
void Serialize(TagBuffer i) const
Definition: flame-protocol.cc:69
ns3::flame::FlameProtocol::FLAME_PROTOCOL
static const uint16_t FLAME_PROTOCOL
LLC protocol number reserved by flame.
Definition: flame-protocol.h:160
ns3::flame::FlameProtocol::Statistics::txUnicast
uint16_t txUnicast
transmit unicast
Definition: flame-protocol.h:196
ns3::flame::FlameProtocol::~FlameProtocol
~FlameProtocol()
Definition: flame-protocol.cc:140
ns3::flame::FlameProtocol::RequestRoute
bool RequestRoute(uint32_t sourceIface, const Mac48Address source, const Mac48Address destination, Ptr< const Packet > packet, uint16_t protocolType, RouteReplyCallback routeReply)
Route request, inherited from MeshL2RoutingProtocol.
Definition: flame-protocol.cc:151
ns3::flame::FlameProtocol::GetAddress
Mac48Address GetAddress()
Get address of this instance.
Definition: flame-protocol.cc:326
ns3::flame::FlameProtocol::m_broadcastInterval
Time m_broadcastInterval
Max Cost value (or TTL, because cost is actually hopcount)
Definition: flame-protocol.h:184
ns3::TagBuffer
read and write tag data
Definition: tag-buffer.h:52
ns3::flame::FlameProtocol::DoDispose
void DoDispose()
Destructor implementation.
Definition: flame-protocol.cc:144
ns3::flame::FlameProtocol::RemoveRoutingStuff
bool RemoveRoutingStuff(uint32_t fromIface, const Mac48Address source, const Mac48Address destination, Ptr< Packet > packet, uint16_t &protocolType)
Cleanup flame headers!
Definition: flame-protocol.cc:262
ns3::flame::FlameProtocol::m_rtable
Ptr< FlameRtable > m_rtable
Routing table:
Definition: flame-protocol.h:192