19 #include "ns3/point-to-point-grid.h" 
   20 #include "ns3/internet-stack-helper.h" 
   21 #include "ns3/point-to-point-helper.h" 
   22 #include "ns3/constant-position-mobility-model.h" 
   23 #include "ns3/string.h" 
   24 #include "ns3/vector.h" 
   26 #include "ns3/ipv6-address-generator.h" 
   35   : m_xSize (nCols), m_ySize (nRows)
 
   45   for (uint32_t y = 0; y < nRows; ++y)
 
   51       for (uint32_t 
x = 0; 
x < nCols; ++
x)
 
   58               rowDevices.
Add (pointToPoint.
 
   59                               Install (rowNodes.
Get (
x-1), rowNodes.
Get (
x)));
 
   65               colDevices.
Add (pointToPoint.
 
   85   for (uint32_t i = 0; i < 
m_nodes.size (); ++i)
 
   88       for (uint32_t j = 0; j < rowNodes.
GetN (); ++j)
 
  106       for (uint32_t j = 0; j < rowContainer.
GetN (); j+=2)
 
  108           rowInterfaces.
Add (rowIp.
Assign (rowContainer.
Get (j))); 
 
  109           rowInterfaces.
Add (rowIp.
Assign (rowContainer.
Get (j+1)));
 
  123       for (uint32_t j = 0; j < colContainer.
GetN (); j+=2)
 
  125           colInterfaces.
Add (colIp.
Assign (colContainer.
Get (j))); 
 
  126           colInterfaces.
Add (colIp.
Assign (colContainer.
Get (j+1)));
 
  148       for (uint32_t j = 0; j < rowContainer.
GetN (); j+=2)
 
  151           addrHelper.
SetBase(v6network, prefix);
 
  153           rowInterfaces.
Add (ic);
 
  154           ic = addrHelper.
Assign (rowContainer.
Get (j+1));
 
  155           rowInterfaces.
Add (ic);
 
  169       for (uint32_t j = 0; j < colContainer.
GetN (); j+=2)
 
  172           addrHelper.
SetBase(v6network, prefix);
 
  174           colInterfaces.
Add (ic);
 
  175           ic = addrHelper.
Assign (colContainer.
Get (j+1));
 
  176           colInterfaces.
Add (ic);
 
  185                                      double lrx, 
double lry)
 
  205   double xAdder = xDist / 
m_xSize;
 
  206   double yAdder = yDist / 
m_ySize;
 
  207   double yLoc = yDist / 2;
 
  208   for (uint32_t i = 0; i < 
m_ySize; ++i)
 
  210       double xLoc = xDist / 2;
 
  211       for (uint32_t j = 0; j < 
m_xSize; ++j)
 
  217               loc = CreateObject<ConstantPositionMobilityModel> ();
 
  220           Vector locVec (xLoc, yLoc, 0);
 
  221           loc->SetPosition (locVec);
 
  232   if (row > 
m_nodes.size () - 1 || 
 
  233       col > 
m_nodes.at (row).GetN () - 1) 
 
  235       NS_FATAL_ERROR (
"Index out of bounds in PointToPointGridHelper::GetNode.");
 
  238   return (
m_nodes.at (row)).Get (col);
 
  244   if (row > 
m_nodes.size () - 1 || 
 
  245       col > 
m_nodes.at (row).GetN () - 1) 
 
  247       NS_FATAL_ERROR (
"Index out of bounds in PointToPointGridHelper::GetIpv4Address.");
 
  270   if (row > 
m_nodes.size () - 1 ||
 
  271       col > 
m_nodes.at (row).GetN () - 1)
 
  273       NS_FATAL_ERROR (
"Index out of bounds in PointToPointGridHelper::GetIpv4Address.");
 
Keep track of a set of IPv6 interfaces. 
holds a vector of std::pair of Ptr<Ipv4> and interface index. 
std::vector< NetDeviceContainer > m_colDevices
void AssignIpv4Addresses(Ipv4AddressHelper rowIp, Ipv4AddressHelper colIp)
Ptr< NetDevice > Get(uint32_t i) const 
Get the Ptr<NetDevice> stored in this container at a given index. 
void AssignIpv6Addresses(Ipv6Address network, Ipv6Prefix prefix)
void Add(Ptr< Ipv6 > ipv6, uint32_t interface)
Add a couple IPv6/interface. 
Mobility model for which the current position does not change once it has been set and until it is se...
#define NS_LOG_COMPONENT_DEFINE(name)
aggregate IP/TCP/UDP functionality to existing Nodes. 
static Ipv6Address NextNetwork(const Ipv6Prefix prefix)
Get the next network acoording to the given Ipv6Prefix. 
void SetBase(Ipv6Address network, Ipv6Prefix prefix, Ipv6Address base=Ipv6Address("::1"))
Set the base network number, network prefix, and base interface ID. 
Ipv6Address GetIpv6Address(uint32_t row, uint32_t col)
Build a set of PointToPointNetDevice objects. 
Ptr< Node > GetNode(uint32_t row, uint32_t col)
#define NS_FATAL_ERROR(msg)
fatal error handling 
std::vector< NodeContainer > m_nodes
Ipv6InterfaceContainer Assign(const NetDeviceContainer &c)
Allocate an Ipv6InterfaceContainer with auto-assigned addresses. 
uint32_t GetN(void) const 
Get the number of Ptr<Node> stored in this container. 
uint32_t GetN(void) const 
Get the number of Ptr<NetDevice> stored in this container. 
PointToPointGridHelper(uint32_t nRows, uint32_t nCols, PointToPointHelper pointToPoint)
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container. 
static void Init(const Ipv6Address net, const Ipv6Prefix prefix, const Ipv6Address interfaceId="::1")
Initialise the base network and interfaceId for the generator. 
holds a vector of ns3::NetDevice pointers 
std::vector< Ipv6InterfaceContainer > m_rowInterfaces6
std::vector< Ipv4InterfaceContainer > m_rowInterfaces
std::vector< NetDeviceContainer > m_rowDevices
void AggregateObject(Ptr< Object > other)
Ipv4Address GetIpv4Address(uint32_t row, uint32_t col)
keep track of a set of node pointers. 
std::vector< Ipv6InterfaceContainer > m_colInterfaces6
void Install(std::string nodeName) const 
~PointToPointGridHelper()
Helper class to auto-assign global IPv6 unicast addresses. 
Describes an IPv6 address. 
Ipv4 addresses are stored in host order in this class. 
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
Ptr< Node > Get(uint32_t i) const 
Get the Ptr<Node> stored in this container at a given index. 
void InstallStack(InternetStackHelper stack)
Describes an IPv6 prefix. It is just a bitmask like Ipv4Mask. 
Ipv4Address NewNetwork(void)
Increment the network number and reset the IP address counter to the base value provided in the SetBa...
A helper class to make life easier while doing simple IPv4 address assignment in scripts. 
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer. 
std::vector< Ipv4InterfaceContainer > m_colInterfaces
void Add(Ipv4InterfaceContainer other)
void BoundingBox(double ulx, double uly, double lrx, double lry)
Ptr< T > GetObject(void) const 
static Ipv6Address GetNetwork(const Ipv6Prefix prefix)
Get the current network of the given Ipv6Prefix.