A Discrete-Event Network Simulator
QKDNetSim v2.0 (NS-3 v3.41) @ (+)
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Enumerations
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
v
w
Enumerator
a
b
c
d
e
f
h
i
l
m
n
o
p
q
r
s
t
u
v
w
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
Related Functions
:
a
b
c
d
e
g
h
i
j
l
m
n
o
p
q
r
s
t
u
w
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Enumerations
Enumerator
c
e
i
l
o
r
s
t
v
Macros
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Examples
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
wimax-mac-to-mac-header.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2010 INRIA, UDcast
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
* Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
18
*
19
*/
20
#include "
wimax-mac-to-mac-header.h
"
21
22
#include "ns3/address-utils.h"
23
#include "ns3/log.h"
24
#include "ns3/uinteger.h"
25
26
namespace
ns3
27
{
28
29
NS_OBJECT_ENSURE_REGISTERED
(WimaxMacToMacHeader);
30
31
WimaxMacToMacHeader::WimaxMacToMacHeader
()
32
: m_len(0)
33
{
34
}
35
36
WimaxMacToMacHeader::WimaxMacToMacHeader
(uint32_t len)
37
: m_len(len)
38
{
39
}
40
41
WimaxMacToMacHeader::~WimaxMacToMacHeader
()
42
{
43
}
44
45
TypeId
46
WimaxMacToMacHeader::GetTypeId
()
47
{
48
static
TypeId
tid =
TypeId
(
"ns3::WimaxMacToMacHeader"
)
49
.
SetParent
<
Header
>()
50
.SetGroupName(
"Wimax"
)
51
.AddConstructor<
WimaxMacToMacHeader
>();
52
return
tid;
53
}
54
55
TypeId
56
WimaxMacToMacHeader::GetInstanceTypeId
()
const
57
{
58
return
GetTypeId
();
59
}
60
61
uint8_t
62
WimaxMacToMacHeader::GetSizeOfLen
()
const
63
{
64
uint8_t sizeOfLen = 1;
65
66
if
(
m_len
> 127)
67
{
68
sizeOfLen = 2;
69
uint64_t testValue = 0xFF;
70
while
(
m_len
> testValue)
71
{
72
sizeOfLen++;
73
testValue *= 0xFF;
74
}
75
}
76
return
sizeOfLen;
77
}
78
79
uint32_t
80
WimaxMacToMacHeader::GetSerializedSize
()
const
81
{
82
uint8_t sizeOfLen =
GetSizeOfLen
();
83
if
(sizeOfLen == 1)
84
{
85
return
20;
86
}
87
else
88
{
89
return
20 + sizeOfLen - 1;
90
}
91
// return 19+sizeOfLen;
92
}
93
94
void
95
WimaxMacToMacHeader::Serialize
(
Buffer::Iterator
i)
const
96
{
97
// The following header encoding was reverse-engineered by looking
98
// at existing live pcap traces which could be opened with wireshark
99
// i.e., we have no idea where this is coming from.
100
//
101
// 6 zeros for mac destination
102
// 6 zeros for mac source
103
// 2 bytes for length/type: 0x08f0
104
// 2 bytes for sequence number: 0x0001
105
// 2 bytes for number of tlvs: 0x0001
106
// 1 byte for type of first tlv: 0x09
107
// 1 byte to indicate the length of the length field of the tlv : 0x80 | 0x04
108
// n bytes to indicate the size of the packet (network order)
109
// n bytes for the packet data
110
111
uint8_t
zero
= 0;
112
113
for
(
int
j = 0; j < 12; j++)
114
{
115
i.
WriteU8
(
zero
);
116
}
117
i.
WriteU16
(0xf008);
// eth length/type
118
i.
WriteU16
(0x0100);
// sequence number
119
i.
WriteU16
(0x0100);
// number of tlvs
120
i.
WriteU8
(0x09);
// type of first tlv
121
uint8_t lenSize =
GetSizeOfLen
();
122
if
(lenSize == 1)
123
{
124
i.
WriteU8
(
m_len
);
125
}
126
else
127
{
128
i.
WriteU8
((lenSize - 1) | 0x80);
129
for
(
int
j = 0; j < lenSize - 1; j++)
130
{
131
i.
WriteU8
((uint8_t)(
m_len
>> ((lenSize - 1 - 1 - j) * 8)));
132
}
133
}
134
}
135
136
uint32_t
137
WimaxMacToMacHeader::Deserialize
(
Buffer::Iterator
start
)
138
{
139
// not needed here
140
return
20;
141
}
142
143
void
144
WimaxMacToMacHeader::Print
(std::ostream& os)
const
145
{
146
}
147
};
// namespace ns3
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition:
buffer.h:100
ns3::Buffer::Iterator::WriteU8
void WriteU8(uint8_t data)
Definition:
buffer.h:881
ns3::Buffer::Iterator::WriteU16
void WriteU16(uint16_t data)
Definition:
buffer.cc:859
ns3::Header
Protocol header serialization and deserialization.
Definition:
header.h:44
ns3::Header::Deserialize
virtual uint32_t Deserialize(Buffer::Iterator start)=0
Deserialize the object from a buffer iterator.
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:59
ns3::TypeId::SetParent
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition:
type-id.cc:931
ns3::WimaxMacToMacHeader
this class implements the mac to mac header needed to dump a wimax pcap file The header format was re...
Definition:
wimax-mac-to-mac-header.h:37
ns3::WimaxMacToMacHeader::GetTypeId
static TypeId GetTypeId()
Get the type ID.
Definition:
wimax-mac-to-mac-header.cc:46
ns3::WimaxMacToMacHeader::GetSizeOfLen
uint8_t GetSizeOfLen() const
Get size of length field.
Definition:
wimax-mac-to-mac-header.cc:62
ns3::WimaxMacToMacHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition:
wimax-mac-to-mac-header.cc:56
ns3::WimaxMacToMacHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Definition:
wimax-mac-to-mac-header.cc:95
ns3::WimaxMacToMacHeader::WimaxMacToMacHeader
WimaxMacToMacHeader()
Definition:
wimax-mac-to-mac-header.cc:31
ns3::WimaxMacToMacHeader::~WimaxMacToMacHeader
~WimaxMacToMacHeader() override
Definition:
wimax-mac-to-mac-header.cc:41
ns3::WimaxMacToMacHeader::Print
void Print(std::ostream &os) const override
Definition:
wimax-mac-to-mac-header.cc:144
ns3::WimaxMacToMacHeader::m_len
uint32_t m_len
length
Definition:
wimax-mac-to-mac-header.h:65
ns3::WimaxMacToMacHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Definition:
wimax-mac-to-mac-header.cc:80
zero
static double zero
Definition:
data-calculator.cc:29
NS_OBJECT_ENSURE_REGISTERED
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition:
object-base.h:46
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
two-ray-to-three-gpp-ch-calibration.start
start
Definition:
two-ray-to-three-gpp-ch-calibration.py:520
wimax-mac-to-mac-header.h
src
wimax
model
wimax-mac-to-mac-header.cc
Generated on Sun Mar 3 2024 17:11:14 for ns-3 by
1.9.1