A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
hwmp-target-flags-regression.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009 IITP RAS
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Authors: Kirill Andreev <andreev@iitp.ru>
18 */
19
20#include "ns3/ipv4-interface-container.h"
21#include "ns3/node-container.h"
22#include "ns3/nstime.h"
23#include "ns3/pcap-file.h"
24#include "ns3/test.h"
25
26using namespace ns3;
27
28/**
29 * \ingroup dot11s-test
30 *
31 * \brief This is a test for intermediate reply and saving routing
32 * information about neighbour. 4 stations and 3 UDP ping streams are initiated.
33 * \verbatim
34 * <-----------|-----------> Broadcast frame
35 * |----------->| Unicast frame
36 * (Node ID) 0 1 2 3
37 * (MAC addr) 10 11 12 13
38 * | |<-----------|----------->| ARP request (12 asks who has 10)
39 * | | |<-----------|-----------> ARP request
40 * |<-----------|----------->| | ARP request
41 * <-----------|----------->| | | PREQ
42 * |<-----------|----------->| | PREQ
43 * | |<-----------| | PREP
44 * |<-----------| | | PREP
45 * |----------->| | | ARP reply
46 * | |----------->| | ARP REPLY
47 * | |<-----------| | Data
48 * |............|............|............|
49 * |<-----------|----------->| | ARP request (11 asks who has 10)
50 * |............|............|............|
51 * |----------->| | | ARP reply
52 * ^ Note, that this arp reply goes without route
53 * discovery procedure, because route is known from
54 * previous PREQ/PREP exchange
55 * |<-----------| | | DATA
56 * |............|............|............|
57 * <-----------|----------->| | | ARP request (10 asks who has 13)
58 * |............|............|............|
59 * | | |<-----------|-----------> PREQ (13 asks about 10) DO=0
60 * RF=1 | | |----------->| PREP (intermediate reply - 12 knows
61 * about 10) | |<-----------|----------->| PREQ DO=1 RF=0
62 * |............|............|............|
63 * |----------->| | | PREP
64 * | |----------->| | PREP
65 * | | |----------->| PREP
66 * \endverbatim
67 */
69{
70 public:
72 ~HwmpDoRfRegressionTest() override;
73
74 void DoRun() override;
75 /// Check results function
76 void CheckResults();
77
78 private:
79 /// \internal It is important to have pointers here
81 /// Simulation time
84
85 /// Create nodes function
86 void CreateNodes();
87 /// Create devices function
88 void CreateDevices();
89 /// Install application function
91 /// Reset position function
93
94 /// Server-side socket
96 /// Server-side socket
98 /// Client-side socket
100 /// Client-side socket
102 /// Client-side socket
104
105 /// sent packets counter A
107 /// sent packets counter B
109 /// sent packets counter C
111
112 /**
113 * Send data A
114 * \param socket the sending socket
115 */
116 void SendDataA(Ptr<Socket> socket);
117
118 /**
119 * Send data B
120 * \param socket the sending socket
121 */
122 void SendDataB(Ptr<Socket> socket);
123
124 /**
125 * Send data C
126 * \param socket the sending socket
127 */
128 void SendDataC(Ptr<Socket> socket);
129
130 /**
131 * \brief Handle a packet reception.
132 *
133 * This function is called by lower layers.
134 *
135 * \param socket the socket the packet was received to.
136 */
137 void HandleReadServer(Ptr<Socket> socket);
138
139 /**
140 * \brief Handle a packet reception.
141 *
142 * This function is called by lower layers.
143 *
144 * \param socket the socket the packet was received to.
145 */
146 void HandleReadClient(Ptr<Socket> socket);
147};
This is a test for intermediate reply and saving routing information about neighbour.
void ResetPosition()
Reset position function.
void SendDataA(Ptr< Socket > socket)
Send data A.
void HandleReadClient(Ptr< Socket > socket)
Handle a packet reception.
void DoRun() override
Implementation to actually run this TestCase.
Ptr< Socket > m_serverSocketA
Server-side socket.
void CreateDevices()
Create devices function.
void SendDataC(Ptr< Socket > socket)
Send data C.
uint32_t m_sentPktsCounterA
sent packets counter A
void CheckResults()
Check results function.
Ptr< Socket > m_serverSocketB
Server-side socket.
void SendDataB(Ptr< Socket > socket)
Send data B.
uint32_t m_sentPktsCounterC
sent packets counter C
Ptr< Socket > m_clientSocketA
Client-side socket.
void HandleReadServer(Ptr< Socket > socket)
Handle a packet reception.
void InstallApplications()
Install application function.
Ipv4InterfaceContainer m_interfaces
interfaces
void CreateNodes()
Create nodes function.
uint32_t m_sentPktsCounterB
sent packets counter B
Ptr< Socket > m_clientSocketC
Client-side socket.
Ptr< Socket > m_clientSocketB
Client-side socket.
holds a vector of std::pair of Ptr<Ipv4> and interface index.
keep track of a set of node pointers.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
encapsulates test code
Definition: test.h:1061
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
Every class exported by the ns3 library is enclosed in the ns3 namespace.