A Discrete-Event Network Simulator
API
ns3::PcapHelper Class Reference

Manage pcap files for device models. More...

#include "trace-helper.h"

Public Types

enum  DataLinkType {
  DLT_NULL = 0 , DLT_EN10MB = 1 , DLT_PPP = 9 , DLT_RAW = 101 ,
  DLT_IEEE802_11 = 105 , DLT_LINUX_SLL = 113 , DLT_PRISM_HEADER = 119 , DLT_IEEE802_11_RADIO = 127 ,
  DLT_IEEE802_15_4 = 195 , DLT_NETLINK = 253 , DLT_LORATAP = 270
}
 This enumeration holds the data link types that will be written to the pcap file. More...
 

Public Member Functions

 PcapHelper ()
 Create a pcap helper. More...
 
 ~PcapHelper ()
 Destroy a pcap helper. More...
 
Ptr< PcapFileWrapperCreateFile (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. More...
 
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. More...
 
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. More...
 
template<typename T >
void HookDefaultSink (Ptr< T > object, std::string traceName, Ptr< PcapFileWrapper > file)
 Hook a trace source to the default trace sink. More...
 

Static Private Member Functions

static void DefaultSink (Ptr< PcapFileWrapper > file, Ptr< const Packet > p)
 The basic default trace sink. More...
 
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 performance reasons) More...
 

Detailed Description

Manage pcap files for device models.

Handling pcap files is a common operation for ns-3 devices. It is useful to provide a common base class for dealing with these ops.

Definition at line 38 of file trace-helper.h.

Member Enumeration Documentation

◆ DataLinkType

This enumeration holds the data link types that will be written to the pcap file.

We don't include pcap-bpf.h to avoid an explicit dependency on the real pcap and we don't make an enumeration of all of the values to make it easy to pass new values in.

For a list of Data Link Types see http://www.tcpdump.org/linktypes.html

Enumerator
DLT_NULL 
DLT_EN10MB 
DLT_PPP 
DLT_RAW 
DLT_IEEE802_11 
DLT_LINUX_SLL 
DLT_PRISM_HEADER 
DLT_IEEE802_11_RADIO 
DLT_IEEE802_15_4 
DLT_NETLINK 
DLT_LORATAP 

Definition at line 50 of file trace-helper.h.

Constructor & Destructor Documentation

◆ PcapHelper()

ns3::PcapHelper::PcapHelper ( )

Create a pcap helper.

Definition at line 38 of file trace-helper.cc.

References NS_LOG_FUNCTION_NOARGS.

◆ ~PcapHelper()

ns3::PcapHelper::~PcapHelper ( )

Destroy a pcap helper.

Definition at line 43 of file trace-helper.cc.

References NS_LOG_FUNCTION_NOARGS.

Member Function Documentation

◆ CreateFile()

Ptr< PcapFileWrapper > ns3::PcapHelper::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.

Parameters
filenamefile name
filemodefile mode
dataLinkTypedata link type of packet data
snapLenmaximum length of packet data stored in records
tzCorrectiontime zone correction to be applied to timestamps of packets
Returns
a smart pointer to the Pcap file

Definition at line 49 of file trace-helper.cc.

References create-module::file, NS_ABORT_MSG_IF, and NS_LOG_FUNCTION.

Referenced by ns3::WimaxHelper::EnablePcapInternal(), ns3::CsmaHelper::EnablePcapInternal(), ns3::FdNetDeviceHelper::EnablePcapInternal(), ns3::LrWpanHelper::EnablePcapInternal(), ns3::PointToPointHelper::EnablePcapInternal(), ns3::YansWavePhyHelper::EnablePcapInternal(), ns3::WifiPhyHelper::EnablePcapInternal(), ns3::InternetStackHelper::EnablePcapIpv4Internal(), and ns3::InternetStackHelper::EnablePcapIpv6Internal().

+ Here is the caller graph for this function:

◆ DefaultSink()

void ns3::PcapHelper::DefaultSink ( Ptr< PcapFileWrapper file,
Ptr< const Packet p 
)
staticprivate

The basic default trace sink.

This one just writes the packet to the pcap file which is good enough for most kinds of captures.

Parameters
filethe file to write to
pthe packet to write

Definition at line 167 of file trace-helper.cc.

References create-module::file, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by HookDefaultSink().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetFilenameFromDevice()

std::string ns3::PcapHelper::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.

Parameters
prefixprefix string
deviceNetDevice
useObjectNamesuse node and device names instead of indexes
Returns
file name

Definition at line 80 of file trace-helper.cc.

References ns3::Names::FindName(), ns3::Node::GetId(), ns3::NetDevice::GetIfIndex(), ns3::NetDevice::GetNode(), NS_ABORT_MSG_UNLESS, and NS_LOG_FUNCTION.

Referenced by ns3::WimaxHelper::EnablePcapInternal(), ns3::CsmaHelper::EnablePcapInternal(), ns3::FdNetDeviceHelper::EnablePcapInternal(), ns3::LrWpanHelper::EnablePcapInternal(), ns3::PointToPointHelper::EnablePcapInternal(), ns3::YansWavePhyHelper::EnablePcapInternal(), and ns3::WifiPhyHelper::EnablePcapInternal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetFilenameFromInterfacePair()

std::string ns3::PcapHelper::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.

Parameters
prefixprefix string
objectinterface (such as Ipv4Interface or Ipv6Interface)
interfaceinterface id
useObjectNamesuse node and device names instead of indexes
Returns
file name

Definition at line 125 of file trace-helper.cc.

References ns3::Names::FindName(), ns3::Node::GetId(), ns3::Object::GetObject(), NS_ABORT_MSG_UNLESS, and NS_LOG_FUNCTION.

Referenced by ns3::InternetStackHelper::EnablePcapIpv4Internal(), and ns3::InternetStackHelper::EnablePcapIpv6Internal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HookDefaultSink()

template<typename T >
void ns3::PcapHelper::HookDefaultSink ( Ptr< T >  object,
std::string  traceName,
Ptr< PcapFileWrapper file 
)

Hook a trace source to the default trace sink.

Parameters
objectobject
traceNametrace source name
filefile wrapper

Definition at line 148 of file trace-helper.h.

References DefaultSink(), create-module::file, ns3::MakeBoundCallback(), NS_ASSERT_MSG, and test-ns3::result.

Referenced by ns3::CsmaHelper::EnablePcapInternal(), ns3::FdNetDeviceHelper::EnablePcapInternal(), and ns3::PointToPointHelper::EnablePcapInternal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SinkWithHeader()

void ns3::PcapHelper::SinkWithHeader ( Ptr< PcapFileWrapper file,
const Header header,
Ptr< const Packet p 
)
staticprivate

This trace sink passes a header separately from the packet to prevent creating a new packet (for performance reasons)

Parameters
filethe file to write to
headerheader of the packet
pthe packet to write
See also
DefaultSink

Definition at line 174 of file trace-helper.cc.

References create-module::file, ns3::Simulator::Now(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: