13#include "ns3/assert.h" 
   14#include "ns3/output-stream-wrapper.h" 
   15#include "ns3/pcap-file-wrapper.h" 
   16#include "ns3/simulator.h" 
   76                                      bool useObjectNames = 
true);
 
   91                                             bool useObjectNames = 
true);
 
  104                                    std::ios::openmode filemode,
 
  105                                    DataLinkType dataLinkType,
 
  106                                    uint32_t snapLen = std::numeric_limits<uint32_t>::max(),
 
  115    template <
typename T>
 
 
  152                  "PcapHelper::HookDefaultSink():  Unable to hook \"" << tracename << 
"\"");
 
 
  186                                      bool useObjectNames = 
true);
 
  201                                             bool useObjectNames = 
true);
 
  228                                              std::ios::openmode filemode = std::ios::out);
 
  238    template <
typename T>
 
  240                                              std::string traceName,
 
  252    template <
typename T>
 
  255                                           std::string traceName,
 
  266    template <
typename T>
 
  268                                           std::string traceName,
 
  280    template <
typename T>
 
  283                                        std::string traceName,
 
  294    template <
typename T>
 
  296                                              std::string traceName,
 
  308    template <
typename T>
 
  311                                           std::string traceName,
 
  322    template <
typename T>
 
  324                                              std::string traceName,
 
  336    template <
typename T>
 
  339                                           std::string traceName,
 
 
  495                                                       std::string tracename,
 
  498    bool result = 
object->TraceConnectWithoutContext(
 
  502                  "AsciiTraceHelper::HookDefaultEnqueueSinkWithoutContext():  Unable to hook \"" 
  503                      << tracename << 
"\"");
 
 
  510                                                    std::string tracename,
 
  513    bool result = 
object->TraceConnect(tracename,
 
  517                  "AsciiTraceHelper::HookDefaultEnqueueSinkWithContext():  Unable to hook \"" 
  518                      << tracename << 
"\"");
 
 
  524                                                    std::string tracename,
 
  528        object->TraceConnectWithoutContext(tracename,
 
  531                  "AsciiTraceHelper::HookDefaultDropSinkWithoutContext():  Unable to hook \"" 
  532                      << tracename << 
"\"");
 
 
  539                                                 std::string tracename,
 
  542    bool result = 
object->TraceConnect(tracename,
 
  546                  "AsciiTraceHelper::HookDefaultDropSinkWithContext():  Unable to hook \"" 
  547                      << tracename << 
"\"");
 
 
  553                                                       std::string tracename,
 
  556    bool result = 
object->TraceConnectWithoutContext(
 
  560                  "AsciiTraceHelper::HookDefaultDequeueSinkWithoutContext():  Unable to hook \"" 
  561                      << tracename << 
"\"");
 
 
  568                                                    std::string tracename,
 
  571    bool result = 
object->TraceConnect(tracename,
 
  575                  "AsciiTraceHelper::HookDefaultDequeueSinkWithContext():  Unable to hook \"" 
  576                      << tracename << 
"\"");
 
 
  582                                                       std::string tracename,
 
  585    bool result = 
object->TraceConnectWithoutContext(
 
  589                  "AsciiTraceHelper::HookDefaultReceiveSinkWithoutContext():  Unable to hook \"" 
  590                      << tracename << 
"\"");
 
 
  597                                                    std::string tracename,
 
  600    bool result = 
object->TraceConnect(tracename,
 
  604                  "AsciiTraceHelper::HookDefaultReceiveSinkWithContext():  Unable to hook \"" 
  605                      << tracename << 
"\"");
 
 
  640                                    bool explicitFilename) = 0;
 
  652                    bool promiscuous = 
false,
 
  653                    bool explicitFilename = 
false);
 
  666                    bool promiscuous = 
false,
 
  667                    bool explicitFilename = 
false);
 
  701                    bool promiscuous = 
false);
 
  710    void EnablePcapAll(std::string prefix, 
bool promiscuous = 
false);
 
 
  760                                     bool explicitFilename) = 0;
 
  788    void EnableAscii(std::string prefix, std::string ndName, 
bool explicitFilename = 
false);
 
  900                         bool explicitFilename);
 
  937                         bool explicitFilename);
 
  951                         bool explicitFilename);
 
 
virtual ~AsciiTraceHelperForDevice()
Destroy an AsciiTraceHelperForDevice.
 
void EnableAsciiImpl(Ptr< OutputStreamWrapper > stream, std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename)
Enable ascii trace output on the device specified by a global node-id (of a previously created node) ...
 
void EnableAscii(std::string prefix, Ptr< NetDevice > nd, bool explicitFilename=false)
Enable ascii trace output on the indicated net device.
 
void EnableAsciiAll(std::string prefix)
Enable ascii trace output on each device (which is of the appropriate type) in the set of all nodes c...
 
AsciiTraceHelperForDevice()
Construct an AsciiTraceHelperForDevice.
 
virtual void EnableAsciiInternal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< NetDevice > nd, bool explicitFilename)=0
Enable ascii trace output on the indicated net device.
 
void EnableAsciiImpl(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< NetDevice > nd, bool explicitFilename)
Enable ascii trace output the indicated net device (implementation).
 
void HookDefaultDropSinkWithoutContext(Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default drop operation trace sink that does not accept nor log a trace con...
 
std::string GetFilenameFromDevice(std::string prefix, Ptr< NetDevice > device, bool useObjectNames=true)
Let the ascii trace helper figure out a reasonable filename to use for an ascii trace file associated...
 
static void DefaultDropSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Drop default trace sink.
 
std::string GetFilenameFromInterfacePair(std::string prefix, Ptr< Object > object, uint32_t interface, bool useObjectNames=true)
Let the ascii trace helper figure out a reasonable filename to use for an ascii trace file associated...
 
static void DefaultReceiveSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Receive default trace sink.
 
void HookDefaultDequeueSinkWithContext(Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default dequeue operation trace sink that does accept and log a trace cont...
 
Ptr< OutputStreamWrapper > CreateFileStream(std::string filename, std::ios::openmode filemode=std::ios::out)
Create and initialize an output stream object we'll use to write the traced bits.
 
void HookDefaultEnqueueSinkWithoutContext(Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default enqueue operation trace sink that does not accept nor log a trace ...
 
void HookDefaultEnqueueSinkWithContext(Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default enqueue operation trace sink that does accept and log a trace cont...
 
void HookDefaultReceiveSinkWithContext(Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default receive operation trace sink that does accept and log a trace cont...
 
void HookDefaultReceiveSinkWithoutContext(Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default receive operation trace sink that does not accept nor log a trace ...
 
AsciiTraceHelper()
Create an ascii trace helper.
 
static void DefaultDequeueSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Dequeue default trace sink.
 
static void DefaultEnqueueSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Enqueue default trace sink.
 
void HookDefaultDequeueSinkWithoutContext(Ptr< T > object, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default dequeue operation trace sink that does not accept nor log a trace ...
 
void HookDefaultDropSinkWithContext(Ptr< T > object, std::string context, std::string traceName, Ptr< OutputStreamWrapper > stream)
Hook a trace source to the default drop operation trace sink that does accept and log a trace context...
 
static void DefaultDropSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Drop default trace sink.
 
static void DefaultDequeueSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Dequeue default trace sink.
 
static void DefaultEnqueueSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Enqueue default trace sink.
 
~AsciiTraceHelper()
Destroy an ascii trace helper.
 
static void DefaultReceiveSinkWithoutContext(Ptr< OutputStreamWrapper > file, Ptr< const Packet > p)
Basic Receive default trace sink.
 
holds a vector of ns3::NetDevice pointers
 
keep track of a set of node pointers.
 
void EnablePcapAll(std::string prefix, bool promiscuous=false)
Enable pcap output on each device (which is of the appropriate type) in the set of all nodes created ...
 
void EnablePcap(std::string prefix, Ptr< NetDevice > nd, bool promiscuous=false, bool explicitFilename=false)
Enable pcap output the indicated net device.
 
virtual void EnablePcapInternal(std::string prefix, Ptr< NetDevice > nd, bool promiscuous, bool explicitFilename)=0
Enable pcap output the indicated net device.
 
virtual ~PcapHelperForDevice()
Destroy a PcapHelperForDevice.
 
PcapHelperForDevice()
Construct a PcapHelperForDevice.
 
std::string GetFilenameFromDevice(std::string prefix, Ptr< NetDevice > device, bool useObjectNames=true)
Let the pcap helper figure out a reasonable filename to use for a pcap file associated with a device.
 
Ptr< PcapFileWrapper > CreateFile(std::string filename, std::ios::openmode filemode, DataLinkType dataLinkType, uint32_t snapLen=std::numeric_limits< uint32_t >::max(), int32_t tzCorrection=0)
Create and initialize a pcap file.
 
DataLinkType
This enumeration holds the data link types that will be written to the pcap file.
 
static void SinkWithHeader(Ptr< PcapFileWrapper > file, const Header &header, Ptr< const Packet > p)
This trace sink passes a header separately from the packet to prevent creating a new packet (for perf...
 
void HookDefaultSink(Ptr< T > object, std::string traceName, Ptr< PcapFileWrapper > file)
Hook a trace source to the default trace sink.
 
std::string GetFilenameFromInterfacePair(std::string prefix, Ptr< Object > object, uint32_t interface, bool useObjectNames=true)
Let the pcap helper figure out a reasonable filename to use for the pcap file associated with a node.
 
~PcapHelper()
Destroy a pcap helper.
 
static void DefaultSink(Ptr< PcapFileWrapper > file, Ptr< const Packet > p)
The basic default trace sink.
 
PcapHelper()
Create a pcap helper.
 
Smart pointer class similar to boost::intrusive_ptr.
 
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
 
auto MakeBoundCallback(R(*fnPtr)(Args...), BArgs &&... bargs)
Make Callbacks with varying number of bound arguments.
 
Every class exported by the ns3 library is enclosed in the ns3 namespace.