Fix formatting of Doxygen verbatim blocks and add missing tags

Co-authored-by: Peter D. Barnes, Jr <barnes26@llnl.gov>
This commit is contained in:
Eduardo Almeida
2024-05-07 23:00:56 +01:00
committed by Peter Barnes
parent 3044f437ad
commit 0e48e6ce28
9 changed files with 462 additions and 516 deletions

View File

@@ -33,132 +33,131 @@ using namespace ns3;
* \brief AODV chain regression test
*
* This script creates 1-dimensional grid topology and then ping last node from the first one:
*
* [10.1.1.1] <-- step --> [10.1.1.2] <-- step --> [10.1.1.3] <-- step --> [10.1.1.4] <-- step -->
[10.1.1.5]
*
* Each node can hear only his right and his left neighbor, if they exist. When one third of total
time expired,
* central node moves away. After this, node 3 doesn't hear any packets from other nodes and nobody
hears his packets.
*/
// clang-format off
/**
* [10.1.1.1] <-- step --> [10.1.1.2] <-- step --> [10.1.1.3] <-- step --> [10.1.1.4] <-- step --> [10.1.1.5]
*/
// clang-format on
/**
* Each node can hear only his right and his left neighbor, if they exist.
* When one third of total time expired, central node moves away.
* After this, node 3 doesn't hear any packets from other nodes and nobody hears his packets.
* We want to demonstrate in this script
* 1) route establishing
* 2) broken link detection both from layer 2 information and hello messages.
*
*/
// clang-format off
/**
* \verbatim
Expected packets time diagram.
Expected packets time diagram.
1 2 3 4 5
<------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1,
hop=0, ID=1, org_seqno=1) src = 10.1.1.1
|<------|------>| | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1,
hop=1, ID=1, org_seqno=1) src = 10.1.1.2 | |<------|------>| | RREQ
(orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=2, ID=1, org_seqno=1) src = 10.1.1.3 | |
|<------|------>| RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=3, ID=1, org_seqno=1) src
= 10.1.1.4 | | | |<------|------> ARP request. Who has 10.1.1.4? Tell 10.1.1.5 |
| | |======>| ARP reply | | | |<======| RREP
(orig 10.1.1.1, dst 10.1.1.5, hop=0, dst_seqno=0) src=10.1.1.5 | | |<------|------>| ARP
request. Who has 10.1.1.3? Tell 10.1.1.4 | | |======>| | ARP reply | |
|<======| | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=1, dst_seqno=0) src=10.1.1.4 |
|<------|------>| | ARP request. Who has 10.1.1.2? Tell 10.1.1.3 | |======>| | |
ARP reply | |<======| | | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=2,
dst_seqno=0) src=10.1.1.3
<-------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=0, ID=1, org_seqno=1) src = 10.1.1.1
|<------|------>| | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=1, ID=1, org_seqno=1) src = 10.1.1.2
| |<------|------>| | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=2, ID=1, org_seqno=1) src = 10.1.1.3
| | |<------|------>| RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=3, ID=1, org_seqno=1) src = 10.1.1.4
| | | |<------|------> ARP request. Who has 10.1.1.4? Tell 10.1.1.5
| | | |======>| ARP reply
| | | |<======| RREP (orig 10.1.1.1, dst 10.1.1.5, hop=0, dst_seqno=0) src=10.1.1.5
| | |<------|------>| ARP request. Who has 10.1.1.3? Tell 10.1.1.4
| | |======>| | ARP reply
| | |<======| | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=1, dst_seqno=0) src=10.1.1.4
| |<------|------>| | ARP request. Who has 10.1.1.2? Tell 10.1.1.3
| |======>| | | ARP reply
| |<======| | | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=2, dst_seqno=0) src=10.1.1.3
|<------|------>| | | ARP request. Who has 10.1.1.1? Tell 10.1.1.2
|======>| | | | ARP reply
|<======| | | | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=3,
dst_seqno=0) src=10.1.1.2
|<======| | | | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=3, dst_seqno=0) src=10.1.1.2
<-------|------>| | | | ARP request. Who has 10.1.1.2? Tell 10.1.1.1
|<======| | | |
|======>| | | | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5;
src=10.1.1.1 next_hop=10.1.1.2
|======>| | | | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5; src=10.1.1.1 next_hop=10.1.1.2
|<------|------>| | | ARP request. Who has 10.1.1.3? Tell 10.1.1.2
| |<======| | | ARP reply
| |======>| | | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5;
src=10.1.1.2 next_hop=10.1.1.3 | |<------|------>| | ARP request. Who
has 10.1.1.4? Tell 10.1.1.3 | | |<======| | ARP reply | | |======>|
| ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5; src=10.1.1.3 next_hop=10.1.1.4 | |
|<------|------>| ARP request. Who has 10.1.1.5? Tell 10.1.1.4 | | | |<======|
ARP reply | | | |======>| ICMP (ping) request 0; src=10.1.1.4
next_hop=10.1.1.5 | | | |<======| ICMP (ping) reply 0; src=10.1.1.5
next_hop=10.1.1.4 | | |<======| | ICMP (ping) reply 0; src=10.1.1.4
next_hop=10.1.1.3 | |<======| | | ICMP (ping) reply 0; src=10.1.1.3
next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 0; src=10.1.1.2
next_hop=10.1.1.1 | | | |<------|------> Hello
| |======>| | | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5; src=10.1.1.2 next_hop=10.1.1.3
| |<------|------>| | ARP request. Who has 10.1.1.4? Tell 10.1.1.3
| | |<======| | ARP reply
| | |======>| | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5; src=10.1.1.3 next_hop=10.1.1.4
| | |<------|------>| ARP request. Who has 10.1.1.5? Tell 10.1.1.4
| | | |<======| ARP reply
| | | |======>| ICMP (ping) request 0; src=10.1.1.4 next_hop=10.1.1.5
| | | |<======| ICMP (ping) reply 0; src=10.1.1.5 next_hop=10.1.1.4
| | |<======| | ICMP (ping) reply 0; src=10.1.1.4 next_hop=10.1.1.3
| |<======| | | ICMP (ping) reply 0; src=10.1.1.3 next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 0; src=10.1.1.2 next_hop=10.1.1.1
| | | |<------|------> Hello
|<------|------>| | | Hello
<------|------>| | | | Hello
<-------|------>| | | | Hello
| |<------|------>| | Hello
|======>| | | | ICMP (ping) request 1; src=10.1.1.1
next_hop=10.1.1.2 | | |<------|------>| Hello | |======>| | |
ICMP (ping) request 1; src=10.1.1.2 next_hop=10.1.1.3 | | |======>| | ICMP
(ping) request 1; src=10.1.1.3 next_hop=10.1.1.4 | | | |======>| ICMP
(ping) request 1; src=10.1.1.4 next_hop=10.1.1.5 | | | |<======| ICMP
(ping) reply 1; src=10.1.1.5 next_hop=10.1.1.4 | | |<======| | ICMP (ping)
reply 1; src=10.1.1.4 next_hop=10.1.1.3 | |<======| | | ICMP (ping) reply
11; src=10.1.1.3 next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 1; src=10.1.1.2
next_hop=10.1.1.1 | | | |<------|------> Hello
|======>| | | | ICMP (ping) request 1; src=10.1.1.1 next_hop=10.1.1.2
| | |<------|------>| Hello
| |======>| | | ICMP (ping) request 1; src=10.1.1.2 next_hop=10.1.1.3
| | |======>| | ICMP (ping) request 1; src=10.1.1.3 next_hop=10.1.1.4
| | | |======>| ICMP (ping) request 1; src=10.1.1.4 next_hop=10.1.1.5
| | | |<======| ICMP (ping) reply 1; src=10.1.1.5 next_hop=10.1.1.4
| | |<======| | ICMP (ping) reply 1; src=10.1.1.4 next_hop=10.1.1.3
| |<======| | | ICMP (ping) reply 11; src=10.1.1.3 next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 1; src=10.1.1.2 next_hop=10.1.1.1
| | | |<------|------> Hello
|<------|------>| | | Hello
<------|------>| | | | Hello
<-------|------>| | | | Hello
| | |<------|------>| Hello
| |<------|------>| | Hello
|======>| | | | ICMP (ping) request 2; src=10.1.1.1
next_hop=10.1.1.2 | |======>| | | ICMP (ping) request 2; src=10.1.1.2
next_hop=10.1.1.3 | | |======>| | ICMP (ping) request 2; src=10.1.1.3
next_hop=10.1.1.4 | | | |======>| ICMP (ping) request 2; src=10.1.1.4
next_hop=10.1.1.5 | | | |<======| ICMP (ping) reply 2; src=10.1.1.5
next_hop=10.1.1.4 | | |<======| | ICMP (ping) reply 2; src=10.1.1.4
next_hop=10.1.1.3 | |<======| | | ICMP (ping) reply 2; src=10.1.1.3
next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 2; src=10.1.1.2
next_hop=10.1.1.1 | | | |<------|------> Hello
<------|------>| | | | Hello
|======>| | | | ICMP (ping) request 2; src=10.1.1.1 next_hop=10.1.1.2
| |======>| | | ICMP (ping) request 2; src=10.1.1.2 next_hop=10.1.1.3
| | |======>| | ICMP (ping) request 2; src=10.1.1.3 next_hop=10.1.1.4
| | | |======>| ICMP (ping) request 2; src=10.1.1.4 next_hop=10.1.1.5
| | | |<======| ICMP (ping) reply 2; src=10.1.1.5 next_hop=10.1.1.4
| | |<======| | ICMP (ping) reply 2; src=10.1.1.4 next_hop=10.1.1.3
| |<======| | | ICMP (ping) reply 2; src=10.1.1.3 next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 2; src=10.1.1.2 next_hop=10.1.1.1
| | | |<------|------> Hello
<-------|------>| | | | Hello
| |<------|------>| | Hello
|<------|------>| | | Hello
| | |<------|------>| Hello
|======>| | | | ICMP (ping) request 3; src=10.1.1.1
next_hop=10.1.1.2 | |======>| | | ICMP (ping) request 3; src=10.1.1.2
next_hop=10.1.1.3 | | |======>| | ICMP (ping) request 3; src=10.1.1.3
next_hop=10.1.1.4 | | | |======>| ICMP (ping) request 3; src=10.1.1.4
next_hop=10.1.1.5 | | | |<======| ICMP (ping) reply 3; src=10.1.1.5
next_hop=10.1.1.4 | | |<======| | ICMP (ping) reply 3; src=10.1.1.4
next_hop=10.1.1.3 | |<======| | | ICMP (ping) reply 3; src=10.1.1.3
next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 3; src=10.1.1.2
next_hop=10.1.1.1 | | | |<------|------> Hello
<------|------>| | | | Hello
|======>| | | | ICMP (ping) request 3; src=10.1.1.1 next_hop=10.1.1.2
| |======>| | | ICMP (ping) request 3; src=10.1.1.2 next_hop=10.1.1.3
| | |======>| | ICMP (ping) request 3; src=10.1.1.3 next_hop=10.1.1.4
| | | |======>| ICMP (ping) request 3; src=10.1.1.4 next_hop=10.1.1.5
| | | |<======| ICMP (ping) reply 3; src=10.1.1.5 next_hop=10.1.1.4
| | |<======| | ICMP (ping) reply 3; src=10.1.1.4 next_hop=10.1.1.3
| |<======| | | ICMP (ping) reply 3; src=10.1.1.3 next_hop=10.1.1.2
|<======| | | | ICMP (ping) reply 3; src=10.1.1.2 next_hop=10.1.1.1
| | | |<------|------> Hello
<-------|------>| | | | Hello
|<------|--> | | | Hello |
| | <--|--> | | Hello |Node 3 move away => nobody hear his
packets and node 3 doesn't hear anything ! | | | <--|------>| Hello |
|======>| | | | ICMP (ping) request 4; src=10.1.1.1
next_hop=10.1.1.2 | |==> | | | ICMP (ping) request 4; src=10.1.1.2
next_hop=10.1.1.3. 7 retries.
|<======| | | | RERR (unreachable dst 10.1.1.3 & 10.1.1.5)
src=10.1.1.2 | | | |<------|------> Hello
<------|------>| | | | Hello
| | <--|--> | | Hello |Node 3 move away => nobody hear his packets and node 3 doesn't hear anything !
| | | <--|------>| Hello |
|======>| | | | ICMP (ping) request 4; src=10.1.1.1 next_hop=10.1.1.2
| |==> | | | ICMP (ping) request 4; src=10.1.1.2 next_hop=10.1.1.3. 7 retries.
|<======| | | | RERR (unreachable dst 10.1.1.3 & 10.1.1.5) src=10.1.1.2
| | | |<------|------> Hello
<-------|------>| | | | Hello
|<------|--> | | | Hello
| | <--|--> | | Hello
| | | <--|------>| Hello
<------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=0,
ID=2, org_seqno=2) src = 10.1.1.1
|<------|--> | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=1,
ID=2, org_seqno=2) src = 10.1.1.2 | | | |<------|------> Hello | | |
<--|------>| Hello | | <--|--> | | Hello
|<------|--> | | | Hello
<------|------>| | | | Hello
| | | |======>| RERR (unreachable dst 10.1.1.1 & 10.1.1.3)
src=10.1.1.4 | | | |<------|------> Hello | | | <--|------>| Hello
<-------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=0, ID=2, org_seqno=2) src = 10.1.1.1
|<------|--> | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=1, ID=2, org_seqno=2) src = 10.1.1.2
| | | |<------|------> Hello
| | | <--|------>| Hello
| | <--|--> | | Hello
|<------|--> | | | Hello
<------|------>| | | | Hello
<-------|------>| | | | Hello
| | | |======>| RERR (unreachable dst 10.1.1.1 & 10.1.1.3) src=10.1.1.4
| | | |<------|------> Hello
<------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=0,
ID=4, org_seqno=3) src = 10.1.1.1
|<------|--> | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=1,
ID=4, org_seqno=3) src = 10.1.1.2
..................................................................
* \endverbatim
| | | <--|------>| Hello
| | <--|--> | | Hello
|<------|--> | | | Hello
<-------|------>| | | | Hello
| | | |<------|------> Hello
<-------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=0, ID=4, org_seqno=3) src = 10.1.1.1
|<------|--> | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=1, ID=4, org_seqno=3) src = 10.1.1.2
.................................................
\endverbatim
*/
//clang-format on
class ChainRegressionTest : public TestCase
{
public:

View File

@@ -46,15 +46,15 @@ class Time;
namespace dsr
{
/**
* \class DsrOptionHeader
* \brief Header for Dsr Options.
* \ingroup dsr
* \brief header for Dsr Options.
*/
class DsrOptionHeader : public Header
{
public:
/**
* \struct Alignment
* \brief represents the alignment requirements of an option header
* \brief Represents the alignment requirements of an option header
*/
struct Alignment
{
@@ -146,7 +146,7 @@ class DsrOptionHeader : public Header
};
/**
* \class DsrOptionPad1Header
* \ingroup dsr
* \brief Header of Dsr Option Pad1
*/
class DsrOptionPad1Header : public DsrOptionHeader
@@ -194,7 +194,7 @@ class DsrOptionPad1Header : public DsrOptionHeader
};
/**
* \class DsrOptionPadnHeader
* \ingroup dsr
* \brief Header of Dsr Option Padn
*/
class DsrOptionPadnHeader : public DsrOptionHeader
@@ -243,18 +243,16 @@ class DsrOptionPadnHeader : public DsrOptionHeader
};
/**
* \class DsrOptionRouteRequestHeader
* \ingroup dsr
* \brief Header of Dsr Option Route Request
*/
*
* \verbatim
Route Request (RREQ) Message Format
/**
* \ingroup dsr
* \brief Route Request (RREQ) Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Opt Data Len | Identification |
| Option Type | Opt Data Len | Identification |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Target Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -266,9 +264,8 @@ class DsrOptionPadnHeader : public DsrOptionHeader
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address[n] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
\endverbatim
*/
class DsrOptionRreqHeader : public DsrOptionHeader
{
public:
@@ -398,14 +395,12 @@ class DsrOptionRreqHeader : public DsrOptionHeader
};
/**
* \class DsrOptionRrepHeader
* \ingroup dsr
* \brief Header of Dsr Option Route Reply
*/
*
* \verbatim
Standard Route Reply (RREP) Message Format
/**
* \ingroup dsr
* \brief Route Reply (RREP) Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -419,14 +414,13 @@ class DsrOptionRreqHeader : public DsrOptionHeader
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address[n] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
\endverbatim
*
* The Route Reply header modified for ns-3 implementation:
*
* \verbatim
ns-3 Route Reply (RREP) Message Format
// The Route Reply header modified for ns-3 implementation
/**
* \ingroup dsr
* \brief Route Reply (RREP) Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -440,9 +434,8 @@ class DsrOptionRreqHeader : public DsrOptionHeader
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address[n] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
\endverbatim
*/
class DsrOptionRrepHeader : public DsrOptionHeader
{
public:
@@ -530,7 +523,7 @@ class DsrOptionRrepHeader : public DsrOptionHeader
*/
Ipv4Address m_address;
/**
* \brief type def A vector of IPv4 Address.
* \brief typedef for a vector of IPv4 Addresses.
*/
typedef std::vector<Ipv4Address> VectorIpv4Address_t;
/**
@@ -540,14 +533,12 @@ class DsrOptionRrepHeader : public DsrOptionHeader
};
/**
* \class DsrOptionSRHeader
* \ingroup dsr
* \brief Header of Dsr Option Source Route
*/
*
* \verbatim
Source Route (SR) Message Format
/**
* \ingroup dsr
* \brief Source Route (SR) Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -561,9 +552,8 @@ class DsrOptionRrepHeader : public DsrOptionHeader
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address[n] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
\endverbatim
*/
class DsrOptionSRHeader : public DsrOptionHeader
{
public:
@@ -695,14 +685,24 @@ class DsrOptionSRHeader : public DsrOptionHeader
};
/**
* \class DsrOptionRerrHeader
* \brief Header of Dsr Option Route Error
* \ingroup dsr
* \enum ErrorType
* \brief Error type used in several DSR Option Headers
*/
enum ErrorType
{
NODE_UNREACHABLE = 1, // !< NODE_UNREACHABLE
FLOW_STATE_NOT_SUPPORTED = 2, // !< FLOW_STATE_NOT_SUPPORTED
OPTION_NOT_SUPPORTED = 3, // !< OPTION_NOT_SUPPORTED
};
/**
* \ingroup dsr
* \brief Route Error (RERR) Message Format
\verbatim
* \ingroup dsr
* \brief Header of Dsr Option Route Error
*
* \verbatim
Route Error (RERR) Message Format
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -716,17 +716,11 @@ class DsrOptionSRHeader : public DsrOptionHeader
. Type-Specific Information .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
/// Error type
enum ErrorType
{
NODE_UNREACHABLE = 1, // !< NODE_UNREACHABLE
FLOW_STATE_NOT_SUPPORTED = 2, // !< FLOW_STATE_NOT_SUPPORTED
OPTION_NOT_SUPPORTED = 3, // !< OPTION_NOT_SUPPORTED
};
\endverbatim
*
* The type-specific information field varies by type of error,
* as detailed in the derived classes.
*/
class DsrOptionRerrHeader : public DsrOptionHeader
{
public:
@@ -843,27 +837,12 @@ class DsrOptionRerrHeader : public DsrOptionHeader
};
/**
* \ingroup dsr
* \brief Route Error (RERR) Unreachable node address option Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Opt Data Len | Error Type |Reservd| Salvage|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. Type-Specific Information .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
/**
* \brief The type-specific info field
* \ingroup dsr
* \brief Route Error (RERR) Unreachable node address option Message Format
*
* \verbatim
Route Error Unreachable type-specific info field
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -871,7 +850,6 @@ class DsrOptionRerrHeader : public DsrOptionHeader
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
class DsrOptionRerrUnreachHeader : public DsrOptionRerrHeader
{
public:
@@ -998,28 +976,14 @@ class DsrOptionRerrUnreachHeader : public DsrOptionRerrHeader
};
/**
* \ingroup dsr
* \brief Route Error (RERR) Unsupported option Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Opt Data Len | Error Type |Reservd| Salvage|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. Type-Specific Information .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
/**
* \brief The type-specific info field
* Unsupported option
* \ingroup dsr
* \brief Route Error (RERR) Unsupported option Message Format
*
* The type-specific info field of DsrOptionRerrHeader contains
*
* \verbatim
Route Error Unsupported type-specific info field
| 0 |
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
@@ -1027,7 +991,6 @@ class DsrOptionRerrUnreachHeader : public DsrOptionRerrHeader
+-+-+-+-+-+-+-+-+
\endverbatim
*/
class DsrOptionRerrUnsupportedHeader : public DsrOptionRerrHeader
{
public:
@@ -1140,22 +1103,19 @@ class DsrOptionRerrUnsupportedHeader : public DsrOptionRerrHeader
};
/**
* \class DsrOptionAckReqHeader
* \ingroup dsr
* \brief Header of Dsr Option ack request
*/
*
* \verbatim
Acknowledgement Request (ACK_RREQ) Message Format
/**
* \ingroup dsr
* \brief Acknowledgement Request (ACK_RREQ) Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Opt Data Len | Identification |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
\endverbatim
*/
class DsrOptionAckReqHeader : public DsrOptionHeader
{
public:
@@ -1222,14 +1182,12 @@ class DsrOptionAckReqHeader : public DsrOptionHeader
};
/**
* \class DsrOptionAckHeader
* \ingroup dsr
* \brief Header of Dsr Option ack
*/
*
* \verbatim
Acknowledgement (ACK) Message Format
/**
* \ingroup dsr
* \brief Acknowledgement (ACK) Message Format
\verbatim
| 0 | 1 | 2 | 3 |
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@@ -1239,9 +1197,8 @@ class DsrOptionAckReqHeader : public DsrOptionHeader
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ACK Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\endverbatim
*/
\endverbatim
*/
class DsrOptionAckHeader : public DsrOptionHeader
{
public:
@@ -1322,15 +1279,15 @@ class DsrOptionAckHeader : public DsrOptionHeader
private:
/**
* \brief identification field
* \brief Identification field
*/
uint16_t m_identification;
/**
* \brief ack source address
* \brief Ack source address
*/
Ipv4Address m_realSrcAddress;
/**
* \brief ack destination address
* \brief Ack destination address
*/
Ipv4Address m_realDstAddress;
};

View File

@@ -41,13 +41,13 @@ namespace ns3
* \ingroup dhcp
*
* \class DhcpHeader
* \brief BOOTP header with DHCP messages supports the following options:
* \brief BOOTP header with DHCP messages. This supports the following options:
* Subnet Mask (1), Address Request (50), Refresh Lease Time (51),
* DHCP Message Type (53), DHCP Server ID (54), Renew Time (58),
* Rebind Time (59) and End (255) of BOOTP
\verbatim
0 1 2 3
*
* \verbatim
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| op (1) | htype (1) | hlen (1) | hops (1) |
@@ -78,8 +78,7 @@ namespace ns3
| |
| options (variable) |
+---------------------------------------------------------------+
\endverbatim
\endverbatim
*/
class DhcpHeader : public Header
{

View File

@@ -18,6 +18,15 @@
*/
/**
* \file
* Generating neighbor caches in various scopes
*/
/**
* \file
*
* This example shows how to generate neighbor caches in various scopes.
*
* This example shows how to generate neighbor caches on the scope of
* a channel, a NetDeviceContainer, an InterfaceContainer and globally.
* The example also shows a scenario that auto-generated neighbor caches
@@ -35,248 +44,233 @@
*
* IPv4 Network Topology
* \verbatim
LAN 10.1.1.0/24
n0 --------------- n1 n2 n3
| | |
===============
LAN 10.1.2.0/24
\endverbatim
IPv4 Network Topology
LAN 10.1.1.0/24
n0 --------------- n1 n2 n3
| | |
===============
LAN 10.1.2.0/24
\endverbatim
*
*IPv6 Network Topology
* \verbatim
LAN 2001:1::/64
n0 --------------- n1 n2 n3
| | |
===============
LAN 2001:2::/64
\endverbatim
IPv6 Network Topology
LAN 2001:1::/64
n0 --------------- n1 n2 n3
| | |
===============
LAN 2001:2::/64
\endverbatim
*
* Expected Outputs:
* IPv4 (default):
* Generate ARP caches for all devices (default) :
* \verbatim
ARP Cache of node 0 at time 0
10.1.1.2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
ARP Cache of node 1 at time 0
10.1.1.1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
10.1.2.2 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
10.1.2.3 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 2 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.3 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 3 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.2 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
ARP Cache of node 0 at time 0
10.1.1.2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
ARP Cache of node 1 at time 0
10.1.1.1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
10.1.2.2 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
10.1.2.3 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 2 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.3 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 3 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.2 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
\endverbatim
*
* Generate ARP caches for the left channel (--useChannel):
* \verbatim
ARP Cache of node 0 at time 0
10.1.1.2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
ARP Cache of node 1 at time 0
10.1.1.1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
ARP Cache of node 2 at time 0
ARP Cache of node 3 at time 0
ARP Cache of node 0 at time 0
10.1.1.2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
ARP Cache of node 1 at time 0
10.1.1.1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
ARP Cache of node 2 at time 0
ARP Cache of node 3 at time 0
\endverbatim
*
* Generate ARP caches for devices on the right side (--useNetDeviceContainer):
* \verbatim
ARP Cache of node 0 at time 0
ARP Cache of node 1 at time 0
10.1.2.2 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
10.1.2.3 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 2 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.3 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 3 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.2 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
ARP Cache of node 0 at time 0
ARP Cache of node 1 at time 0
10.1.2.2 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
10.1.2.3 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 2 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.3 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
ARP Cache of node 3 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.2 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
\endverbatim
*
* Generate ARP caches for specific interfaces (--useInterfaceContainer):
* \verbatim
ARP Cache of node 0 at time 0
10.1.1.2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
ARP Cache of node 1 at time 0
ARP Cache of node 2 at time 0
ARP Cache of node 3 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.2 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
ARP Cache of node 0 at time 0
10.1.1.2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
ARP Cache of node 1 at time 0
ARP Cache of node 2 at time 0
ARP Cache of node 3 at time 0
10.1.2.1 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
10.1.2.2 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
\endverbatim
*
* Do not generate neighbor cache (--noGenerate):
* \verbatim
ARP Cache of node 0 at time 0
ARP Cache of node 1 at time 0
ARP Cache of node 2 at time 0
ARP Cache of node 3 at time 0
ARP Cache of node 0 at time 0
ARP Cache of node 1 at time 0
ARP Cache of node 2 at time 0
ARP Cache of node 3 at time 0
\endverbatim
*
*/
// clang-format off
/**
* sending packet with pre-generated neighbor caches(--sendTraffic)
* \verbatim
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=0
time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND
(seq=1 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512)
AND (seq=2 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 ->
(size=512) AND (seq=3 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to
03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=4 time=+1s) Rx pkt from
03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=5 time=+1s) Rx pkt
from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=6 time=+1s) Rx
pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=7
time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND
(seq=8 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512)
AND (seq=9 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 ->
(size=512) AND (seq=10 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to
03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=11 time=+1s) Rx pkt from
03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=12 time=+1.00001s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=0 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=1 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=2 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=3 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=4 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=5 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=6 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=7 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=8 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=9 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=10 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=11 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=12 time=+1.00001s)
\endverbatim
*
* sending packet without pre-generated neighbor caches(--sendTraffic --noGenerate)
* \verbatim
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=0
time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND
(seq=1 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512)
AND (seq=2 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 ->
(size=512) AND (seq=8 time=+1s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to
03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=9 time=+1s) Rx pkt from
03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=10 time=+1s) Rx pkt
from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=11 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=12
time=+1.00001s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512)
AND (seq=13 time=+1.00001s) Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 ->
(size=512) AND (seq=14 time=+1.00001s) \endverbatim
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=0 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=1 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=2 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=8 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=9 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=10 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=11 time=+1s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=12 time=+1.00001s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=13 time=+1.00001s)
Rx pkt from 03-07-0a:01:01:01:01:c0:00 to 03-07-0a:01:01:02:09:00:00 -> (size=512) AND (seq=14 time=+1.00001s)
\endverbatim
*
*/
// clang-format on
/**
* IPv6 (--useIPv6):
* Generate NDISC caches for all devices (default) :
* \verbatim
NDISC Cache of node 0 at time +0s
2001:1::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
fe80::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
NDISC Cache of node 1 at time +0s
2001:1::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
fe80::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 2 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 3 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
NDISC Cache of node 0 at time +0s
2001:1::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
fe80::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
NDISC Cache of node 1 at time +0s
2001:1::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
fe80::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 2 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 3 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
\endverbatim
*
* Generate NDISC caches for the left channel (--useChannel):
* \verbatim
NDISC Cache of node 0 at time +0s
2001:1::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
fe80::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
NDISC Cache of node 1 at time +0s
2001:1::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
fe80::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
NDISC Cache of node 2 at time +0s
NDISC Cache of node 3 at time +0s
NDISC Cache of node 0 at time +0s
2001:1::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
fe80::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
NDISC Cache of node 1 at time +0s
2001:1::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
fe80::200:ff:fe00:1 dev 0 lladdr 02-06-00:00:00:00:00:01 STATIC_AUTOGENERATED
NDISC Cache of node 2 at time +0s
NDISC Cache of node 3 at time +0s
\endverbatim
*
* Generate NDISC caches for devices on the right side (--useNetDeviceContainer):
* \verbatim
NDISC Cache of node 0 at time +0s
NDISC Cache of node 1 at time +0s
2001:2::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 2 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 3 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
NDISC Cache of node 0 at time +0s
NDISC Cache of node 1 at time +0s
2001:2::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 1 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 1 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 2 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:5 dev 0 lladdr 02-06-00:00:00:00:00:05 STATIC_AUTOGENERATED
NDISC Cache of node 3 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
\endverbatim
*
* Generate NDISC caches for specific interfaces (--useInterfaceContainer):
* \verbatim
NDISC Cache of node 0 at time +0s
2001:1::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
fe80::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
NDISC Cache of node 1 at time +0s
NDISC Cache of node 2 at time +0s
NDISC Cache of node 3 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
NDISC Cache of node 0 at time +0s
2001:1::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
fe80::200:ff:fe00:2 dev 0 lladdr 02-06-00:00:00:00:00:02 STATIC_AUTOGENERATED
NDISC Cache of node 1 at time +0s
NDISC Cache of node 2 at time +0s
NDISC Cache of node 3 at time +0s
2001:2::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
2001:2::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
fe80::200:ff:fe00:3 dev 0 lladdr 02-06-00:00:00:00:00:03 STATIC_AUTOGENERATED
fe80::200:ff:fe00:4 dev 0 lladdr 02-06-00:00:00:00:00:04 STATIC_AUTOGENERATED
\endverbatim
*
* Do not generate neighbor cache (--noGenerate):
* \verbatim
NDISC Cache of node 0 at time +0s
NDISC Cache of node 1 at time +0s
NDISC Cache of node 2 at time +0s
NDISC Cache of node 3 at time +0s
NDISC Cache of node 0 at time +0s
NDISC Cache of node 1 at time +0s
NDISC Cache of node 2 at time +0s
NDISC Cache of node 3 at time +0s
\endverbatim
*
*/
// clang-format off
/**
* sending packet with pre-generated neighbor caches(--sendTraffic)
* \verbatim
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=0 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=1 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=2 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=3 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=4 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=5 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=6 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=7 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=8 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=9 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=10 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=11 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=0 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=1 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=2 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=3 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=4 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=5 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=6 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=7 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=8 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=9 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=10 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=11 time=+1s)
\endverbatim
*
* sending packet without pre-generated neighbor caches(--sendTraffic --noGenerate)
* \verbatim
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=8 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=9 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=10 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=11 time=+1s) Rx
pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=12
time=+1.00001s) Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=13
time=+1.00001s) Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=14
time=+1.00001s) Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=15
time=+1.00001s) Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to
04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=16
time=+1.00001s) \endverbatim
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=8 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=9 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=10 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=11 time=+1s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=12 time=+1.00001s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=13 time=+1.00001s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=14 time=+1.00001s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=15 time=+1.00001s)
Rx pkt from 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:01:01:c0 to 04-12-20:01:00:01:00:00:00:00:02:00:00:ff:fe:00:00:02:09:00 -> (size=512) AND (seq=16 time=+1.00001s)
\endverbatim
*/
// clang-format on
#include "ns3/applications-module.h"
#include "ns3/core-module.h"

View File

@@ -130,7 +130,7 @@ TcpNewReno::~TcpNewReno()
* > SMSS bytes upon receipt of an ACK covering new data, we RECOMMEND
* > that TCP implementations increase cwnd, per:
* >
* > cwnd += min (N, SMSS) (2)
* > cwnd += min (N, SMSS) (2)
* >
* > where N is the number of previously unacknowledged bytes acknowledged
* > in the incoming ACK.

View File

@@ -30,41 +30,45 @@ using namespace ns3;
*
* \brief This is a test for intermediate reply and saving routing
* information about neighbour. 4 stations and 3 UDP ping streams are initiated.
* \verbatim
* <-----------|-----------> Broadcast frame
* |----------->| Unicast frame
* (Node ID) 0 1 2 3
* (MAC addr) 10 11 12 13
* | |<-----------|----------->| ARP request (12 asks who has 10)
* | | |<-----------|-----------> ARP request
* |<-----------|----------->| | ARP request
* <-----------|----------->| | | PREQ
* |<-----------|----------->| | PREQ
* | |<-----------| | PREP
* |<-----------| | | PREP
* |----------->| | | ARP reply
* | |----------->| | ARP REPLY
* | |<-----------| | Data
* |............|............|............|
* |<-----------|----------->| | ARP request (11 asks who has 10)
* |............|............|............|
* |----------->| | | ARP reply
* ^ Note, that this arp reply goes without route
* discovery procedure, because route is known from
* previous PREQ/PREP exchange
* |<-----------| | | DATA
* |............|............|............|
* <-----------|----------->| | | ARP request (10 asks who has 13)
* |............|............|............|
* | | |<-----------|-----------> PREQ (13 asks about 10) DO=0
* RF=1 | | |----------->| PREP (intermediate reply - 12 knows
* about 10) | |<-----------|----------->| PREQ DO=1 RF=0
* |............|............|............|
* |----------->| | | PREP
* | |----------->| | PREP
* | | |----------->| PREP
* \endverbatim
*/
// clang-format off
/**
* \verbatim
<-----------|-----------> Broadcast frame
|----------->| Unicast frame
(Node ID) 0 1 2 3
(MAC addr) 10 11 12 13
| |<-----------|----------->| ARP request (12 asks who has 10)
| | |<-----------|-----------> ARP request
|<-----------|----------->| | ARP request
<-----------|----------->| | | PREQ
|<-----------|----------->| | PREQ
| |<-----------| | PREP
|<-----------| | | PREP
|----------->| | | ARP reply
| |----------->| | ARP REPLY
| |<-----------| | Data
|............|............|............|
|<-----------|----------->| | ARP request (11 asks who has 10)
|............|............|............|
|----------->| | | ARP reply
^ Note, that this arp reply goes without route
discovery procedure, because route is known from
previous PREQ/PREP exchange
|<-----------| | | DATA
|............|............|............|
<-----------|----------->| | | ARP request (10 asks who has 13)
|............|............|............|
| | |<-----------|-----------> PREQ (13 asks about 10) DO=0 RF=1
| | |----------->| PREP (intermediate reply - 12 knows about 10)
| |<-----------|----------->| PREQ DO=1 RF=0
|............|............|............|
|----------->| | | PREP
| |----------->| | PREP
| | |----------->| PREP
\endverbatim
*/
// clang-format on
class HwmpDoRfRegressionTest : public TestCase
{
public:

View File

@@ -40,59 +40,45 @@ namespace olsr
* It is expected that only second station will send TC messages.
*
* Expected trace (20 seconds, note random b-cast jitter):
\verbatim
1 2 3
|<------|------>| HELLO (empty) src = 10.1.1.2
| |<------|------> HELLO (empty) src = 10.1.1.3
<------|------>| | HELLO (empty) src = 10.1.1.1
<------|------>| | HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.2) src
= 10.1.1.1 | |<------|------> HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.2) src
= 10.1.1.3
|<------|------>| HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.3; Link Type:
Asymmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
|<------|------>| HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.3; Link Type:
Asymmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: Symmetric, Neighbor: 10.1.1.2) src
= 10.1.1.1 | |<------|------> HELLO (Link Type: Symmetric, Neighbor: 10.1.1.2) src
= 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type:
Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.1 | |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type:
Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.1 | |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.3
|<======|======>| TC (10.1.1.3; 10.1.1.1) + HELLO (Link Type: Symmetric,
Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2 | |<------|------>
HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.1
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type:
Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.1 | |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.3
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.1 | |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type:
Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
|<======|======>| TC (10.1.1.3; 10.1.1.1) src = 10.1.1.2
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.3
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.1
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type:
Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.1 | |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src
= 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type:
Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2 \endverbatim
*/
// clang-format off
/**
* \verbatim
1 2 3
|<------|------>| HELLO (empty) src = 10.1.1.2
| |<------|------> HELLO (empty) src = 10.1.1.3
<------|------>| | HELLO (empty) src = 10.1.1.1
<------|------>| | HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.2) src = 10.1.1.1
| |<------|------> HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.2) src = 10.1.1.3
|<------|------>| HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.3; Link Type: Asymmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
|<------|------>| HELLO (Link Type: Asymmetric, Neighbor: 10.1.1.3; Link Type: Asymmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: Symmetric, Neighbor: 10.1.1.2) src = 10.1.1.1
| |<------|------> HELLO (Link Type: Symmetric, Neighbor: 10.1.1.2) src = 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.1
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.1
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
|<======|======>| TC (10.1.1.3; 10.1.1.1) + HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.1
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.1
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.1
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
|<======|======>| TC (10.1.1.3; 10.1.1.1) src = 10.1.1.2
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.1
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
<------|------>| | HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.1
| |<------|------> HELLO (Link Type: MPR Link, Neighbor: 10.1.1.2) src = 10.1.1.3
|<------|------>| HELLO (Link Type: Symmetric, Neighbor: 10.1.1.3; Link Type: Symmetric, Neighbor: 10.1.1.1) src = 10.1.1.2
\endverbatim
*/
// clang-format on
class TcRegressionTest : public TestCase
{
public:

View File

@@ -35,21 +35,29 @@ class WifiMpdu;
* Maintains the state and information about transmitted MPDUs with Ack Policy set to Block Ack
* for an originator station. The state diagram is as follows:
*
\verbatim
/------------\ send ADDBARequest ----------------
| START |------------------>| PENDING |-------
\------------/ ---------------- \
^ receive / | \
| ADDBAResponse / | \
| (failure) v | \
| --------------- | --------------------->
---------------- | | REJECTED | | receive ADDBAResponse (success) |
ESTABLISHED | | --------------- | no -------------------->
---------------- | receive ^ | ADDBAResponse / | ADDBAResponse \
| / | (failure) \ v / | ---------------- /
|-------------------------| NO_REPLY |---------
Reset after timeout ----------------
*/
// clang-format off
/**
* \verbatim
/------------\ send ADDBARequest ----------------
| START |------------------>| PENDING |-------
\------------/ ---------------- \
^ receive / | \
| ADDBAResponse / | \
| (failure) v | \
| --------------- | ---------------------> ----------------
| | REJECTED | | receive ADDBAResponse (success) | ESTABLISHED |
| --------------- | no --------------------> ----------------
| receive ^ | ADDBAResponse /
| ADDBAResponse \ | /
| (failure) \ v /
| ---------------- /
|-------------------------| NO_REPLY |---------
Reset after timeout ----------------
\endverbatim
*/
// clang-format on
/**
*
* See also OriginatorBlockAckAgreement::State
*/

View File

@@ -476,15 +476,14 @@ namespace ns3
* This class implements the DSA-RSP message described by "IEEE Standard for
* Local and metropolitan area networks Part 16: Air Interface for Fixed Broadband Wireless Access
* Systems" 6.3.2.3.11 DSA-RSP message, page 63
*
* \verbatim
* 0 7 15 23
* +-------------+-------------+-------------+
* |Mngt msg type| Transaction ID |
* +-------------+-------------+-------------+
* | Conf Code | Service Flow TLV |
* +~~~~~~~~~~~~~+~~~~~~~~~~~~~+~~~~~~~~~~~~~+
* \endverbatim
0 7 15 23
+-------------+-------------+-------------+
|Mngt msg type| Transaction ID |
+-------------+-------------+-------------+
| Conf Code | Service Flow TLV |
+~~~~~~~~~~~~~+~~~~~~~~~~~~~+~~~~~~~~~~~~~+
\endverbatim
*/
class DsaRsp : public Header
{