A Discrete-Event Network Simulator
API
hwmp-tag.cc
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2008,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 * Authors: Kirill Andreev <andreev@iitp.ru>
19 */
20
21#include "hwmp-tag.h"
22
23namespace ns3 {
24namespace dot11s {
25
27
28//Class HwmpTag:
30 m_address (Mac48Address::GetBroadcast ()), m_ttl (0), m_metric (0), m_seqno (0)
31{
32}
33
35{
36}
37
38void
40{
41 m_address = retransmitter;
42}
43
46{
47 return m_address;
48}
49
50void
51HwmpTag::SetTtl (uint8_t ttl)
52{
53 m_ttl = ttl;
54}
55
56uint8_t
58{
59 return m_ttl;
60}
61
62void
64{
65 m_metric = metric;
66}
67
70{
71 return m_metric;
72}
73
74void
76{
77 m_seqno = seqno;
78}
79
82{
83 return m_seqno;
84}
85
92{
93 static TypeId tid = TypeId ("ns3::dot11s::HwmpTag")
94 .SetParent<Tag> ()
95 .SetGroupName ("Mesh")
96 .AddConstructor<HwmpTag> ()
97 ;
98 return tid;
99}
100
101TypeId
103{
104 return GetTypeId ();
105}
106
109{
110 return 6 //address
111 + 1 //ttl
112 + 4 //metric
113 + 4; //seqno
114}
115
116void
118{
119 uint8_t address[6];
120 int j;
122 i.WriteU8 (m_ttl);
123 i.WriteU32 (m_metric);
124 i.WriteU32 (m_seqno);
125 for (j = 0; j < 6; j++)
126 {
127 i.WriteU8 (address[j]);
128 }
129}
130
131void
133{
134 uint8_t address[6];
135 int j;
136 m_ttl = i.ReadU8 ();
137 m_metric = i.ReadU32 ();
138 m_seqno = i.ReadU32 ();
139 for (j = 0; j < 6; j++)
140 {
141 address[j] = i.ReadU8 ();
142 }
144}
145
146void
147HwmpTag::Print (std::ostream &os) const
148{
149 os << "address=" << m_address;
150 os << "ttl=" << m_ttl;
151 os << "metrc=" << m_metric;
152 os << "seqno=" << m_seqno;
153}
154void
156{
157 m_ttl--;
158}
159} // namespace dot11s
160} // namespace ns3
an EUI-48 address
Definition: mac48-address.h:44
void CopyFrom(const uint8_t buffer[6])
void CopyTo(uint8_t buffer[6]) const
read and write tag data
Definition: tag-buffer.h:52
TAG_BUFFER_INLINE uint32_t ReadU32(void)
Definition: tag-buffer.h:215
TAG_BUFFER_INLINE void WriteU8(uint8_t v)
Definition: tag-buffer.h:172
TAG_BUFFER_INLINE void WriteU32(uint32_t v)
Definition: tag-buffer.h:186
TAG_BUFFER_INLINE uint8_t ReadU8(void)
Definition: tag-buffer.h:195
tag a set of bytes in a packet
Definition: tag.h:37
a unique identifier for an interface.
Definition: type-id.h:59
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:922
Hwmp tag implements interaction between HWMP protocol and MeshWifiMac.
Definition: hwmp-tag.h:49
void SetTtl(uint8_t ttl)
Set the TTL value.
Definition: hwmp-tag.cc:51
uint32_t GetSeqno()
Get the sequence number.
Definition: hwmp-tag.cc:81
void SetMetric(uint32_t metric)
Set the metric value.
Definition: hwmp-tag.cc:63
virtual uint32_t GetSerializedSize() const
Definition: hwmp-tag.cc:108
void SetSeqno(uint32_t seqno)
Set sequence number.
Definition: hwmp-tag.cc:75
virtual void Print(std::ostream &os) const
Definition: hwmp-tag.cc:147
Mac48Address GetAddress()
Get address from tag.
Definition: hwmp-tag.cc:45
static TypeId GetTypeId()
Get the type ID.
Definition: hwmp-tag.cc:91
virtual void Deserialize(TagBuffer i)
Definition: hwmp-tag.cc:132
uint8_t GetTtl()
Get the TTL value.
Definition: hwmp-tag.cc:57
Mac48Address m_address
address
Definition: hwmp-tag.h:107
uint8_t m_ttl
TTL.
Definition: hwmp-tag.h:108
uint32_t m_metric
metric
Definition: hwmp-tag.h:109
uint32_t GetMetric()
Get the metric value.
Definition: hwmp-tag.cc:69
void SetAddress(Mac48Address retransmitter)
Set address.
Definition: hwmp-tag.cc:39
virtual void Serialize(TagBuffer i) const
Definition: hwmp-tag.cc:117
uint32_t m_seqno
sequence no
Definition: hwmp-tag.h:110
void DecrementTtl()
Decrement TTL.
Definition: hwmp-tag.cc:155
virtual TypeId GetInstanceTypeId() const
Get the most derived TypeId for this Object.
Definition: hwmp-tag.cc:102
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
address
Definition: first.py:44
Every class exported by the ns3 library is enclosed in the ns3 namespace.