77 #include "ns3/core-module.h" 
   78 #include "ns3/internet-module.h" 
   79 #include "ns3/applications-module.h" 
   80 #include "ns3/fd-net-device-module.h" 
   87 main (
int argc, 
char *argv[])
 
   89   std::string deviceName (
"eth1");
 
   90   std::string encapMode (
"Dix");
 
   91   bool clientMode = 
false;
 
   92   bool serverMode = 
false;
 
  101   cmd.
AddValue (
"client", 
"client mode", clientMode);
 
  102   cmd.
AddValue (
"server", 
"server mode", serverMode);
 
  103   cmd.
AddValue (
"deviceName", 
"device name", deviceName);
 
  104   cmd.
AddValue (
"stopTime", 
"stop time (seconds)", stopTime);
 
  105   cmd.
AddValue (
"encapsulationMode", 
"encapsulation mode of emu device (\"Dix\" [default] or \"Llc\")", encapMode);
 
  106   cmd.
AddValue (
"nNodes", 
"number of nodes to create (>= 2)", nNodes);
 
  108   cmd.
Parse (argc, argv);
 
  115   if (clientMode && serverMode)
 
  117       NS_FATAL_ERROR(
"Error, both client and server options cannot be enabled.");
 
  122   nNodes = nNodes < 2 ? 2 : nNodes;
 
  147   ipv4.
SetBase (
"10.1.1.0", 
"255.255.255.0");
 
  181       apps = server.Install (n.
Get (0));
 
  191       uint32_t maxPacketCount = 20;
 
  194       client.SetAttribute (
"MaxPackets", 
UintegerValue (maxPacketCount));
 
  195       client.SetAttribute (
"Interval", 
TimeValue (interPacketInterval));
 
  196       client.SetAttribute (
"PacketSize", 
UintegerValue (packetSize));
 
  197       apps = client.Install (n.
Get (0));
 
  208       apps = server.Install (n.
Get (1));
 
  215       uint32_t packetSize = 1024;
 
  216       uint32_t maxPacketCount = 20;
 
  220       client.SetAttribute (
"Interval", 
TimeValue (interPacketInterval));
 
  221       client.SetAttribute (
"PacketSize", 
UintegerValue (packetSize));
 
  222       apps = client.Install (n.
Get (0));
 
holds a vector of ns3::Application pointers. 
Simulation virtual time values and global simulation resolution. 
virtual NetDeviceContainer Install(Ptr< Node > node) const 
This method creates a FdNetDevice and associates it to a node. 
Smart pointer class similar to boost::intrusive_ptr. 
AttributeValue implementation for Boolean. 
holds a vector of std::pair of Ptr and interface index. 
Hold variables of type string. 
Ptr< NetDevice > Get(uint32_t i) const 
Get the Ptr stored in this container at a given index. 
Create an application which sends a UDP packet and waits for an echo of this packet. 
static void Run(void)
Run the simulation. 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
aggregate IP/TCP/UDP functionality to existing Nodes. 
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO. 
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate. 
Ipv4Address NewAddress(void)
Increment the IP address counter used to allocate IP addresses. 
void SetAttribute(std::string n1, const AttributeValue &v1)
Create a server application which waits for input UDP packets and sends them back to the original sen...
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 ...
AttributeValue implementation for Time. 
Hold an unsigned integer type. 
holds a vector of ns3::NetDevice pointers 
static void Bind(std::string name, const AttributeValue &value)
Iterate over the set of GlobalValues until a matching name is found and then set its value with Globa...
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
Parse command-line arguments. 
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy(). 
void SetDeviceName(std::string deviceName)
Set the device name of this device. 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
keep track of a set of node pointers. 
void Install(std::string nodeName) const 
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
Ipv4 addresses are stored in host order in this class. 
void Stop(Time stop)
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter...
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
void AddValue(const std::string &name, const std::string &help, T &value)
Add a program argument, assigning to POD. 
static void Stop(void)
Tell the Simulator the calling event should be the last one executed. 
virtual void SetAddress(Address address)
Set the address of this interface. 
Ptr< Node > Get(uint32_t i) const 
Get the Ptr stored in this container at a given index. 
Time Seconds(double value)
Construct a Time in the indicated unit. 
void Parse(int argc, char *argv[])
Parse the program arguments. 
A helper class to make life easier while doing simple IPv4 address assignment in scripts. 
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...
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer. 
static const uint32_t packetSize
void SetAttribute(std::string name, const AttributeValue &value)
Record an attribute to be set in each Application after it is is created. 
a NetDevice to read/write network traffic from/into a file descriptor. 
build a set of FdNetDevice objects attached to a physical network interface 
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address. 
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const