|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
21 #include "ns3/point-to-point-grid.h"
22 #include "ns3/internet-stack-helper.h"
23 #include "ns3/point-to-point-helper.h"
24 #include "ns3/constant-position-mobility-model.h"
25 #include "ns3/string.h"
26 #include "ns3/vector.h"
28 #include "ns3/ipv6-address-generator.h"
37 : m_xSize (nCols), m_ySize (nRows)
47 for (uint32_t y = 0; y < nRows; ++y)
53 for (uint32_t
x = 0;
x < nCols; ++
x)
61 Install (rowNodes.
Get (
x-1), rowNodes.
Get (
x)));
87 for (uint32_t i = 0; i <
m_nodes.size (); ++i)
90 for (uint32_t j = 0; j < rowNodes.
GetN (); ++j)
108 for (uint32_t j = 0; j < rowContainer.
GetN (); j+=2)
110 rowInterfaces.
Add (rowIp.
Assign (rowContainer.
Get (j)));
111 rowInterfaces.
Add (rowIp.
Assign (rowContainer.
Get (j+1)));
125 for (uint32_t j = 0; j < colContainer.
GetN (); j+=2)
127 colInterfaces.
Add (colIp.
Assign (colContainer.
Get (j)));
128 colInterfaces.
Add (colIp.
Assign (colContainer.
Get (j+1)));
150 for (uint32_t j = 0; j < rowContainer.
GetN (); j+=2)
153 addrHelper.
SetBase(v6network, prefix);
155 rowInterfaces.
Add (ic);
156 ic = addrHelper.
Assign (rowContainer.
Get (j+1));
157 rowInterfaces.
Add (ic);
171 for (uint32_t j = 0; j < colContainer.
GetN (); j+=2)
174 addrHelper.
SetBase(v6network, prefix);
176 colInterfaces.
Add (ic);
177 ic = addrHelper.
Assign (colContainer.
Get (j+1));
178 colInterfaces.
Add (ic);
187 double lrx,
double lry)
207 double xAdder = xDist /
m_xSize;
208 double yAdder = yDist /
m_ySize;
209 double yLoc = yDist / 2;
210 for (uint32_t i = 0; i <
m_ySize; ++i)
212 double xLoc = xDist / 2;
213 for (uint32_t j = 0; j <
m_xSize; ++j)
219 loc = CreateObject<ConstantPositionMobilityModel> ();
222 Vector locVec (xLoc, yLoc, 0);
223 loc->SetPosition (locVec);
234 if (row >
m_nodes.size () - 1 ||
235 col >
m_nodes.at (row).GetN () - 1)
237 NS_FATAL_ERROR (
"Index out of bounds in PointToPointGridHelper::GetNode.");
240 return (
m_nodes.at (row)).Get (col);
246 if (row >
m_nodes.size () - 1 ||
247 col >
m_nodes.at (row).GetN () - 1)
249 NS_FATAL_ERROR (
"Index out of bounds in PointToPointGridHelper::GetIpv4Address.");
272 if (row >
m_nodes.size () - 1 ||
273 col >
m_nodes.at (row).GetN () - 1)
275 NS_FATAL_ERROR (
"Index out of bounds in PointToPointGridHelper::GetIpv6Address.");
std::vector< Ipv6InterfaceContainer > m_colInterfaces6
IPv6 interfaces in a column.
holds a vector of ns3::NetDevice pointers
std::vector< NetDeviceContainer > m_rowDevices
NetDevices in a row.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Ipv4Address NewNetwork(void)
Increment the network number and reset the IP address counter to the base value provided in the SetBa...
Mobility model for which the current position does not change once it has been set and until it is se...
Every class exported by the ns3 library is enclosed in the ns3 namespace.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
static Ipv6Address GetNetwork(const Ipv6Prefix prefix)
Get the current network of the given Ipv6Prefix.
std::vector< NodeContainer > m_nodes
all the nodes in the grid
uint32_t m_ySize
Y size of the grid (number of rows)
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Ptr< Node > GetNode(uint32_t row, uint32_t col)
Ipv6Address GetIpv6Address(uint32_t row, uint32_t col)
This returns an Ipv6 address at the node specified by the (row, col) address.
uint32_t m_xSize
X size of the grid (number of columns)
Ipv4 addresses are stored in host order in this class.
Describes an IPv6 address.
uint32_t GetN(void) const
Get the number of Ptr<Node> stored in this container.
void SetBase(Ipv6Address network, Ipv6Prefix prefix, Ipv6Address base=Ipv6Address("::1"))
Set the base network number, network prefix, and base interface ID.
std::vector< Ipv6InterfaceContainer > m_rowInterfaces6
IPv6 interfaces in a row.
Helper class to auto-assign global IPv6 unicast addresses.
PointToPointGridHelper(uint32_t nRows, uint32_t nCols, PointToPointHelper pointToPoint)
Create a PointToPointGridHelper in order to easily create grid topologies using p2p links.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
std::vector< NetDeviceContainer > m_colDevices
NetDevices in a column.
Ipv6InterfaceContainer Assign(const NetDeviceContainer &c)
Allocate an Ipv6InterfaceContainer with auto-assigned addresses.
static Ipv6Address NextNetwork(const Ipv6Prefix prefix)
Get the next network according to the given Ipv6Prefix.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
std::vector< Ipv4InterfaceContainer > m_rowInterfaces
IPv4 interfaces in a row.
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Keep track of a set of IPv6 interfaces.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
void Add(Ptr< Ipv6 > ipv6, uint32_t interface)
Add a couple IPv6/interface.
void BoundingBox(double ulx, double uly, double lrx, double lry)
Sets up the node canvas locations for every node in the grid.
~PointToPointGridHelper()
void Add(const Ipv4InterfaceContainer &other)
Concatenate the entries in the other container with ours.
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
void AssignIpv6Addresses(Ipv6Address network, Ipv6Prefix prefix)
Assigns Ipv6 addresses to all the row and column interfaces.
Build a set of PointToPointNetDevice objects.
keep track of a set of node pointers.
Ipv4Address GetIpv4Address(uint32_t row, uint32_t col)
This returns an Ipv4 address at the node specified by the (row, col) address.
std::vector< Ipv4InterfaceContainer > m_colInterfaces
IPv4 interfaces in a column.
uint32_t GetN(void) const
Get the number of Ptr<NetDevice> stored in this container.
void AssignIpv4Addresses(Ipv4AddressHelper rowIp, Ipv4AddressHelper colIp)
Assigns Ipv4 addresses to all the row and column interfaces.
void InstallStack(InternetStackHelper stack)
static void Init(const Ipv6Address net, const Ipv6Prefix prefix, const Ipv6Address interfaceId="::1")
Initialise the base network and interfaceId for the generator.
Describes an IPv6 prefix.
aggregate IP/TCP/UDP functionality to existing Nodes.
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.