A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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
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.
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
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
std::vector< Ipv4InterfaceContainer > m_rowInterfaces
std::vector< NetDeviceContainer > m_rowDevices
Ipv4Address GetIpv4Address(uint32_t row, uint32_t col)
This returns an Ipv4 address at the node specified by the (row, col) address.
std::vector< Ipv6InterfaceContainer > m_colInterfaces6
tuple stack
Definition: first.py:34
Describes an IPv6 address.
Definition: ipv6-address.h:46
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:38
void InstallStack(InternetStackHelper stack)
Describes an IPv6 prefix.
Definition: ipv6-address.h:387
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
std::vector< Ipv4InterfaceContainer > m_colInterfaces
void BoundingBox(double ulx, double uly, double lrx, double lry)
Sets up the node canvas locations for every node in the grid.