A Discrete-Event Network Simulator
API
point-to-point-grid.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 as
5  * published by the Free Software Foundation;
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  *
16  * Author: Josh Pelkey <jpelkey@gatech.edu>
17  */
18 
19 #ifndef POINT_TO_POINT_GRID_HELPER_H
20 #define POINT_TO_POINT_GRID_HELPER_H
21 
22 #include <vector>
23 
24 #include "internet-stack-helper.h"
25 #include "point-to-point-helper.h"
26 #include "ipv4-address-helper.h"
27 #include "ipv6-address-helper.h"
30 #include "net-device-container.h"
31 
32 namespace ns3 {
33 
41 {
42 public:
55  PointToPointGridHelper (uint32_t nRows,
56  uint32_t nCols,
58 
60 
69  Ptr<Node> GetNode (uint32_t row, uint32_t col);
70 
87  Ipv4Address GetIpv4Address (uint32_t row, uint32_t col);
88 
105  Ipv6Address GetIpv6Address (uint32_t row, uint32_t col);
106 
112 
123 
131  void AssignIpv6Addresses (Ipv6Address network, Ipv6Prefix prefix);
132 
142  void BoundingBox (double ulx, double uly, double lrx, double lry);
143 
144 private:
145  uint32_t m_xSize;
146  uint32_t m_ySize;
147  std::vector<NetDeviceContainer> m_rowDevices;
148  std::vector<NetDeviceContainer> m_colDevices;
149  std::vector<Ipv4InterfaceContainer> m_rowInterfaces;
150  std::vector<Ipv4InterfaceContainer> m_colInterfaces;
151  std::vector<Ipv6InterfaceContainer> m_rowInterfaces6;
152  std::vector<Ipv6InterfaceContainer> m_colInterfaces6;
153  std::vector<NodeContainer> m_nodes;
154 };
155 
156 } // namespace ns3
157 
158 #endif /* POINT_TO_POINT_GRID_HELPER_H */
tuple pointToPoint
Definition: first.py:28
std::vector< NetDeviceContainer > m_colDevices
NetDevices in a column.
void AssignIpv4Addresses(Ipv4AddressHelper rowIp, Ipv4AddressHelper colIp)
Assigns Ipv4 addresses to all the row and column interfaces.
void AssignIpv6Addresses(Ipv6Address network, Ipv6Prefix prefix)
Assigns Ipv6 addresses to all the row and column interfaces.
uint32_t m_xSize
X size of the grid (number of columns)
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper to make it easier to create a grid topology with p2p links.
Ipv6Address GetIpv6Address(uint32_t row, uint32_t col)
This returns an Ipv6 address at the node specified by the (row, col) address.
Build a set of PointToPointNetDevice objects.
Ptr< Node > GetNode(uint32_t row, uint32_t col)
std::vector< NodeContainer > m_nodes
all the nodes in the grid
PointToPointGridHelper(uint32_t nRows, uint32_t nCols, PointToPointHelper pointToPoint)
Create a PointToPointGridHelper in order to easily create grid topologies using p2p links...
std::vector< Ipv6InterfaceContainer > m_rowInterfaces6
IPv6 interfaces in a row.
std::vector< Ipv4InterfaceContainer > m_rowInterfaces
IPv4 interfaces in a row.
std::vector< NetDeviceContainer > m_rowDevices
NetDevices in a row.
Ipv4Address GetIpv4Address(uint32_t row, uint32_t col)
This returns an Ipv4 address at the node specified by the (row, col) address.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::vector< Ipv6InterfaceContainer > m_colInterfaces6
IPv6 interfaces in a column.
tuple stack
Definition: first.py:34
Describes an IPv6 address.
Definition: ipv6-address.h:48
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:40
void InstallStack(InternetStackHelper stack)
Describes an IPv6 prefix.
Definition: ipv6-address.h:394
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
uint32_t m_ySize
Y size of the grid (number of rows)
std::vector< Ipv4InterfaceContainer > m_colInterfaces
IPv4 interfaces in a column.
void BoundingBox(double ulx, double uly, double lrx, double lry)
Sets up the node canvas locations for every node in the grid.