22 #include "ns3/assert.h"
24 #include "ns3/object.h"
25 #include "ns3/names.h"
28 #include "ns3/packet-socket-factory.h"
29 #include "ns3/config.h"
30 #include "ns3/simulator.h"
31 #include "ns3/string.h"
32 #include "ns3/net-device.h"
33 #include "ns3/callback.h"
35 #include "ns3/node-list.h"
36 #include "ns3/core-config.h"
37 #include "ns3/arp-l3-protocol.h"
39 #include "ns3/ipv4-global-routing.h"
40 #include "ns3/ipv4-list-routing-helper.h"
41 #include "ns3/ipv4-static-routing-helper.h"
42 #include "ns3/ipv4-global-routing-helper.h"
43 #include "ns3/ipv6-static-routing-helper.h"
44 #include "ns3/ipv6-extension.h"
45 #include "ns3/ipv6-extension-demux.h"
46 #include "ns3/ipv6-extension-header.h"
47 #include "ns3/icmpv6-l4-protocol.h"
48 #include "ns3/global-router-interface.h"
49 #include "ns3/traffic-control-layer.h"
65 #define INTERFACE_CONTEXT
107 m_ipv4Enabled (true),
108 m_ipv6Enabled (true),
109 m_ipv4ArpJitterEnabled (true),
110 m_ipv6NsRsJitterEnabled (true)
120 SetTcp (
"ns3::TcpL4Protocol");
125 listRouting.
Add (staticRouting, 0);
126 listRouting.
Add (globalRouting, -10);
212 int64_t currentStream = stream;
222 currentStream += gr->AssignStreams (currentStream);
236 if (arpL3Protocol != 0)
238 currentStream += arpL3Protocol->AssignStreams (currentStream);
245 if (icmpv6L4Protocol != 0)
247 currentStream += icmpv6L4Protocol->AssignStreams (currentStream);
251 return (currentStream - stream);
299 "an InternetStack to a node with an existing Ipv4 object");
310 arp->SetAttribute (
"RequestJitter",
StringValue (
"ns3::ConstantRandomVariable[Constant=0.0]"));
315 ipv4->SetRoutingProtocol (ipv4Routing);
324 "an InternetStack to a node with an existing Ipv6 object");
334 icmpv6l4->SetAttribute (
"SolicitationJitter",
StringValue (
"ns3::ConstantRandomVariable[Constant=0.0]"));
339 ipv6->SetRoutingProtocol (ipv6Routing);
342 ipv6->RegisterExtensions ();
343 ipv6->RegisterOptions ();
359 Ptr<Node> node = Names::Find<Node> (nodeName);
380 InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
381 if (g_interfaceFileMapIpv4.find (pair) == g_interfaceFileMapIpv4.end ())
383 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
394 for ( InterfaceFileMapIpv4::const_iterator i = g_interfaceFileMapIpv4.begin ();
395 i != g_interfaceFileMapIpv4.end ();
398 if ((*i).first.first == ipv4)
413 NS_LOG_INFO (
"Call to enable Ipv4 pcap tracing but Ipv4 not enabled");
423 std::string filename;
424 if (explicitFilename)
446 NS_ASSERT_MSG (ipv4L3Protocol,
"InternetStackHelper::EnablePcapIpv4Internal(): "
447 "m_ipv4Enabled and ipv4L3Protocol inconsistent");
450 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnablePcapIpv4Internal(): "
451 "Unable to connect ipv4L3Protocol \"Tx\"");
454 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnablePcapIpv4Internal(): "
455 "Unable to connect ipv4L3Protocol \"Rx\"");
458 g_interfaceFileMapIpv4[std::make_pair (ipv4, interface)] =
file;
478 InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
479 if (g_interfaceFileMapIpv6.find (pair) == g_interfaceFileMapIpv6.end ())
481 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
492 for ( InterfaceFileMapIpv6::const_iterator i = g_interfaceFileMapIpv6.begin ();
493 i != g_interfaceFileMapIpv6.end ();
496 if ((*i).first.first == ipv6)
511 NS_LOG_INFO (
"Call to enable Ipv6 pcap tracing but Ipv6 not enabled");
521 std::string filename;
522 if (explicitFilename)
544 NS_ASSERT_MSG (ipv6L3Protocol,
"InternetStackHelper::EnablePcapIpv6Internal(): "
545 "m_ipv6Enabled and ipv6L3Protocol inconsistent");
548 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnablePcapIpv6Internal(): "
549 "Unable to connect ipv6L3Protocol \"Tx\"");
552 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnablePcapIpv6Internal(): "
553 "Unable to connect ipv6L3Protocol \"Rx\"");
556 g_interfaceFileMapIpv6[std::make_pair (ipv6, interface)] =
file;
583 InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
584 if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
586 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
609 InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
610 if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
612 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
633 InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
634 if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
636 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
669 InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
670 if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
672 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
678 #ifdef INTERFACE_CONTEXT
702 InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
703 if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
705 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
709 #ifdef INTERFACE_CONTEXT
711 << *packet << std::endl;
733 InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
734 if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
736 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
740 #ifdef INTERFACE_CONTEXT
742 << *packet << std::endl;
751 for ( InterfaceStreamMapIpv4::const_iterator i = g_interfaceStreamMapIpv4.begin ();
752 i != g_interfaceStreamMapIpv4.end ();
755 if ((*i).first.first == ipv4)
769 bool explicitFilename)
773 NS_LOG_INFO (
"Call to enable Ipv4 ascii tracing but Ipv4 not enabled");
802 std::string filename;
803 if (explicitFilename)
837 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnableAsciiIpv4Internal(): "
838 "Unable to connect ipv4L3Protocol \"Drop\"");
839 result = ipv4L3Protocol->TraceConnectWithoutContext (
"Tx",
841 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnableAsciiIpv4Internal(): "
842 "Unable to connect ipv4L3Protocol \"Tx\"");
843 result = ipv4L3Protocol->TraceConnectWithoutContext (
"Rx",
845 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnableAsciiIpv4Internal(): "
846 "Unable to connect ipv4L3Protocol \"Rx\"");
849 g_interfaceStreamMapIpv4[std::make_pair (ipv4, interface)] = theStream;
868 std::ostringstream oss;
876 oss <<
"/NodeList/" << node->
GetId () <<
"/$ns3::ArpL3Protocol/Drop";
884 oss <<
"/NodeList/" << node->
GetId () <<
"/$ns3::Ipv4L3Protocol/Drop";
887 oss <<
"/NodeList/" << node->
GetId () <<
"/$ns3::Ipv4L3Protocol/Tx";
890 oss <<
"/NodeList/" << node->
GetId () <<
"/$ns3::Ipv4L3Protocol/Rx";
894 g_interfaceStreamMapIpv4[std::make_pair (ipv4, interface)] = stream;
921 InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
922 if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
924 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
947 InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
948 if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
950 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
971 InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
972 if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
974 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
1007 InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
1008 if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
1010 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
1016 #ifdef INTERFACE_CONTEXT
1035 std::string context,
1040 InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
1041 if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
1043 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
1047 #ifdef INTERFACE_CONTEXT
1049 << *packet << std::endl;
1066 std::string context,
1071 InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
1072 if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
1074 NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
1078 #ifdef INTERFACE_CONTEXT
1080 << *packet << std::endl;
1089 for ( InterfaceStreamMapIpv6::const_iterator i = g_interfaceStreamMapIpv6.begin ();
1090 i != g_interfaceStreamMapIpv6.end ();
1093 if ((*i).first.first == ipv6)
1107 bool explicitFilename)
1111 NS_LOG_INFO (
"Call to enable Ipv6 ascii tracing but Ipv6 not enabled");
1140 std::string filename;
1141 if (explicitFilename)
1165 bool result = ipv6L3Protocol->TraceConnectWithoutContext (
"Drop",
1167 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnableAsciiIpv6Internal(): "
1168 "Unable to connect ipv6L3Protocol \"Drop\"");
1169 result = ipv6L3Protocol->TraceConnectWithoutContext (
"Tx",
1171 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnableAsciiIpv6Internal(): "
1172 "Unable to connect ipv6L3Protocol \"Tx\"");
1173 result = ipv6L3Protocol->TraceConnectWithoutContext (
"Rx",
1175 NS_ASSERT_MSG (result ==
true,
"InternetStackHelper::EnableAsciiIpv6Internal(): "
1176 "Unable to connect ipv6L3Protocol \"Rx\"");
1179 g_interfaceStreamMapIpv6[std::make_pair (ipv6, interface)] = theStream;
1198 std::ostringstream oss;
1201 oss <<
"/NodeList/" << node->
GetId () <<
"/$ns3::Ipv6L3Protocol/Drop";
1204 oss <<
"/NodeList/" << node->
GetId () <<
"/$ns3::Ipv6L3Protocol/Tx";
1207 oss <<
"/NodeList/" << node->
GetId () <<
"/$ns3::Ipv6L3Protocol/Rx";
1211 g_interfaceStreamMapIpv6[std::make_pair (ipv6, interface)] = stream;
bool m_ipv4ArpJitterEnabled
IPv4 ARP Jitter state (enabled/disabled) ?
bool m_ipv6NsRsJitterEnabled
IPv6 IPv6 NS and RS Jitter state (enabled/disabled) ?
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
Manage ASCII trace files for device models.
virtual void EnablePcapIpv6Internal(std::string prefix, Ptr< Ipv6 > ipv6, uint32_t interface, bool explicitFilename)
Enable pcap output the indicated Ipv6 and interface pair.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
static void Ipv4L3ProtocolDropSinkWithoutContext(Ptr< OutputStreamWrapper > stream, Ipv4Header const &header, Ptr< const Packet > packet, Ipv4L3Protocol::DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 dropped packet - Ascii output.
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::vector< Ptr< Node > >::const_iterator Iterator
Node container iterator.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Access to the IPv6 forwarding table, interfaces, and configuration.
Hold variables of type string.
static const uint8_t EXT_NUMBER
Fragmentation extension number.
Hold a value for an Attribute.
void SetIpv4ArpJitter(bool enable)
Enable/disable IPv4 ARP Jitter.
Manage pcap files for device models.
IPv6 layer implementation.
Demultiplexes IPv6 extensions.
void Write(Time t, Ptr< const Packet > p)
Write the next packet to file.
virtual Ipv4RoutingHelper * Copy(void) const =0
virtual constructor
Callback< R > MakeBoundCallback(R(*fnPtr)(TX), ARG a1)
Make Callbacks with one bound argument.
static InterfaceFileMapIpv4 g_interfaceFileMapIpv4
A mapping of Ipv4/interface pairs to pcap files.
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
ObjectFactory m_tcpFactory
TCP objects factory.
virtual Ipv6RoutingHelper * Copy(void) const =0
virtual constructor
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
static void DefaultDropSinkWithContext(Ptr< OutputStreamWrapper > file, std::string context, Ptr< const Packet > p)
Basic Drop default trace sink.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
aggregate IP/TCP/UDP functionality to existing Nodes.
std::map< InterfacePairIpv6, Ptr< PcapFileWrapper > > InterfaceFileMapIpv6
Ipv6/interface and Pcap file wrapper container.
static void Ipv4L3ProtocolRxSinkWithoutContext(Ptr< OutputStreamWrapper > stream, Ptr< const Packet > packet, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 received packet - Ascii output.
Iterator End(void) const
Get an iterator which indicates past-the-last Node in the container.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
static void Ipv6L3ProtocolDropSinkWithContext(Ptr< OutputStreamWrapper > stream, std::string context, Ipv6Header const &header, Ptr< const Packet > packet, Ipv6L3Protocol::DropReason reason, Ptr< Ipv6 > ipv6, uint32_t interface)
Sync function for IPv6 dropped packet - Ascii output.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
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. ...
std::map< InterfacePairIpv6, Ptr< OutputStreamWrapper > > InterfaceStreamMapIpv6
Ipv6/interface and output stream container.
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.
static InterfaceStreamMapIpv4 g_interfaceStreamMapIpv4
A mapping of Ipv4/interface pairs to ascii streams.
std::map< InterfacePairIpv4, Ptr< OutputStreamWrapper > > InterfaceStreamMapIpv4
Ipv4/interface and output stream container.
static void Ipv4L3ProtocolTxSinkWithoutContext(Ptr< OutputStreamWrapper > stream, Ptr< const Packet > packet, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 transmitted packet - Ascii output.
InternetStackHelper & operator=(const InternetStackHelper &o)
Copy constructor.
static void CreateAndAggregateObjectFromTypeId(Ptr< Node > node, const std::string typeId)
create an object from its TypeId and aggregates it to the node
DropReason
Reason why a packet has been dropped.
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
static void Ipv4L3ProtocolTxSinkWithContext(Ptr< OutputStreamWrapper > stream, std::string context, Ptr< const Packet > packet, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 transmitted packet - Ascii output.
virtual void EnablePcapIpv4Internal(std::string prefix, Ptr< Ipv4 > ipv4, uint32_t interface, bool explicitFilename)
Enable pcap output the indicated Ipv4 and interface pair.
NS_ASSERT_MSG(false,"Ipv4AddressGenerator::MaskToIndex(): Impossible")
void InstallAll(void) const
Aggregate IPv4, IPv6, UDP, and TCP stacks to all nodes in the simulation.
static void EnablePrinting(void)
Enable printing packets metadata.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
void SetIpv4StackInstall(bool enable)
Enable/disable IPv4 stack install.
static InterfaceFileMapIpv6 g_interfaceFileMapIpv6
A mapping of Ipv6/interface pairs to pcap files.
std::pair< Ptr< Ipv6 >, uint32_t > InterfacePairIpv6
Ipv6/interface pair.
A factory to create ns3::Ipv6RoutingProtocol objects.
void Reset(void)
Return helper internal state to that of a newly constructed one.
An implementation of the ICMPv6 protocol.
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
bool PcapHooked(Ptr< Ipv4 > ipv4)
checks if there is an hook to a Pcap wrapper
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...
bool m_ipv6Enabled
IPv6 install state (enabled/disabled) ?
a factory to create ns3::Ipv4RoutingProtocol objects
void Connect(std::string path, const CallbackBase &cb)
static void Ipv6L3ProtocolTxSinkWithoutContext(Ptr< OutputStreamWrapper > stream, Ptr< const Packet > packet, Ptr< Ipv6 > ipv6, uint32_t interface)
Sync function for IPv6 transmitted packet - Ascii output.
static void Ipv6L3ProtocolTxSinkWithContext(Ptr< OutputStreamWrapper > stream, std::string context, Ptr< const Packet > packet, Ptr< Ipv6 > ipv6, uint32_t interface)
Sync function for IPv6 transmitted packet - Ascii output.
Access to the IPv4 forwarding table, interfaces, and configuration.
Ptr< Packet > Copy(void) const
performs a COW copy of the packet.
virtual Ptr< Ipv6RoutingProtocol > Create(Ptr< Node > node) const =0
static void Ipv6L3ProtocolRxSinkWithoutContext(Ptr< OutputStreamWrapper > stream, Ptr< const Packet > packet, Ptr< Ipv6 > ipv6, uint32_t interface)
Sync function for IPv6 received packet - Ascii output.
bool TraceConnectWithoutContext(std::string name, const CallbackBase &cb)
Connect a TraceSource to a Callback without a context.
Implement the IPv4 layer.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
Helper class that adds ns3::Ipv6StaticRouting objects.
void Initialize(void)
Initialize the helper to its default values.
Iterator Begin(void) const
Get an iterator which refers to the first Node in the container.
void SetTcp(std::string tid)
set the Tcp stack which will not need any other parameter.
static void Ipv6L3ProtocolDropSinkWithoutContext(Ptr< OutputStreamWrapper > stream, Ipv6Header const &header, Ptr< const Packet > packet, Ipv6L3Protocol::DropReason reason, Ptr< Ipv6 > ipv6, uint32_t interface)
Sync function for IPv6 dropped packet - Ascii output.
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
void Set(std::string name, const AttributeValue &value)
Set an attribute to be set during construction.
static Time Now(void)
Return the current simulation virtual time.
void Add(const Ipv4RoutingHelper &routing, int16_t priority)
static void Ipv6L3ProtocolRxSinkWithContext(Ptr< OutputStreamWrapper > stream, std::string context, Ptr< const Packet > packet, Ptr< Ipv6 > ipv6, uint32_t interface)
Sync function for IPv6 received packet - Ascii output.
virtual ~InternetStackHelper(void)
Destroy the InternetStackHelper.
An interface aggregated to a node to provide global routing info.
static NodeContainer GetGlobal(void)
Create a NodeContainer that contains a list of all nodes created through NodeContainer::Create() and ...
std::pair< Ptr< Ipv4 >, uint32_t > InterfacePairIpv4
Ipv4/interface pair.
static void Ipv4L3ProtocolDropSinkWithContext(Ptr< OutputStreamWrapper > stream, std::string context, Ipv4Header const &header, Ptr< const Packet > packet, Ipv4L3Protocol::DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 dropped packet - Ascii output.
Instantiate subclasses of ns3::Object.
const Ipv6RoutingHelper * m_routingv6
IPv6 routing helper.
int64_t AssignStreams(NodeContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
uint32_t GetId(void) const
static void Ipv4L3ProtocolRxSinkWithContext(Ptr< OutputStreamWrapper > stream, std::string context, Ptr< const Packet > packet, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 received packet - Ascii output.
Helper class that adds ns3::Ipv4StaticRouting objects.
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...
virtual Ptr< Ipv4RoutingProtocol > Create(Ptr< Node > node) const =0
An implementation of the ARP protocol.
DropReason
Reason why a packet has been dropped.
Helper class that adds ns3::Ipv4GlobalRouting objects.
Helper class that adds ns3::Ipv4ListRouting objects.
bool AsciiHooked(Ptr< Ipv4 > ipv4)
checks if there is an hook to an ascii output stream
virtual void EnableAsciiIpv6Internal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< Ipv6 > ipv6, uint32_t interface, bool explicitFilename)
Enable ascii trace output on the indicated Ipv6 and interface pair.
InternetStackHelper(void)
Create a new InternetStackHelper which uses a mix of static routing and global routing by default...
A base class which provides memory management and object aggregation.
std::map< InterfacePairIpv4, Ptr< PcapFileWrapper > > InterfaceFileMapIpv4
Ipv4/interface and Pcap file wrapper container.
const Ipv4RoutingHelper * m_routing
IPv4 routing helper.
void SetIpv6NsRsJitter(bool enable)
Enable/disable IPv6 NS and RS Jitter.
static InterfaceStreamMapIpv6 g_interfaceStreamMapIpv6
A mapping of Ipv6/interface pairs to pcap files.
void SetRoutingHelper(const Ipv4RoutingHelper &routing)
std::ostream * GetStream(void)
Return a pointer to an ostream previously set in the wrapper.
void AddHeader(const Header &header)
Add header to this packet.
bool m_ipv4Enabled
IPv4 install state (enabled/disabled) ?
static void Ipv6L3ProtocolRxTxSink(Ptr< const Packet > p, Ptr< Ipv6 > ipv6, uint32_t interface)
Sync function for IPv6 packet - Pcap output.
virtual void EnableAsciiIpv4Internal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< Ipv4 > ipv4, uint32_t interface, bool explicitFilename)
Enable ascii trace output on the indicated Ipv4 and interface pair.
void SetIpv6StackInstall(bool enable)
Enable/disable IPv6 stack install.
static void Ipv4L3ProtocolRxTxSink(Ptr< const Packet > p, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 packet - Pcap output.