A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
pyviz.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 INESC Porto
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * C++ helper functions for use by the python visualizer (for things
7 * Python is too slow at).
8 *
9 * Author: Gustavo Carneiro <gjc@inescporto.pt>
10 */
11#ifndef NS3_PYVIZ_H
12#define NS3_PYVIZ_H
13
14#include "ns3/channel.h"
15#include "ns3/event-id.h"
16#include "ns3/ipv4-header.h"
17#include "ns3/ipv4-l3-protocol.h"
18#include "ns3/mac16-address.h"
19#include "ns3/mac48-address.h"
20#include "ns3/mac64-address.h"
21#include "ns3/node.h"
22#include "ns3/nstime.h"
23#include "ns3/packet.h"
24
25#include <map>
26#include <set>
27#include <variant>
28
29namespace ns3
30{
31
32/**
33 * @ingroup visualizer
34 *
35 * @brief helper class to be used by the visualizer
36 * @internal
37 *
38 * This class is not meant to be used by simulations. It is only
39 * meant to be used by the visualizer tool (PyViz). The only reason
40 * it is public is because Python bindings for it are needed,
41 * otherwise it should be considered private.
42 **/
43class PyViz
44{
45 public:
46 PyViz();
47 ~PyViz();
48
49 /**
50 * Register drop trace path function
51 * @param tracePath the path to trace
52 */
53 void RegisterDropTracePath(const std::string& tracePath);
54
55 /**
56 * Register CSMA like device function
57 * @param deviceTypeName the device type name
58 */
59 void RegisterCsmaLikeDevice(const std::string& deviceTypeName);
60 /**
61 * Register WIFI like device function
62 * @param deviceTypeName the device type name
63 */
64 void RegisterWifiLikeDevice(const std::string& deviceTypeName);
65 /**
66 * Register point to point like device function
67 * @param deviceTypeName the device type name
68 */
69 void RegisterPointToPointLikeDevice(const std::string& deviceTypeName);
70
71 /**
72 * Run simulation until a given (simulated, absolute) time is reached
73 * @param time the run time
74 */
75 void SimulatorRunUntil(Time time);
76
77 /**
78 * Get the stop time of the underlying visual simulator implementation.
79 * @return The stop time of the visual simulator implementation.
80 */
82
83 /**
84 * Pause function
85 * @param message the pause message
86 */
87 static void Pause(const std::string& message);
88 /**
89 * Get pause message function
90 * @returns the pause message
91 */
92 std::vector<std::string> GetPauseMessages() const;
93
94 /// TransmissionSample structure
96 {
97 Ptr<Node> transmitter; ///< transmitter
98 Ptr<Node> receiver; ///< NULL if broadcast
99 Ptr<Channel> channel; ///< channel
100 uint32_t bytes; ///< bytes
101 };
102
103 typedef std::vector<TransmissionSample>
104 TransmissionSampleList; ///< TransmissionSampleList typedef
105 /**
106 * Get transmission samples
107 * @returns the transmission sample list
108 */
110
111 /// PacketDropSample structure
113 {
114 Ptr<Node> transmitter; ///< transmitter
115 uint32_t bytes; ///< bytes
116 };
117
118 typedef std::vector<PacketDropSample> PacketDropSampleList; ///< PacketDropSampleList typedef
119 /**
120 * Get packet drop samples
121 * @returns the packet drop sample list
122 */
124
125 /**
126 * The MAC address mode used by a NetDevice transmissions
127 */
128 enum class MacAddressMode : std::uint8_t
129 {
130 MAC16ADDRESS = 0, //!< The mode is a Mac 16 bit address (A.K.A. Short address)
131 MAC48ADDRESS = 1, //!< The mode is a Mac 48 bit address
132 MAC64ADDRESS = 2 //!< The mode is a Mac 48 bit address (A.K.A Extended address)
133 };
134
135 /**
136 * PacketSample structure
137 */
139 {
140 Time time; ///< time
141 Ptr<Packet> packet; ///< packet
143 };
144
145 /**
146 * TxPacketSample structure
147 */
149 {
150 std::variant<Mac16Address, Mac48Address, Mac64Address> to; //!< The destination MAC address
151 };
152
153 /**
154 * RxPacketSample structure
155 */
157 {
158 std::variant<Mac16Address, Mac48Address, Mac64Address> from; //!< The source MAC address
159 };
160
161 /**
162 * Structure to handle a sample of the last received, transmitted or drop packets
163 * in a node.
164 */
166 {
167 std::vector<RxPacketSample> lastReceivedPackets; //!< Last received packets
168 std::vector<TxPacketSample> lastTransmittedPackets; //!< Last transmitted packets
169 std::vector<PacketSample> lastDroppedPackets; //!< Last dropped packets
170 };
171
172 /**
173 * Get last packets function
174 * @param nodeId the node ID
175 * @returns the last packets
176 */
178
179 /**
180 * Set nodes of interest function
181 * @param nodes the collection of nodes
182 */
183 void SetNodesOfInterest(std::set<uint32_t> nodes);
184
185 /// NetDeviceStatistics structure
187 {
188 /// constructor
196
197 uint64_t transmittedBytes; ///< transmitted bytes
198 uint64_t receivedBytes; ///< received bytes
199 uint32_t transmittedPackets; ///< transmitted packets
200 uint32_t receivedPackets; ///< received packets
201 };
202
203 /// NodeStatistics structure
205 {
206 uint32_t nodeId; ///< node ID
207 std::vector<NetDeviceStatistics> statistics; ///< statistics
208 };
209
210 /**
211 * Get node statistics
212 * @returns the node statistics
213 */
214 std::vector<NodeStatistics> GetNodesStatistics() const;
215
216 /// PacketCaptureMode enumeration
218 {
219 PACKET_CAPTURE_DISABLED = 1, // packet capture is disabled
220 PACKET_CAPTURE_FILTER_HEADERS_OR, // packet capture if any of the indicated headers is
221 // present
222 PACKET_CAPTURE_FILTER_HEADERS_AND, // packet capture if all of the indicated headers are
223 // present
224 };
225
226 /// PacketCaptureOptions structure
228 {
229 std::set<TypeId> headers; ///< headers
230 uint32_t numLastPackets; ///< num last packets
232 };
233
234 /**
235 * Set packet capture options function
236 * @param nodeId the node ID
237 * @param options the capture options
238 */
240
241 // Yes, I know, this is just a utility function, not really related to the class in any way.
242 /**
243 * Utility function - clips a line to a bounding box.
244 * @param [in] boundsX1 Bounding box, minimum X coord
245 * @param [in] boundsY1 Bounding box, minimum Y coord
246 * @param [in] boundsX2 Bounding box, maximum X coord
247 * @param [in] boundsY2 Bounding box, maximum Y coord
248 * @param [in,out] lineX1 Line, minimum X coord (any on input, clipped to the bounding box
249 * on output)
250 * @param [in,out] lineY1 Line, minimum Y coord (any on input, clipped to the bounding box
251 * on output)
252 * @param [in,out] lineX2 Line, maximum X coord (any on input, clipped to the bounding box
253 * on output)
254 * @param [in,out] lineY2 Line, maximum Y coord (any on input, clipped to the bounding box
255 * on output)
256 */
257 // -#- @lineX1(direction=inout); @lineY1(direction=inout); @lineX2(direction=inout);
258 // @lineY2(direction=inout) -#-
259 static void LineClipping(double boundsX1,
260 double boundsY1,
261 double boundsX2,
262 double boundsY2,
263 double& lineX1,
264 double& lineY1,
265 double& lineX2,
266 double& lineY2);
267 // Don't break the above line or pybindgen will not be able to pick up the above annotation :(
268
269 private:
270 /**
271 * Get packet capture options function
272 * @param nodeId the node ID
273 * @param outOptions the packet capture options
274 * @returns true if successful
275 */
276 bool GetPacketCaptureOptions(uint32_t nodeId, const PacketCaptureOptions** outOptions) const;
277 /**
278 * Filter packet function
279 * @param packet the packet
280 * @param options the capture options
281 * @returns true if successful
282 */
283 static bool FilterPacket(Ptr<const Packet> packet, const PacketCaptureOptions& options);
284
285 typedef std::pair<Ptr<Channel>, uint32_t> TxRecordKey; ///< TxRecordKey typedef
286
287 /// TxRecordValue structure
289 {
290 Time time; ///< time
291 Ptr<Node> srcNode; ///< source node
292 bool isBroadcast; ///< is broadcast?
293 };
294
295 /// TransmissionSampleKey structure
297 {
298 /**
299 * Less than operator
300 *
301 * @param other object to compare
302 * @return true if less than
303 */
304 bool operator<(const TransmissionSampleKey& other) const;
305 /**
306 * Equality operator
307 *
308 * @param other object to compare
309 * @return true if equal
310 */
311 bool operator==(const TransmissionSampleKey& other) const;
312 Ptr<Node> transmitter; ///< transmitter
313 Ptr<Node> receiver; ///< NULL if broadcast
314 Ptr<Channel> channel; ///< channel
315 };
316
317 /// TransmissionSampleValue structure
319 {
320 uint32_t bytes; ///< bytes
321 };
322
323 // Data
324 std::map<uint32_t, PacketCaptureOptions> m_packetCaptureOptions; ///< packet capture options
325 std::vector<std::string> m_pauseMessages; ///< pause message
326 std::map<TxRecordKey, TxRecordValue> m_txRecords; ///< transmit records
327 std::map<TransmissionSampleKey, TransmissionSampleValue>
328 m_transmissionSamples; ///< transmission samples
329 std::map<Ptr<Node>, uint32_t> m_packetDrops; ///< packet drops
330 std::set<uint32_t>
331 m_nodesOfInterest; ///< list of node IDs whose transmissions will be monitored
332 std::map<uint32_t, Time> m_packetsOfInterest; ///< list of packet UIDs that will be monitored
333 std::map<uint32_t, LastPacketsSample> m_lastPackets; ///< last packets
334 std::map<uint32_t, std::vector<NetDeviceStatistics>> m_nodesStatistics; ///< node statistics
335
336 // Trace callbacks
337 /**
338 * Network transmit common trace callback function
339 * @param context the context
340 * @param packet the packet
341 * @param destination the destination MAC address
342 */
344 const std::string& context,
345 Ptr<const Packet> packet,
346 const std::variant<Mac16Address, Mac48Address, Mac64Address>& destination);
347
348 /**
349 * Network receive common trace callback function
350 * @param context the context
351 * @param packet the packet
352 * @param source the source MAC address
353 */
354 void TraceNetDevRxCommon(const std::string& context,
355 Ptr<const Packet> packet,
356 const std::variant<Mac16Address, Mac48Address, Mac64Address>& source);
357
358 /**
359 * Wi-Fi transmit trace callback function
360 * @param context the context
361 * @param packet the packet
362 */
363 void TraceNetDevTxWifi(std::string context, Ptr<const Packet> packet);
364
365 /**
366 * Wi-Fi receive trace callback function
367 * @param context the context
368 * @param packet the packet
369 */
370 void TraceNetDevRxWifi(std::string context, Ptr<const Packet> packet);
371
372 /**
373 * Lr-Wpan transmit trace callback function
374 * @param context the context
375 * @param packet the packet
376 */
377 void TraceNetDevTxLrWpan(std::string context, Ptr<const Packet> packet);
378
379 /**
380 * Lr-Wpan receive trace callback function
381 * @param context the context
382 * @param packet the packet
383 */
384 void TraceNetDevRxLrWpan(std::string context, Ptr<const Packet> packet);
385
386 /**
387 * Queue drop trace callback function
388 * @param context the context
389 * @param packet the packet
390 */
391 void TraceDevQueueDrop(std::string context, Ptr<const Packet> packet);
392
393 /**
394 * Ipv4 drop trace callback function
395 * @param context the context
396 * @param hdr the header
397 * @param packet the packet
398 * @param reason the drop reason
399 * @param dummy_ipv4 the dummy Ipv4
400 * @param interface the interface
401 */
402 void TraceIpv4Drop(std::string context,
403 const ns3::Ipv4Header& hdr,
404 Ptr<const Packet> packet,
406 Ptr<Ipv4> dummy_ipv4,
407 uint32_t interface);
408
409 /**
410 * CSMA transmit trace callback function
411 * @param context the context
412 * @param packet the packet
413 */
414 void TraceNetDevTxCsma(std::string context, Ptr<const Packet> packet);
415
416 /**
417 * CSMA receive trace callback function
418 * @param context the context
419 * @param packet the packet
420 */
421 void TraceNetDevRxCsma(std::string context, Ptr<const Packet> packet);
422
423 /**
424 * CSMA promiscuous receive function
425 * @param context the context
426 * @param packet the packet
427 */
428 void TraceNetDevPromiscRxCsma(std::string context, Ptr<const Packet> packet);
429
430 /**
431 * Point to point transmit trace callback function
432 * @param context the context
433 * @param packet the packet
434 */
435 void TraceNetDevTxPointToPoint(std::string context, Ptr<const Packet> packet);
436
437 /**
438 * Point to point receive trace callback function
439 * @param context the context
440 * @param packet the packet
441 */
442 void TraceNetDevRxPointToPoint(std::string context, Ptr<const Packet> packet);
443
444 /**
445 * LTE transmit trace callback function
446 * @param context the context
447 * @param packet the packet
448 * @param destination the destination MAC address
449 */
450 void TraceNetDevTxLte(std::string context,
451 Ptr<const Packet> packet,
452 const Mac48Address& destination);
453 /**
454 * LTE receive trace callback function
455 * @param context the context
456 * @param packet the packet
457 * @param source the MAC address of the source
458 */
459 void TraceNetDevRxLte(std::string context,
460 Ptr<const Packet> packet,
461 const Mac48Address& source);
462
463 /**
464 * Find net device statistics function
465 * @param node the node
466 * @param interface the interface number
467 * @returns the device statistics
468 */
469 inline NetDeviceStatistics& FindNetDeviceStatistics(int node, int interface);
470
471 /**
472 * Do pause function
473 * @param message the pause message
474 */
475 void DoPause(const std::string& message);
476
477 bool m_stop; ///< stop?
478 Time m_runUntil; ///< run until time
479
480 /// Stop simulation callback function
482};
483
484} // namespace ns3
485
486#endif /* NS3_PYVIZ_H */
Packet header for IPv4.
Definition ipv4-header.h:23
DropReason
Reason why a packet has been dropped.
an EUI-48 address
Smart pointer class similar to boost::intrusive_ptr.
Definition ptr.h:70
void RegisterCsmaLikeDevice(const std::string &deviceTypeName)
Register CSMA like device function.
Definition pyviz.cc:174
void TraceNetDevRxCsma(std::string context, Ptr< const Packet > packet)
CSMA receive trace callback function.
Definition pyviz.cc:847
void SetPacketCaptureOptions(uint32_t nodeId, PacketCaptureOptions options)
Set packet capture options function.
Definition pyviz.cc:220
void TraceNetDevRxPointToPoint(std::string context, Ptr< const Packet > packet)
Point to point receive trace callback function.
Definition pyviz.cc:857
void RegisterDropTracePath(const std::string &tracePath)
Register drop trace path function.
Definition pyviz.cc:230
MacAddressMode
The MAC address mode used by a NetDevice transmissions.
Definition pyviz.h:129
@ MAC64ADDRESS
The mode is a Mac 48 bit address (A.K.A Extended address).
Definition pyviz.h:132
@ MAC16ADDRESS
The mode is a Mac 16 bit address (A.K.A.
Definition pyviz.h:130
@ MAC48ADDRESS
The mode is a Mac 48 bit address.
Definition pyviz.h:131
void RegisterWifiLikeDevice(const std::string &deviceTypeName)
Register WIFI like device function.
Definition pyviz.cc:192
std::map< uint32_t, PacketCaptureOptions > m_packetCaptureOptions
packet capture options
Definition pyviz.h:324
void TraceNetDevTxLte(std::string context, Ptr< const Packet > packet, const Mac48Address &destination)
LTE transmit trace callback function.
Definition pyviz.cc:883
std::map< uint32_t, LastPacketsSample > m_lastPackets
last packets
Definition pyviz.h:333
void SimulatorRunUntil(Time time)
Run simulation until a given (simulated, absolute) time is reached.
Definition pyviz.cc:280
bool m_stop
stop?
Definition pyviz.h:477
PacketDropSampleList GetPacketDropSamples() const
Get packet drop samples.
Definition pyviz.cc:925
void SetNodesOfInterest(std::set< uint32_t > nodes)
Set nodes of interest function.
Definition pyviz.cc:943
std::map< uint32_t, std::vector< NetDeviceStatistics > > m_nodesStatistics
node statistics
Definition pyviz.h:334
void TraceNetDevTxCsma(std::string context, Ptr< const Packet > packet)
CSMA transmit trace callback function.
Definition pyviz.cc:658
void TraceNetDevTxLrWpan(std::string context, Ptr< const Packet > packet)
Lr-Wpan transmit trace callback function.
Definition pyviz.cc:638
Time GetSimulatorStopTime()
Get the stop time of the underlying visual simulator implementation.
Definition pyviz.cc:345
void DoPause(const std::string &message)
Do pause function.
Definition pyviz.cc:244
std::vector< NodeStatistics > GetNodesStatistics() const
Get node statistics.
Definition pyviz.cc:949
std::set< uint32_t > m_nodesOfInterest
list of node IDs whose transmissions will be monitored
Definition pyviz.h:331
void TraceNetDevPromiscRxCsma(std::string context, Ptr< const Packet > packet)
CSMA promiscuous receive function.
Definition pyviz.cc:865
static void Pause(const std::string &message)
Pause function.
Definition pyviz.cc:253
void TraceNetDevRxCommon(const std::string &context, Ptr< const Packet > packet, const std::variant< Mac16Address, Mac48Address, Mac64Address > &source)
Network receive common trace callback function.
Definition pyviz.cc:678
std::vector< std::string > m_pauseMessages
pause message
Definition pyviz.h:325
void TraceNetDevRxLte(std::string context, Ptr< const Packet > packet, const Mac48Address &source)
LTE receive trace callback function.
Definition pyviz.cc:894
void TraceNetDevRxLrWpan(std::string context, Ptr< const Packet > packet)
Lr-Wpan receive trace callback function.
Definition pyviz.cc:828
void TraceIpv4Drop(std::string context, const ns3::Ipv4Header &hdr, Ptr< const Packet > packet, ns3::Ipv4L3Protocol::DropReason reason, Ptr< Ipv4 > dummy_ipv4, uint32_t interface)
Ipv4 drop trace callback function.
Definition pyviz.cc:505
TransmissionSampleList GetTransmissionSamples() const
Get transmission samples.
Definition pyviz.cc:905
static void LineClipping(double boundsX1, double boundsY1, double boundsX2, double boundsY2, double &lineX1, double &lineY1, double &lineX2, double &lineY2)
Utility function - clips a line to a bounding box.
Definition pyviz.cc:1650
std::map< TransmissionSampleKey, TransmissionSampleValue > m_transmissionSamples
transmission samples
Definition pyviz.h:328
void TraceNetDevTxPointToPoint(std::string context, Ptr< const Packet > packet)
Point to point transmit trace callback function.
Definition pyviz.cc:668
void TraceNetDevRxWifi(std::string context, Ptr< const Packet > packet)
Wi-Fi receive trace callback function.
Definition pyviz.cc:796
NetDeviceStatistics & FindNetDeviceStatistics(int node, int interface)
Find net device statistics function.
Definition pyviz.cc:383
void TraceDevQueueDrop(std::string context, Ptr< const Packet > packet)
Queue drop trace callback function.
Definition pyviz.cc:458
std::map< TxRecordKey, TxRecordValue > m_txRecords
transmit records
Definition pyviz.h:326
std::vector< std::string > GetPauseMessages() const
Get pause message function.
Definition pyviz.cc:260
void TraceNetDevTxCommon(const std::string &context, Ptr< const Packet > packet, const std::variant< Mac16Address, Mac48Address, Mac64Address > &destination)
Network transmit common trace callback function.
Definition pyviz.cc:520
std::vector< PacketDropSample > PacketDropSampleList
PacketDropSampleList typedef.
Definition pyviz.h:118
static bool FilterPacket(Ptr< const Packet > packet, const PacketCaptureOptions &options)
Filter packet function.
Definition pyviz.cc:416
void CallbackStopSimulation()
Stop simulation callback function.
Definition pyviz.cc:269
void RegisterPointToPointLikeDevice(const std::string &deviceTypeName)
Register point to point like device function.
Definition pyviz.cc:206
std::map< Ptr< Node >, uint32_t > m_packetDrops
packet drops
Definition pyviz.h:329
LastPacketsSample GetLastPackets(uint32_t nodeId) const
Get last packets function.
Definition pyviz.cc:961
void TraceNetDevTxWifi(std::string context, Ptr< const Packet > packet)
Wi-Fi transmit trace callback function.
Definition pyviz.cc:610
bool GetPacketCaptureOptions(uint32_t nodeId, const PacketCaptureOptions **outOptions) const
Get packet capture options function.
Definition pyviz.cc:401
Time m_runUntil
run until time
Definition pyviz.h:478
std::map< uint32_t, Time > m_packetsOfInterest
list of packet UIDs that will be monitored
Definition pyviz.h:332
std::pair< Ptr< Channel >, uint32_t > TxRecordKey
TxRecordKey typedef.
Definition pyviz.h:285
std::vector< TransmissionSample > TransmissionSampleList
TransmissionSampleList typedef.
Definition pyviz.h:104
PacketCaptureMode
PacketCaptureMode enumeration.
Definition pyviz.h:218
@ PACKET_CAPTURE_FILTER_HEADERS_OR
Definition pyviz.h:220
@ PACKET_CAPTURE_DISABLED
Definition pyviz.h:219
@ PACKET_CAPTURE_FILTER_HEADERS_AND
Definition pyviz.h:222
Simulation virtual time values and global simulation resolution.
Definition nstime.h:96
NodeContainer nodes
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Structure to handle a sample of the last received, transmitted or drop packets in a node.
Definition pyviz.h:166
std::vector< PacketSample > lastDroppedPackets
Last dropped packets.
Definition pyviz.h:169
std::vector< TxPacketSample > lastTransmittedPackets
Last transmitted packets.
Definition pyviz.h:168
std::vector< RxPacketSample > lastReceivedPackets
Last received packets.
Definition pyviz.h:167
NetDeviceStatistics structure.
Definition pyviz.h:187
uint64_t receivedBytes
received bytes
Definition pyviz.h:198
uint64_t transmittedBytes
transmitted bytes
Definition pyviz.h:197
uint32_t receivedPackets
received packets
Definition pyviz.h:200
NetDeviceStatistics()
constructor
Definition pyviz.h:189
uint32_t transmittedPackets
transmitted packets
Definition pyviz.h:199
NodeStatistics structure.
Definition pyviz.h:205
std::vector< NetDeviceStatistics > statistics
statistics
Definition pyviz.h:207
uint32_t nodeId
node ID
Definition pyviz.h:206
PacketCaptureOptions structure.
Definition pyviz.h:228
PacketCaptureMode mode
mode
Definition pyviz.h:231
uint32_t numLastPackets
num last packets
Definition pyviz.h:230
std::set< TypeId > headers
headers
Definition pyviz.h:229
PacketDropSample structure.
Definition pyviz.h:113
Ptr< Node > transmitter
transmitter
Definition pyviz.h:114
PacketSample structure.
Definition pyviz.h:139
Ptr< Packet > packet
packet
Definition pyviz.h:141
Ptr< NetDevice > device
device
Definition pyviz.h:142
RxPacketSample structure.
Definition pyviz.h:157
std::variant< Mac16Address, Mac48Address, Mac64Address > from
The source MAC address.
Definition pyviz.h:158
TransmissionSample structure.
Definition pyviz.h:96
Ptr< Node > transmitter
transmitter
Definition pyviz.h:97
Ptr< Channel > channel
channel
Definition pyviz.h:99
Ptr< Node > receiver
NULL if broadcast.
Definition pyviz.h:98
TransmissionSampleKey structure.
Definition pyviz.h:297
Ptr< Channel > channel
channel
Definition pyviz.h:314
bool operator==(const TransmissionSampleKey &other) const
Equality operator.
Definition pyviz.cc:375
bool operator<(const TransmissionSampleKey &other) const
Less than operator.
Definition pyviz.cc:353
Ptr< Node > transmitter
transmitter
Definition pyviz.h:312
Ptr< Node > receiver
NULL if broadcast.
Definition pyviz.h:313
TransmissionSampleValue structure.
Definition pyviz.h:319
TxPacketSample structure.
Definition pyviz.h:149
std::variant< Mac16Address, Mac48Address, Mac64Address > to
The destination MAC address.
Definition pyviz.h:150
TxRecordValue structure.
Definition pyviz.h:289
Ptr< Node > srcNode
source node
Definition pyviz.h:291
bool isBroadcast
is broadcast?
Definition pyviz.h:292