151 #include "ns3/assert.h" 
  153 #include "ns3/object.h" 
  154 #include "ns3/names.h" 
  155 #include "ns3/ipv4.h" 
  156 #include "ns3/ipv6.h" 
  157 #include "ns3/packet-socket-factory.h" 
  158 #include "ns3/config.h" 
  159 #include "ns3/simulator.h" 
  160 #include "ns3/string.h" 
  161 #include "ns3/net-device.h" 
  162 #include "ns3/callback.h" 
  163 #include "ns3/node.h" 
  164 #include "ns3/node-list.h" 
  165 #include "ns3/core-config.h" 
  166 #include "ns3/arp-l3-protocol.h" 
  168 #include "ns3/ipv4-global-routing.h" 
  169 #include "ns3/ipv4-list-routing-helper.h" 
  170 #include "ns3/ipv4-static-routing-helper.h" 
  171 #include "ns3/ipv4-global-routing-helper.h" 
  172 #include "ns3/ipv6-list-routing-helper.h" 
  173 #include "ns3/ipv6-static-routing-helper.h" 
  174 #include "ns3/ipv6-extension.h" 
  175 #include "ns3/ipv6-extension-demux.h" 
  176 #include "ns3/ipv6-extension-header.h" 
  177 #include "ns3/icmpv6-l4-protocol.h" 
  178 #include "ns3/global-router-interface.h" 
  194 #define INTERFACE_CONTEXT 
  236     m_ipv4Enabled (true),
 
  237     m_ipv6Enabled (true),
 
  238     m_ipv4ArpJitterEnabled (true),
 
  239     m_ipv6NsRsJitterEnabled (true)
 
  249   SetTcp (
"ns3::TcpL4Protocol");
 
  255   listRouting.
Add (staticRouting, 0);
 
  256   listRouting.
Add (globalRouting, -10);
 
  257   listRoutingv6.
Add (staticRoutingv6, 0);
 
  343   int64_t currentStream = stream;
 
  353               currentStream += gr->AssignStreams (currentStream);
 
  367           if (arpL3Protocol != 0)
 
  369               currentStream += arpL3Protocol->AssignStreams (currentStream);
 
  376           if (icmpv6L4Protocol != 0)
 
  378               currentStream += icmpv6L4Protocol->AssignStreams (currentStream);
 
  382   return (currentStream - stream);
 
  430                           "an InternetStack to a node with an existing Ipv4 object");
 
  441           arp->SetAttribute (
"RequestJitter", 
StringValue (
"ns3::ConstantRandomVariable[Constant=0.0]"));
 
  446       ipv4->SetRoutingProtocol (ipv4Routing);
 
  455                           "an InternetStack to a node with an existing Ipv6 object");
 
  465           icmpv6l4->SetAttribute (
"SolicitationJitter", 
StringValue (
"ns3::ConstantRandomVariable[Constant=0.0]"));
 
  470       ipv6->SetRoutingProtocol (ipv6Routing);
 
  473       ipv6->RegisterExtensions ();
 
  474       ipv6->RegisterOptions ();
 
  489   Ptr<Node> node = Names::Find<Node> (nodeName);
 
  510   InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
  511   if (g_interfaceFileMapIpv4.find (pair) == g_interfaceFileMapIpv4.end ())
 
  513       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  524   for (  InterfaceFileMapIpv4::const_iterator i = g_interfaceFileMapIpv4.begin (); 
 
  525          i != g_interfaceFileMapIpv4.end (); 
 
  528       if ((*i).first.first == ipv4)
 
  543       NS_LOG_INFO (
"Call to enable Ipv4 pcap tracing but Ipv4 not enabled");
 
  553   std::string filename;
 
  554   if (explicitFilename)
 
  576       NS_ASSERT_MSG (ipv4L3Protocol, 
"InternetStackHelper::EnablePcapIpv4Internal(): " 
  577                      "m_ipv4Enabled and ipv4L3Protocol inconsistent");
 
  580       NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnablePcapIpv4Internal():  " 
  581                      "Unable to connect ipv4L3Protocol \"Tx\"");
 
  584       NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnablePcapIpv4Internal():  " 
  585                      "Unable to connect ipv4L3Protocol \"Rx\"");
 
  588   g_interfaceFileMapIpv4[std::make_pair (ipv4, interface)] = file;
 
  608   InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
 
  609   if (g_interfaceFileMapIpv6.find (pair) == g_interfaceFileMapIpv6.end ())
 
  611       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  622   for (  InterfaceFileMapIpv6::const_iterator i = g_interfaceFileMapIpv6.begin (); 
 
  623          i != g_interfaceFileMapIpv6.end (); 
 
  626       if ((*i).first.first == ipv6)
 
  641       NS_LOG_INFO (
"Call to enable Ipv6 pcap tracing but Ipv6 not enabled");
 
  651   std::string filename;
 
  652   if (explicitFilename)
 
  674       NS_ASSERT_MSG (ipv6L3Protocol, 
"InternetStackHelper::EnablePcapIpv6Internal(): " 
  675                      "m_ipv6Enabled and ipv6L3Protocol inconsistent");
 
  678       NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnablePcapIpv6Internal():  " 
  679                      "Unable to connect ipv6L3Protocol \"Tx\"");
 
  682       NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnablePcapIpv6Internal():  " 
  683                      "Unable to connect ipv6L3Protocol \"Rx\"");
 
  686   g_interfaceFileMapIpv6[std::make_pair (ipv6, interface)] = file;
 
  713   InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
  714   if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
 
  716       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  739   InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
  740   if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
 
  742       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  763   InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
  764   if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
 
  766       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  799   InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
  800   if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
 
  802       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  808 #ifdef INTERFACE_CONTEXT 
  832   InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
  833   if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
 
  835       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  839 #ifdef INTERFACE_CONTEXT 
  841                         << *packet << std::endl;
 
  863   InterfacePairIpv4 pair = std::make_pair (ipv4, interface);
 
  864   if (g_interfaceStreamMapIpv4.find (pair) == g_interfaceStreamMapIpv4.end ())
 
  866       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
  870 #ifdef INTERFACE_CONTEXT 
  872                         << *packet << std::endl;
 
  881   for (  InterfaceStreamMapIpv4::const_iterator i = g_interfaceStreamMapIpv4.begin (); 
 
  882          i != g_interfaceStreamMapIpv4.end (); 
 
  885       if ((*i).first.first == ipv4)
 
  899   bool explicitFilename)
 
  903       NS_LOG_INFO (
"Call to enable Ipv4 ascii tracing but Ipv4 not enabled");
 
  932       std::string filename;
 
  933       if (explicitFilename)
 
  967           NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnableAsciiIpv4Internal():  " 
  968                          "Unable to connect ipv4L3Protocol \"Drop\"");
 
  969           result = ipv4L3Protocol->TraceConnectWithoutContext (
"Tx", 
 
  971           NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnableAsciiIpv4Internal():  " 
  972                          "Unable to connect ipv4L3Protocol \"Tx\"");
 
  973           result = ipv4L3Protocol->TraceConnectWithoutContext (
"Rx", 
 
  975           NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnableAsciiIpv4Internal():  " 
  976                          "Unable to connect ipv4L3Protocol \"Rx\"");
 
  979       g_interfaceStreamMapIpv4[std::make_pair (ipv4, interface)] = theStream;
 
  998       std::ostringstream oss;
 
 1006       oss << 
"/NodeList/" << node->
GetId () << 
"/$ns3::ArpL3Protocol/Drop";
 
 1014       oss << 
"/NodeList/" << node->
GetId () << 
"/$ns3::Ipv4L3Protocol/Drop";
 
 1017       oss << 
"/NodeList/" << node->
GetId () << 
"/$ns3::Ipv4L3Protocol/Tx";
 
 1020       oss << 
"/NodeList/" << node->
GetId () << 
"/$ns3::Ipv4L3Protocol/Rx";
 
 1024   g_interfaceStreamMapIpv4[std::make_pair (ipv4, interface)] = stream;
 
 1051   InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
 
 1052   if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
 
 1054       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
 1077   InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
 
 1078   if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
 
 1080       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
 1101   InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
 
 1102   if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
 
 1104       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
 1124   std::string context,
 
 1137   InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
 
 1138   if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
 
 1140       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
 1146 #ifdef INTERFACE_CONTEXT 
 1165   std::string context,
 
 1170   InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
 
 1171   if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
 
 1173       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
 1177 #ifdef INTERFACE_CONTEXT 
 1179                         << *packet << std::endl;
 
 1196   std::string context,
 
 1201   InterfacePairIpv6 pair = std::make_pair (ipv6, interface);
 
 1202   if (g_interfaceStreamMapIpv6.find (pair) == g_interfaceStreamMapIpv6.end ())
 
 1204       NS_LOG_INFO (
"Ignoring packet to/from interface " << interface);
 
 1208 #ifdef INTERFACE_CONTEXT 
 1210                         << *packet << std::endl;
 
 1219   for (  InterfaceStreamMapIpv6::const_iterator i = g_interfaceStreamMapIpv6.begin (); 
 
 1220          i != g_interfaceStreamMapIpv6.end (); 
 
 1223       if ((*i).first.first == ipv6)
 
 1237   bool explicitFilename)
 
 1241       NS_LOG_INFO (
"Call to enable Ipv6 ascii tracing but Ipv6 not enabled");
 
 1270       std::string filename;
 
 1271       if (explicitFilename)
 
 1295           bool result = ipv6L3Protocol->TraceConnectWithoutContext (
"Drop",
 
 1297           NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnableAsciiIpv6Internal():  " 
 1298                          "Unable to connect ipv6L3Protocol \"Drop\"");
 
 1299           result = ipv6L3Protocol->TraceConnectWithoutContext (
"Tx", 
 
 1301           NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnableAsciiIpv6Internal():  " 
 1302                          "Unable to connect ipv6L3Protocol \"Tx\"");
 
 1303           result = ipv6L3Protocol->TraceConnectWithoutContext (
"Rx", 
 
 1305           NS_ASSERT_MSG (result == 
true, 
"InternetStackHelper::EnableAsciiIpv6Internal():  " 
 1306                          "Unable to connect ipv6L3Protocol \"Rx\"");
 
 1309       g_interfaceStreamMapIpv6[std::make_pair (ipv6, interface)] = theStream;
 
 1328       std::ostringstream oss;
 
 1331       oss << 
"/NodeList/" << node->
GetId () << 
"/$ns3::Ipv6L3Protocol/Drop";
 
 1334       oss << 
"/NodeList/" << node->
GetId () << 
"/$ns3::Ipv6L3Protocol/Tx";
 
 1337       oss << 
"/NodeList/" << node->
GetId () << 
"/$ns3::Ipv6L3Protocol/Rx";
 
 1341   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. 
 
Introspection did not find any typical Config paths. 
 
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. 
 
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. 
 
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. 
 
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
 
static NodeContainer GetGlobal(void)
Create a NodeContainer that contains a list of all nodes created through NodeContainer::Create() and ...
 
void Add(const Ipv6RoutingHelper &routing, int16_t priority)
 
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. 
 
Ptr< PcapFileWrapper > CreateFile(std::string filename, std::ios::openmode filemode, uint32_t dataLinkType, uint32_t snapLen=std::numeric_limits< uint32_t >::max(), int32_t tzCorrection=0)
Create and initialize a pcap file. 
 
Helper class that adds ns3::Ipv4GlobalRouting objects. 
 
Helper class that adds ns3::Ipv6ListRouting 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. 
 
DropReason
Reason why a packet has been dropped. 
 
static void Ipv4L3ProtocolRxTxSink(Ptr< const Packet > p, Ptr< Ipv4 > ipv4, uint32_t interface)
Sync function for IPv4 packet - Pcap output.