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
ipv6-extension-header.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2007-2009 Strasbourg University
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Author: David Gross <gdavid.devel@gmail.com>
7
*/
8
9
#include "
ipv6-extension-header.h
"
10
11
#include "ns3/assert.h"
12
#include "ns3/header.h"
13
#include "ns3/log.h"
14
15
namespace
ns3
16
{
17
18
NS_LOG_COMPONENT_DEFINE
(
"Ipv6ExtensionHeader"
);
19
20
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionHeader
);
21
22
TypeId
23
Ipv6ExtensionHeader::GetTypeId
()
24
{
25
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionHeader"
)
26
.
AddConstructor
<
Ipv6ExtensionHeader
>()
27
.SetParent<Header>()
28
.SetGroupName(
"Internet"
);
29
return
tid;
30
}
31
32
TypeId
33
Ipv6ExtensionHeader::GetInstanceTypeId
()
const
34
{
35
return
GetTypeId
();
36
}
37
38
Ipv6ExtensionHeader::Ipv6ExtensionHeader
()
39
:
m_length
(0),
40
m_nextHeader
(0),
41
m_data
(0)
42
{
43
}
44
45
Ipv6ExtensionHeader::~Ipv6ExtensionHeader
()
46
{
47
}
48
49
void
50
Ipv6ExtensionHeader::SetNextHeader
(uint8_t nextHeader)
51
{
52
m_nextHeader
= nextHeader;
53
}
54
55
uint8_t
56
Ipv6ExtensionHeader::GetNextHeader
()
const
57
{
58
return
m_nextHeader
;
59
}
60
61
void
62
Ipv6ExtensionHeader::SetLength
(uint16_t length)
63
{
64
NS_ASSERT_MSG
(!(length & 0x7),
65
"Invalid Ipv6ExtensionHeader Length, must be a multiple of 8 bytes."
);
66
NS_ASSERT_MSG
(length > 0,
"Invalid Ipv6ExtensionHeader Length, must be greater than 0."
);
67
NS_ASSERT_MSG
(length < 2048,
"Invalid Ipv6ExtensionHeader Length, must be a lower than 2048."
);
68
69
m_length
= (length >> 3) - 1;
70
}
71
72
uint16_t
73
Ipv6ExtensionHeader::GetLength
()
const
74
{
75
return
(
m_length
+ 1) << 3;
76
}
77
78
void
79
Ipv6ExtensionHeader::Print
(std::ostream& os)
const
80
{
81
os <<
"( nextHeader = "
<< (
uint32_t
)
GetNextHeader
() <<
" length = "
<< (
uint32_t
)
GetLength
()
82
<<
" )"
;
83
}
84
85
uint32_t
86
Ipv6ExtensionHeader::GetSerializedSize
()
const
87
{
88
return
2;
89
}
90
91
void
92
Ipv6ExtensionHeader::Serialize
(
Buffer::Iterator
start)
const
93
{
94
Buffer::Iterator
i = start;
95
96
i.
WriteU8
(
m_nextHeader
);
97
i.
WriteU8
(
m_length
);
98
i.
Write
(
m_data
.PeekData(),
m_data
.GetSize());
99
}
100
101
uint32_t
102
Ipv6ExtensionHeader::Deserialize
(
Buffer::Iterator
start)
103
{
104
Buffer::Iterator
i = start;
105
106
m_nextHeader
= i.
ReadU8
();
107
m_length
= i.
ReadU8
();
108
109
uint32_t
dataLength =
GetLength
() - 2;
110
auto
data
=
new
uint8_t[dataLength];
111
i.
Read
(
data
, dataLength);
112
113
if
(dataLength >
m_data
.GetSize())
114
{
115
m_data
.AddAtEnd(dataLength -
m_data
.GetSize());
116
}
117
else
118
{
119
m_data
.RemoveAtEnd(
m_data
.GetSize() - dataLength);
120
}
121
122
i =
m_data
.Begin();
123
i.
Write
(
data
, dataLength);
124
125
delete
[]
data
;
126
return
GetSerializedSize
();
127
}
128
129
OptionField::OptionField
(
uint32_t
optionsOffset)
130
:
m_optionData
(0),
131
m_optionsOffset
(optionsOffset)
132
{
133
}
134
135
OptionField::~OptionField
()
136
{
137
}
138
139
uint32_t
140
OptionField::GetSerializedSize
()
const
141
{
142
return
m_optionData
.GetSize() +
CalculatePad
(
Ipv6OptionHeader::Alignment
{8, 0});
143
}
144
145
void
146
OptionField::Serialize
(
Buffer::Iterator
start)
const
147
{
148
start.Write(
m_optionData
.Begin(),
m_optionData
.End());
149
uint32_t
fill =
CalculatePad
(
Ipv6OptionHeader::Alignment
{8, 0});
150
NS_LOG_LOGIC
(
"fill with "
<< fill <<
" bytes padding"
);
151
switch
(fill)
152
{
153
case
0:
154
return
;
155
case
1:
156
Ipv6OptionPad1Header
().
Serialize
(start);
157
return
;
158
default
:
159
Ipv6OptionPadnHeader
(fill).
Serialize
(start);
160
return
;
161
}
162
}
163
164
uint32_t
165
OptionField::Deserialize
(
Buffer::Iterator
start,
uint32_t
length)
166
{
167
auto
buf =
new
uint8_t[length];
168
start.Read(buf, length);
169
m_optionData
=
Buffer
();
170
m_optionData
.AddAtEnd(length);
171
m_optionData
.Begin().Write(buf, length);
172
delete
[] buf;
173
return
length;
174
}
175
176
void
177
OptionField::AddOption
(
const
Ipv6OptionHeader
& option)
178
{
179
NS_LOG_FUNCTION
(option);
180
181
uint32_t
pad =
CalculatePad
(option.
GetAlignment
());
182
NS_LOG_LOGIC
(
"need "
<< pad <<
" bytes padding"
);
183
switch
(pad)
184
{
185
case
0:
186
break
;
// no padding needed
187
case
1:
188
AddOption
(
Ipv6OptionPad1Header
());
189
break
;
190
default
:
191
AddOption
(
Ipv6OptionPadnHeader
(pad));
192
break
;
193
}
194
195
m_optionData
.AddAtEnd(option.
GetSerializedSize
());
196
Buffer::Iterator
it =
m_optionData
.End();
197
it.
Prev
(option.
GetSerializedSize
());
198
option.
Serialize
(it);
199
}
200
201
uint32_t
202
OptionField::CalculatePad
(
Ipv6OptionHeader::Alignment
alignment)
const
203
{
204
return
(alignment.
offset
- (
m_optionData
.GetSize() +
m_optionsOffset
)) % alignment.
factor
;
205
}
206
207
uint32_t
208
OptionField::GetOptionsOffset
()
const
209
{
210
return
m_optionsOffset
;
211
}
212
213
Buffer
214
OptionField::GetOptionBuffer
()
215
{
216
return
m_optionData
;
217
}
218
219
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionHopByHopHeader
);
220
221
TypeId
222
Ipv6ExtensionHopByHopHeader::GetTypeId
()
223
{
224
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionHopByHopHeader"
)
225
.
AddConstructor
<
Ipv6ExtensionHopByHopHeader
>()
226
.SetParent<Ipv6ExtensionHeader>()
227
.SetGroupName(
"Internet"
);
228
return
tid;
229
}
230
231
TypeId
232
Ipv6ExtensionHopByHopHeader::GetInstanceTypeId
()
const
233
{
234
return
GetTypeId
();
235
}
236
237
Ipv6ExtensionHopByHopHeader::Ipv6ExtensionHopByHopHeader
()
238
:
OptionField
(2)
239
{
240
}
241
242
Ipv6ExtensionHopByHopHeader::~Ipv6ExtensionHopByHopHeader
()
243
{
244
}
245
246
void
247
Ipv6ExtensionHopByHopHeader::Print
(std::ostream& os)
const
248
{
249
os <<
"( nextHeader = "
<< (
uint32_t
)
GetNextHeader
() <<
" length = "
<< (
uint32_t
)
GetLength
()
250
<<
" )"
;
251
}
252
253
uint32_t
254
Ipv6ExtensionHopByHopHeader::GetSerializedSize
()
const
255
{
256
return
2 +
OptionField::GetSerializedSize
();
257
}
258
259
void
260
Ipv6ExtensionHopByHopHeader::Serialize
(
Buffer::Iterator
start)
const
261
{
262
Buffer::Iterator
i = start;
263
264
i.
WriteU8
(
GetNextHeader
());
265
i.
WriteU8
((
GetSerializedSize
() >> 3) - 1);
266
OptionField::Serialize
(i);
267
}
268
269
uint32_t
270
Ipv6ExtensionHopByHopHeader::Deserialize
(
Buffer::Iterator
start)
271
{
272
Buffer::Iterator
i = start;
273
274
SetNextHeader
(i.
ReadU8
());
275
m_length
= i.
ReadU8
();
276
OptionField::Deserialize
(i,
GetLength
() - 2);
277
278
return
GetSerializedSize
();
279
}
280
281
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionDestinationHeader
);
282
283
TypeId
284
Ipv6ExtensionDestinationHeader::GetTypeId
()
285
{
286
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionDestinationHeader"
)
287
.
AddConstructor
<
Ipv6ExtensionDestinationHeader
>()
288
.SetParent<Ipv6ExtensionHeader>()
289
.SetGroupName(
"Internet"
);
290
return
tid;
291
}
292
293
TypeId
294
Ipv6ExtensionDestinationHeader::GetInstanceTypeId
()
const
295
{
296
return
GetTypeId
();
297
}
298
299
Ipv6ExtensionDestinationHeader::Ipv6ExtensionDestinationHeader
()
300
:
OptionField
(2)
301
{
302
}
303
304
Ipv6ExtensionDestinationHeader::~Ipv6ExtensionDestinationHeader
()
305
{
306
}
307
308
void
309
Ipv6ExtensionDestinationHeader::Print
(std::ostream& os)
const
310
{
311
os <<
"( nextHeader = "
<< (
uint32_t
)
GetNextHeader
() <<
" length = "
<< (
uint32_t
)
GetLength
()
312
<<
" )"
;
313
}
314
315
uint32_t
316
Ipv6ExtensionDestinationHeader::GetSerializedSize
()
const
317
{
318
return
2 +
OptionField::GetSerializedSize
();
319
}
320
321
void
322
Ipv6ExtensionDestinationHeader::Serialize
(
Buffer::Iterator
start)
const
323
{
324
Buffer::Iterator
i = start;
325
326
i.
WriteU8
(
GetNextHeader
());
327
i.
WriteU8
((
GetSerializedSize
() >> 3) - 1);
328
OptionField::Serialize
(i);
329
}
330
331
uint32_t
332
Ipv6ExtensionDestinationHeader::Deserialize
(
Buffer::Iterator
start)
333
{
334
Buffer::Iterator
i = start;
335
336
SetNextHeader
(i.
ReadU8
());
337
m_length
= i.
ReadU8
();
338
OptionField::Deserialize
(i,
GetLength
() - 2);
339
340
return
GetSerializedSize
();
341
}
342
343
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionFragmentHeader
);
344
345
TypeId
346
Ipv6ExtensionFragmentHeader::GetTypeId
()
347
{
348
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionFragmentHeader"
)
349
.
AddConstructor
<
Ipv6ExtensionFragmentHeader
>()
350
.SetParent<Ipv6ExtensionHeader>()
351
.SetGroupName(
"Internet"
);
352
return
tid;
353
}
354
355
TypeId
356
Ipv6ExtensionFragmentHeader::GetInstanceTypeId
()
const
357
{
358
return
GetTypeId
();
359
}
360
361
Ipv6ExtensionFragmentHeader::Ipv6ExtensionFragmentHeader
()
362
:
m_offset
(0),
363
m_identification
(0)
364
{
365
m_length
= 0;
366
}
367
368
Ipv6ExtensionFragmentHeader::~Ipv6ExtensionFragmentHeader
()
369
{
370
}
371
372
void
373
Ipv6ExtensionFragmentHeader::SetOffset
(uint16_t offset)
374
{
375
// Clear the offset, and save the MF bit
376
m_offset
&= 1;
377
m_offset
|= offset & (~7);
378
}
379
380
uint16_t
381
Ipv6ExtensionFragmentHeader::GetOffset
()
const
382
{
383
return
m_offset
& (~1);
384
}
385
386
void
387
Ipv6ExtensionFragmentHeader::SetMoreFragment
(
bool
moreFragment)
388
{
389
m_offset
= moreFragment ?
m_offset
| 1 :
m_offset
& (~1);
390
}
391
392
bool
393
Ipv6ExtensionFragmentHeader::GetMoreFragment
()
const
394
{
395
return
m_offset
& 1;
396
}
397
398
void
399
Ipv6ExtensionFragmentHeader::SetIdentification
(
uint32_t
identification)
400
{
401
m_identification
= identification;
402
}
403
404
uint32_t
405
Ipv6ExtensionFragmentHeader::GetIdentification
()
const
406
{
407
return
m_identification
;
408
}
409
410
void
411
Ipv6ExtensionFragmentHeader::Print
(std::ostream& os)
const
412
{
413
os <<
"( nextHeader = "
<< (
uint32_t
)
GetNextHeader
() <<
" length = "
<< (
uint32_t
)
GetLength
()
414
<<
" offset = "
<< (
uint32_t
)
GetOffset
() <<
" MF = "
<< (
uint32_t
)
GetMoreFragment
()
415
<<
" identification = "
<< (
uint32_t
)
m_identification
<<
" )"
;
416
}
417
418
uint32_t
419
Ipv6ExtensionFragmentHeader::GetSerializedSize
()
const
420
{
421
return
8;
422
}
423
424
void
425
Ipv6ExtensionFragmentHeader::Serialize
(
Buffer::Iterator
start)
const
426
{
427
Buffer::Iterator
i = start;
428
429
i.
WriteU8
(
GetNextHeader
());
430
// Fragment header does not carry an extension length
431
i.
WriteU8
(0);
432
i.
WriteHtonU16
(
m_offset
);
433
i.
WriteHtonU32
(
m_identification
);
434
}
435
436
uint32_t
437
Ipv6ExtensionFragmentHeader::Deserialize
(
Buffer::Iterator
start)
438
{
439
Buffer::Iterator
i = start;
440
441
SetNextHeader
(i.
ReadU8
());
442
// Fragment header does not carry an extension length
443
i.
ReadU8
();
444
m_offset
= i.
ReadNtohU16
();
445
m_identification
= i.
ReadNtohU32
();
446
447
return
GetSerializedSize
();
448
}
449
450
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionRoutingHeader
);
451
452
TypeId
453
Ipv6ExtensionRoutingHeader::GetTypeId
()
454
{
455
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionRoutingHeader"
)
456
.
AddConstructor
<
Ipv6ExtensionRoutingHeader
>()
457
.SetParent<Ipv6ExtensionHeader>()
458
.SetGroupName(
"Internet"
);
459
return
tid;
460
}
461
462
TypeId
463
Ipv6ExtensionRoutingHeader::GetInstanceTypeId
()
const
464
{
465
return
GetTypeId
();
466
}
467
468
Ipv6ExtensionRoutingHeader::Ipv6ExtensionRoutingHeader
()
469
:
m_typeRouting
(0),
470
m_segmentsLeft
(0)
471
{
472
}
473
474
Ipv6ExtensionRoutingHeader::~Ipv6ExtensionRoutingHeader
()
475
{
476
}
477
478
void
479
Ipv6ExtensionRoutingHeader::SetTypeRouting
(uint8_t typeRouting)
480
{
481
m_typeRouting
= typeRouting;
482
}
483
484
uint8_t
485
Ipv6ExtensionRoutingHeader::GetTypeRouting
()
const
486
{
487
return
m_typeRouting
;
488
}
489
490
void
491
Ipv6ExtensionRoutingHeader::SetSegmentsLeft
(uint8_t segmentsLeft)
492
{
493
m_segmentsLeft
= segmentsLeft;
494
}
495
496
uint8_t
497
Ipv6ExtensionRoutingHeader::GetSegmentsLeft
()
const
498
{
499
return
m_segmentsLeft
;
500
}
501
502
void
503
Ipv6ExtensionRoutingHeader::Print
(std::ostream& os)
const
504
{
505
os <<
"( nextHeader = "
<< (
uint32_t
)
GetNextHeader
() <<
" length = "
<< (
uint32_t
)
GetLength
()
506
<<
" typeRouting = "
<< (
uint32_t
)
m_typeRouting
507
<<
" segmentsLeft = "
<< (
uint32_t
)
m_segmentsLeft
<<
" )"
;
508
}
509
510
uint32_t
511
Ipv6ExtensionRoutingHeader::GetSerializedSize
()
const
512
{
513
return
4;
514
}
515
516
void
517
Ipv6ExtensionRoutingHeader::Serialize
(
Buffer::Iterator
start)
const
518
{
519
Buffer::Iterator
i = start;
520
521
i.
WriteU8
(
GetNextHeader
());
522
i.
WriteU8
(
m_length
);
523
i.
WriteU8
(
m_typeRouting
);
524
i.
WriteU8
(
m_segmentsLeft
);
525
}
526
527
uint32_t
528
Ipv6ExtensionRoutingHeader::Deserialize
(
Buffer::Iterator
start)
529
{
530
Buffer::Iterator
i = start;
531
532
SetNextHeader
(i.
ReadU8
());
533
m_length
= i.
ReadU8
();
534
m_typeRouting
= i.
ReadU8
();
535
m_segmentsLeft
= i.
ReadU8
();
536
537
return
GetSerializedSize
();
538
}
539
540
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionLooseRoutingHeader
);
541
542
TypeId
543
Ipv6ExtensionLooseRoutingHeader::GetTypeId
()
544
{
545
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionLooseRoutingHeader"
)
546
.
AddConstructor
<
Ipv6ExtensionLooseRoutingHeader
>()
547
.SetParent<Ipv6ExtensionRoutingHeader>()
548
.SetGroupName(
"Internet"
);
549
return
tid;
550
}
551
552
TypeId
553
Ipv6ExtensionLooseRoutingHeader::GetInstanceTypeId
()
const
554
{
555
return
GetTypeId
();
556
}
557
558
Ipv6ExtensionLooseRoutingHeader::Ipv6ExtensionLooseRoutingHeader
()
559
:
m_routersAddress
(0)
560
{
561
}
562
563
Ipv6ExtensionLooseRoutingHeader::~Ipv6ExtensionLooseRoutingHeader
()
564
{
565
}
566
567
void
568
Ipv6ExtensionLooseRoutingHeader::SetNumberAddress
(uint8_t n)
569
{
570
m_routersAddress
.clear();
571
m_routersAddress
.assign(n,
Ipv6Address
(
""
));
572
}
573
574
void
575
Ipv6ExtensionLooseRoutingHeader::SetRoutersAddress
(std::vector<Ipv6Address> routersAddress)
576
{
577
m_routersAddress
= routersAddress;
578
}
579
580
std::vector<Ipv6Address>
581
Ipv6ExtensionLooseRoutingHeader::GetRoutersAddress
()
const
582
{
583
return
m_routersAddress
;
584
}
585
586
void
587
Ipv6ExtensionLooseRoutingHeader::SetRouterAddress
(uint8_t index,
Ipv6Address
addr)
588
{
589
m_routersAddress
.at(index) = addr;
590
}
591
592
Ipv6Address
593
Ipv6ExtensionLooseRoutingHeader::GetRouterAddress
(uint8_t index)
const
594
{
595
return
m_routersAddress
.at(index);
596
}
597
598
void
599
Ipv6ExtensionLooseRoutingHeader::Print
(std::ostream& os)
const
600
{
601
os <<
"( nextHeader = "
<< (
uint32_t
)
GetNextHeader
() <<
" length = "
<< (
uint32_t
)
GetLength
()
602
<<
" typeRouting = "
<< (
uint32_t
)
GetTypeRouting
()
603
<<
" segmentsLeft = "
<< (
uint32_t
)
GetSegmentsLeft
() <<
" "
;
604
605
for
(
auto
it =
m_routersAddress
.begin(); it !=
m_routersAddress
.end(); it++)
606
{
607
os << *it <<
" "
;
608
}
609
610
os <<
" )"
;
611
}
612
613
uint32_t
614
Ipv6ExtensionLooseRoutingHeader::GetSerializedSize
()
const
615
{
616
return
8 +
m_routersAddress
.size() * 16;
617
}
618
619
void
620
Ipv6ExtensionLooseRoutingHeader::Serialize
(
Buffer::Iterator
start)
const
621
{
622
Buffer::Iterator
i = start;
623
uint8_t buff[16];
624
625
uint8_t addressNum =
m_routersAddress
.size();
626
627
i.
WriteU8
(
GetNextHeader
());
628
i.
WriteU8
(addressNum * 2);
629
i.
WriteU8
(
GetTypeRouting
());
630
i.
WriteU8
(
GetSegmentsLeft
());
631
i.
WriteU32
(0);
632
633
for
(
auto
it =
m_routersAddress
.begin(); it !=
m_routersAddress
.end(); it++)
634
{
635
it->Serialize(buff);
636
i.
Write
(buff, 16);
637
}
638
}
639
640
uint32_t
641
Ipv6ExtensionLooseRoutingHeader::Deserialize
(
Buffer::Iterator
start)
642
{
643
Buffer::Iterator
i = start;
644
uint8_t buff[16];
645
646
SetNextHeader
(i.
ReadU8
());
647
m_length
= i.
ReadU8
();
648
SetTypeRouting
(i.
ReadU8
());
649
SetSegmentsLeft
(i.
ReadU8
());
650
i.
ReadU32
();
651
652
uint8_t addressNum =
m_length
/ 2;
653
SetNumberAddress
(addressNum);
654
for
(uint8_t index = 0; index < addressNum; index++)
655
{
656
i.
Read
(buff, 16);
657
SetRouterAddress
(index,
Ipv6Address
(buff));
658
}
659
660
return
GetSerializedSize
();
661
}
662
663
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionESPHeader
);
664
665
TypeId
666
Ipv6ExtensionESPHeader::GetTypeId
()
667
{
668
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionESPHeader"
)
669
.
AddConstructor
<
Ipv6ExtensionESPHeader
>()
670
.SetParent<Ipv6ExtensionHeader>()
671
.SetGroupName(
"Internet"
);
672
return
tid;
673
}
674
675
TypeId
676
Ipv6ExtensionESPHeader::GetInstanceTypeId
()
const
677
{
678
return
GetTypeId
();
679
}
680
681
Ipv6ExtensionESPHeader::Ipv6ExtensionESPHeader
()
682
{
683
}
684
685
Ipv6ExtensionESPHeader::~Ipv6ExtensionESPHeader
()
686
{
687
}
688
689
void
690
Ipv6ExtensionESPHeader::Print
(std::ostream& os)
const
691
{
692
/** @todo */
693
}
694
695
uint32_t
696
Ipv6ExtensionESPHeader::GetSerializedSize
()
const
697
{
698
/** @todo */
699
return
0;
700
}
701
702
void
703
Ipv6ExtensionESPHeader::Serialize
(
Buffer::Iterator
start)
const
704
{
705
/** @todo */
706
}
707
708
uint32_t
709
Ipv6ExtensionESPHeader::Deserialize
(
Buffer::Iterator
start)
710
{
711
/** @todo */
712
return
0;
713
}
714
715
NS_OBJECT_ENSURE_REGISTERED
(
Ipv6ExtensionAHHeader
);
716
717
TypeId
718
Ipv6ExtensionAHHeader::GetTypeId
()
719
{
720
static
TypeId
tid =
TypeId
(
"ns3::Ipv6ExtensionAHHeader"
)
721
.
AddConstructor
<
Ipv6ExtensionAHHeader
>()
722
.SetParent<Ipv6ExtensionHeader>()
723
.SetGroupName(
"Internet"
);
724
return
tid;
725
}
726
727
TypeId
728
Ipv6ExtensionAHHeader::GetInstanceTypeId
()
const
729
{
730
return
GetTypeId
();
731
}
732
733
Ipv6ExtensionAHHeader::Ipv6ExtensionAHHeader
()
734
{
735
}
736
737
Ipv6ExtensionAHHeader::~Ipv6ExtensionAHHeader
()
738
{
739
}
740
741
void
742
Ipv6ExtensionAHHeader::Print
(std::ostream& os)
const
743
{
744
/** @todo */
745
}
746
747
uint32_t
748
Ipv6ExtensionAHHeader::GetSerializedSize
()
const
749
{
750
/** @todo */
751
return
0;
752
}
753
754
void
755
Ipv6ExtensionAHHeader::Serialize
(
Buffer::Iterator
start)
const
756
{
757
/** @todo */
758
}
759
760
uint32_t
761
Ipv6ExtensionAHHeader::Deserialize
(
Buffer::Iterator
start)
762
{
763
/** @todo */
764
return
0;
765
}
766
767
}
/* namespace ns3 */
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition
buffer.h:89
ns3::Buffer::Iterator::WriteU32
void WriteU32(uint32_t data)
Definition
buffer.cc:857
ns3::Buffer::Iterator::ReadU8
uint8_t ReadU8()
Definition
buffer.h:1016
ns3::Buffer::Iterator::WriteU8
void WriteU8(uint8_t data)
Definition
buffer.h:870
ns3::Buffer::Iterator::Write
void Write(const uint8_t *buffer, uint32_t size)
Definition
buffer.cc:937
ns3::Buffer::Iterator::Read
void Read(uint8_t *buffer, uint32_t size)
Definition
buffer.cc:1114
ns3::Buffer::Iterator::WriteHtonU16
void WriteHtonU16(uint16_t data)
Definition
buffer.h:904
ns3::Buffer::Iterator::ReadNtohU32
uint32_t ReadNtohU32()
Definition
buffer.h:967
ns3::Buffer::Iterator::ReadU32
uint32_t ReadU32()
Definition
buffer.cc:955
ns3::Buffer::Iterator::WriteHtonU32
void WriteHtonU32(uint32_t data)
Definition
buffer.h:922
ns3::Buffer::Iterator::ReadNtohU16
uint16_t ReadNtohU16()
Definition
buffer.h:943
ns3::Buffer::Iterator::Prev
void Prev()
go backward by one byte
Definition
buffer.h:849
ns3::Buffer
automatically resized byte buffer
Definition
buffer.h:83
ns3::Ipv6Address
Describes an IPv6 address.
Definition
ipv6-address.h:38
ns3::Ipv6ExtensionAHHeader
Header of IPv6 Extension AH.
Definition
ipv6-extension-header.h:672
ns3::Ipv6ExtensionAHHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:728
ns3::Ipv6ExtensionAHHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:761
ns3::Ipv6ExtensionAHHeader::~Ipv6ExtensionAHHeader
~Ipv6ExtensionAHHeader() override
Destructor.
Definition
ipv6-extension-header.cc:737
ns3::Ipv6ExtensionAHHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:718
ns3::Ipv6ExtensionAHHeader::Ipv6ExtensionAHHeader
Ipv6ExtensionAHHeader()
Constructor.
Definition
ipv6-extension-header.cc:733
ns3::Ipv6ExtensionAHHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:748
ns3::Ipv6ExtensionAHHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:742
ns3::Ipv6ExtensionAHHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:755
ns3::Ipv6ExtensionDestinationHeader
Header of IPv6 Extension Destination.
Definition
ipv6-extension-header.h:267
ns3::Ipv6ExtensionDestinationHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:316
ns3::Ipv6ExtensionDestinationHeader::~Ipv6ExtensionDestinationHeader
~Ipv6ExtensionDestinationHeader() override
Destructor.
Definition
ipv6-extension-header.cc:304
ns3::Ipv6ExtensionDestinationHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:309
ns3::Ipv6ExtensionDestinationHeader::Ipv6ExtensionDestinationHeader
Ipv6ExtensionDestinationHeader()
Constructor.
Definition
ipv6-extension-header.cc:299
ns3::Ipv6ExtensionDestinationHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:284
ns3::Ipv6ExtensionDestinationHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:332
ns3::Ipv6ExtensionDestinationHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:322
ns3::Ipv6ExtensionDestinationHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:294
ns3::Ipv6ExtensionESPHeader
Header of IPv6 Extension ESP.
Definition
ipv6-extension-header.h:616
ns3::Ipv6ExtensionESPHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:666
ns3::Ipv6ExtensionESPHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:676
ns3::Ipv6ExtensionESPHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:696
ns3::Ipv6ExtensionESPHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:709
ns3::Ipv6ExtensionESPHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:690
ns3::Ipv6ExtensionESPHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:703
ns3::Ipv6ExtensionESPHeader::~Ipv6ExtensionESPHeader
~Ipv6ExtensionESPHeader() override
Destructor.
Definition
ipv6-extension-header.cc:685
ns3::Ipv6ExtensionESPHeader::Ipv6ExtensionESPHeader
Ipv6ExtensionESPHeader()
Constructor.
Definition
ipv6-extension-header.cc:681
ns3::Ipv6ExtensionFragmentHeader
Header of IPv6 Extension Fragment.
Definition
ipv6-extension-header.h:323
ns3::Ipv6ExtensionFragmentHeader::Ipv6ExtensionFragmentHeader
Ipv6ExtensionFragmentHeader()
Constructor.
Definition
ipv6-extension-header.cc:361
ns3::Ipv6ExtensionFragmentHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:346
ns3::Ipv6ExtensionFragmentHeader::SetIdentification
void SetIdentification(uint32_t identification)
Set the "Identification" field.
Definition
ipv6-extension-header.cc:399
ns3::Ipv6ExtensionFragmentHeader::SetOffset
void SetOffset(uint16_t offset)
Set the "Offset" field.
Definition
ipv6-extension-header.cc:373
ns3::Ipv6ExtensionFragmentHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:419
ns3::Ipv6ExtensionFragmentHeader::m_identification
uint32_t m_identification
Identifier of the packet.
Definition
ipv6-extension-header.h:417
ns3::Ipv6ExtensionFragmentHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:356
ns3::Ipv6ExtensionFragmentHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:411
ns3::Ipv6ExtensionFragmentHeader::m_offset
uint16_t m_offset
Offset of the fragment and More Fragment bit.
Definition
ipv6-extension-header.h:412
ns3::Ipv6ExtensionFragmentHeader::GetOffset
uint16_t GetOffset() const
Get the field "Offset".
Definition
ipv6-extension-header.cc:381
ns3::Ipv6ExtensionFragmentHeader::GetMoreFragment
bool GetMoreFragment() const
Get the status of "More Fragment" bit.
Definition
ipv6-extension-header.cc:393
ns3::Ipv6ExtensionFragmentHeader::GetIdentification
uint32_t GetIdentification() const
Get the field "Identification".
Definition
ipv6-extension-header.cc:405
ns3::Ipv6ExtensionFragmentHeader::~Ipv6ExtensionFragmentHeader
~Ipv6ExtensionFragmentHeader() override
Destructor.
Definition
ipv6-extension-header.cc:368
ns3::Ipv6ExtensionFragmentHeader::SetMoreFragment
void SetMoreFragment(bool moreFragment)
Set the status of "More Fragment" bit.
Definition
ipv6-extension-header.cc:387
ns3::Ipv6ExtensionFragmentHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:437
ns3::Ipv6ExtensionFragmentHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:425
ns3::Ipv6ExtensionHeader
Header for IPv6 Extension.
Definition
ipv6-extension-header.h:30
ns3::Ipv6ExtensionHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:79
ns3::Ipv6ExtensionHeader::m_nextHeader
uint8_t m_nextHeader
The "next header" field.
Definition
ipv6-extension-header.h:113
ns3::Ipv6ExtensionHeader::GetLength
uint16_t GetLength() const
Get the length of the extension.
Definition
ipv6-extension-header.cc:73
ns3::Ipv6ExtensionHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:86
ns3::Ipv6ExtensionHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:23
ns3::Ipv6ExtensionHeader::SetLength
void SetLength(uint16_t length)
brief Set the length of the extension.
Definition
ipv6-extension-header.cc:62
ns3::Ipv6ExtensionHeader::m_data
Buffer m_data
The data of the extension.
Definition
ipv6-extension-header.h:118
ns3::Ipv6ExtensionHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:33
ns3::Ipv6ExtensionHeader::Ipv6ExtensionHeader
Ipv6ExtensionHeader()
Constructor.
Definition
ipv6-extension-header.cc:38
ns3::Ipv6ExtensionHeader::~Ipv6ExtensionHeader
~Ipv6ExtensionHeader() override
Destructor.
Definition
ipv6-extension-header.cc:45
ns3::Ipv6ExtensionHeader::SetNextHeader
void SetNextHeader(uint8_t nextHeader)
Set the "Next header" field.
Definition
ipv6-extension-header.cc:50
ns3::Ipv6ExtensionHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:102
ns3::Ipv6ExtensionHeader::GetNextHeader
uint8_t GetNextHeader() const
Get the next header.
Definition
ipv6-extension-header.cc:56
ns3::Ipv6ExtensionHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:92
ns3::Ipv6ExtensionHeader::m_length
uint8_t m_length
The "length" field.
Definition
ipv6-extension-header.h:107
ns3::Ipv6ExtensionHopByHopHeader
Header of IPv6 Extension "Hop by Hop".
Definition
ipv6-extension-header.h:211
ns3::Ipv6ExtensionHopByHopHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:270
ns3::Ipv6ExtensionHopByHopHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:222
ns3::Ipv6ExtensionHopByHopHeader::Ipv6ExtensionHopByHopHeader
Ipv6ExtensionHopByHopHeader()
Constructor.
Definition
ipv6-extension-header.cc:237
ns3::Ipv6ExtensionHopByHopHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:260
ns3::Ipv6ExtensionHopByHopHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:232
ns3::Ipv6ExtensionHopByHopHeader::~Ipv6ExtensionHopByHopHeader
~Ipv6ExtensionHopByHopHeader() override
Destructor.
Definition
ipv6-extension-header.cc:242
ns3::Ipv6ExtensionHopByHopHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:254
ns3::Ipv6ExtensionHopByHopHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:247
ns3::Ipv6ExtensionLooseRoutingHeader
Header of IPv6 Extension Routing : Type 0 (Loose Routing)
Definition
ipv6-extension-header.h:517
ns3::Ipv6ExtensionLooseRoutingHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:599
ns3::Ipv6ExtensionLooseRoutingHeader::Ipv6ExtensionLooseRoutingHeader
Ipv6ExtensionLooseRoutingHeader()
Constructor.
Definition
ipv6-extension-header.cc:558
ns3::Ipv6ExtensionLooseRoutingHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:543
ns3::Ipv6ExtensionLooseRoutingHeader::GetRoutersAddress
std::vector< Ipv6Address > GetRoutersAddress() const
Get the vector of routers' address.
Definition
ipv6-extension-header.cc:581
ns3::Ipv6ExtensionLooseRoutingHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:641
ns3::Ipv6ExtensionLooseRoutingHeader::SetRoutersAddress
void SetRoutersAddress(std::vector< Ipv6Address > routersAddress)
Set the vector of routers' address.
Definition
ipv6-extension-header.cc:575
ns3::Ipv6ExtensionLooseRoutingHeader::m_routersAddress
VectorIpv6Address_t m_routersAddress
The vector of Routers' IPv6 Address.
Definition
ipv6-extension-header.h:607
ns3::Ipv6ExtensionLooseRoutingHeader::GetRouterAddress
Ipv6Address GetRouterAddress(uint8_t index) const
Get a Router IPv6 Address.
Definition
ipv6-extension-header.cc:593
ns3::Ipv6ExtensionLooseRoutingHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:553
ns3::Ipv6ExtensionLooseRoutingHeader::~Ipv6ExtensionLooseRoutingHeader
~Ipv6ExtensionLooseRoutingHeader() override
Destructor.
Definition
ipv6-extension-header.cc:563
ns3::Ipv6ExtensionLooseRoutingHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:614
ns3::Ipv6ExtensionLooseRoutingHeader::SetRouterAddress
void SetRouterAddress(uint8_t index, Ipv6Address addr)
Set a Router IPv6 Address.
Definition
ipv6-extension-header.cc:587
ns3::Ipv6ExtensionLooseRoutingHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:620
ns3::Ipv6ExtensionLooseRoutingHeader::SetNumberAddress
void SetNumberAddress(uint8_t n)
Set the number of routers' address.
Definition
ipv6-extension-header.cc:568
ns3::Ipv6ExtensionRoutingHeader
Header of IPv6 Extension Routing.
Definition
ipv6-extension-header.h:426
ns3::Ipv6ExtensionRoutingHeader::SetTypeRouting
void SetTypeRouting(uint8_t typeRouting)
Set the "Type of Routing" field.
Definition
ipv6-extension-header.cc:479
ns3::Ipv6ExtensionRoutingHeader::m_typeRouting
uint8_t m_typeRouting
Type of routing.
Definition
ipv6-extension-header.h:503
ns3::Ipv6ExtensionRoutingHeader::GetTypeRouting
uint8_t GetTypeRouting() const
Get the field "Type of Routing".
Definition
ipv6-extension-header.cc:485
ns3::Ipv6ExtensionRoutingHeader::GetSegmentsLeft
uint8_t GetSegmentsLeft() const
Get the field "Segments left".
Definition
ipv6-extension-header.cc:497
ns3::Ipv6ExtensionRoutingHeader::GetTypeId
static TypeId GetTypeId()
Get the type identificator.
Definition
ipv6-extension-header.cc:453
ns3::Ipv6ExtensionRoutingHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
Deserialize the packet.
Definition
ipv6-extension-header.cc:528
ns3::Ipv6ExtensionRoutingHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-extension-header.cc:517
ns3::Ipv6ExtensionRoutingHeader::SetSegmentsLeft
void SetSegmentsLeft(uint8_t segmentsLeft)
Set the "Segments left" field.
Definition
ipv6-extension-header.cc:491
ns3::Ipv6ExtensionRoutingHeader::m_segmentsLeft
uint8_t m_segmentsLeft
Number of left segments.
Definition
ipv6-extension-header.h:508
ns3::Ipv6ExtensionRoutingHeader::Print
void Print(std::ostream &os) const override
Print some information about the packet.
Definition
ipv6-extension-header.cc:503
ns3::Ipv6ExtensionRoutingHeader::Ipv6ExtensionRoutingHeader
Ipv6ExtensionRoutingHeader()
Constructor.
Definition
ipv6-extension-header.cc:468
ns3::Ipv6ExtensionRoutingHeader::~Ipv6ExtensionRoutingHeader
~Ipv6ExtensionRoutingHeader() override
Destructor.
Definition
ipv6-extension-header.cc:474
ns3::Ipv6ExtensionRoutingHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the instance type ID.
Definition
ipv6-extension-header.cc:463
ns3::Ipv6ExtensionRoutingHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:511
ns3::Ipv6OptionHeader
Header for IPv6 Option.
Definition
ipv6-option-header.h:25
ns3::Ipv6OptionHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-option-header.cc:85
ns3::Ipv6OptionHeader::GetAlignment
virtual Alignment GetAlignment() const
Get the Alignment requirement of this option header.
Definition
ipv6-option-header.cc:114
ns3::Ipv6OptionHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
Get the serialized size of the packet.
Definition
ipv6-option-header.cc:79
ns3::Ipv6OptionPad1Header
Header of IPv6 Option Pad1.
Definition
ipv6-option-header.h:143
ns3::Ipv6OptionPad1Header::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-option-header.cc:159
ns3::Ipv6OptionPadnHeader
Header of IPv6 Option Padn.
Definition
ipv6-option-header.h:199
ns3::Ipv6OptionPadnHeader::Serialize
void Serialize(Buffer::Iterator start) const override
Serialize the packet.
Definition
ipv6-option-header.cc:218
ns3::OptionField::GetSerializedSize
uint32_t GetSerializedSize() const
Get the serialized size of the packet.
Definition
ipv6-extension-header.cc:140
ns3::OptionField::CalculatePad
uint32_t CalculatePad(Ipv6OptionHeader::Alignment alignment) const
Calculate padding.
Definition
ipv6-extension-header.cc:202
ns3::OptionField::Serialize
void Serialize(Buffer::Iterator start) const
Serialize all added options.
Definition
ipv6-extension-header.cc:146
ns3::OptionField::GetOptionsOffset
uint32_t GetOptionsOffset() const
Get the offset where the options begin, measured from the start of the extension header.
Definition
ipv6-extension-header.cc:208
ns3::OptionField::Deserialize
uint32_t Deserialize(Buffer::Iterator start, uint32_t length)
Deserialize the packet.
Definition
ipv6-extension-header.cc:165
ns3::OptionField::GetOptionBuffer
Buffer GetOptionBuffer()
Get the buffer.
Definition
ipv6-extension-header.cc:214
ns3::OptionField::m_optionData
Buffer m_optionData
Data payload.
Definition
ipv6-extension-header.h:197
ns3::OptionField::OptionField
OptionField(uint32_t optionsOffset)
Constructor.
Definition
ipv6-extension-header.cc:129
ns3::OptionField::~OptionField
~OptionField()
Destructor.
Definition
ipv6-extension-header.cc:135
ns3::OptionField::m_optionsOffset
uint32_t m_optionsOffset
Offset.
Definition
ipv6-extension-header.h:202
ns3::OptionField::AddOption
void AddOption(const Ipv6OptionHeader &option)
Serialize the option, prepending pad1 or padn option as necessary.
Definition
ipv6-extension-header.cc:177
ns3::TypeId
a unique identifier for an interface.
Definition
type-id.h:49
ns3::TypeId::AddConstructor
TypeId AddConstructor()
Record in this TypeId the fact that the default constructor is accessible.
Definition
type-id.h:694
uint32_t
NS_ASSERT_MSG
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Definition
assert.h:75
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition
log.h:191
NS_LOG_LOGIC
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Definition
log.h:271
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition
log-macros-enabled.h:229
NS_OBJECT_ENSURE_REGISTERED
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition
object-base.h:35
ipv6-extension-header.h
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
data
uint8_t data[writeSize]
Definition
socket-bound-tcp-static-routing.cc:41
ns3::Ipv6OptionHeader::Alignment
represents the alignment requirements of an option header
Definition
ipv6-option-header.h:35
ns3::Ipv6OptionHeader::Alignment::factor
uint8_t factor
Factor.
Definition
ipv6-option-header.h:36
ns3::Ipv6OptionHeader::Alignment::offset
uint8_t offset
Offset.
Definition
ipv6-option-header.h:37
src
internet
model
ipv6-extension-header.cc
Generated on Wed Jun 11 2025 13:15:30 for ns-3 by
1.13.2