/usr/include/ns3/point-to-point-dumbbell.h is in libns3-dev 3.13+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: George F. Riley<riley@ece.gatech.edu>
*/
// Define an object to create a dumbbell topology.
#ifndef POINT_TO_POINT_DUMBBELL_HELPER_H
#define POINT_TO_POINT_DUMBBELL_HELPER_H
#include <string>
#include "point-to-point-helper.h"
#include "ipv4-address-helper.h"
#include "internet-stack-helper.h"
#include "ipv4-interface-container.h"
namespace ns3 {
/**
* \ingroup pointtopointlayout
*
* \brief A helper to make it easier to create a dumbbell topology
* with p2p links
*/
class PointToPointDumbbellHelper
{
public:
/**
* Create a PointToPointDumbbellHelper in order to easily create
* dumbbell topologies using p2p links
*
* \param nLeftLeaf number of left side leaf nodes in the dumbbell
*
* \param leftHelper PointToPointHelper used to install the links
* between the left leaf nodes and the left-most
* router
*
* \param nRightLeaf number of right side leaf nodes in the dumbbell
*
* \param rightHelper PointToPointHelper used to install the links
* between the right leaf nodes and the right-most
* router
*
* \param bottleneckHelper PointToPointHelper used to install the link
* between the inner-routers, usually known as
* the bottleneck link
*/
PointToPointDumbbellHelper (uint32_t nLeftLeaf,
PointToPointHelper leftHelper,
uint32_t nRightLeaf,
PointToPointHelper rightHelper,
PointToPointHelper bottleneckHelper);
~PointToPointDumbbellHelper ();
public:
/**
* \returns pointer to the node of the left side bottleneck
* router
*/
Ptr<Node> GetLeft () const;
/**
* \returns pointer to the i'th left side leaf node
*/
Ptr<Node> GetLeft (uint32_t i) const;
/**
* \returns pointer to the node of the right side bottleneck
* router
*/
Ptr<Node> GetRight () const;
/**
* \returns pointer to the i'th left side leaf node
*/
Ptr<Node> GetRight (uint32_t i) const;
/**
* \returns an Ipv4Address of the i'th left leaf
*/
Ipv4Address GetLeftIpv4Address (uint32_t i ) const; // Get left leaf address
/**
* \returns an Ipv4Address of the i'th right leaf
*/
Ipv4Address GetRightIpv4Address (uint32_t i) const; // Get right leaf address
/**
* \returns total number of left side leaf nodes
*/
uint32_t LeftCount () const;
/**
* \returns total number of right side leaf nodes
*/
uint32_t RightCount () const;
/**
* \param stack an InternetStackHelper which is used to install
* on every node in the dumbbell
*/
void InstallStack (InternetStackHelper stack);
/**
* \param leftIp Ipv4AddressHelper to assign Ipv4 addresses to the
* interfaces on the left side of the dumbbell
*
* \param rightIp Ipv4AddressHelper to assign Ipv4 addresses to the
* interfaces on the right side of the dumbbell
*
* \param routerIp Ipv4AddressHelper to assign Ipv4 addresses to the
* interfaces on the bottleneck link
*/
void AssignIpv4Addresses (Ipv4AddressHelper leftIp,
Ipv4AddressHelper rightIp,
Ipv4AddressHelper routerIp);
/**
* Sets up the node canvas locations for every node in the dumbbell.
* This is needed for use with the animation interface
*
* \param ulx upper left x value
* \param uly upper left y value
* \param lrx lower right x value
* \param lry lower right y value
*/
void BoundingBox (double ulx, double uly, double lrx, double lry);
private:
NodeContainer m_leftLeaf;
NetDeviceContainer m_leftLeafDevices;
NodeContainer m_rightLeaf;
NetDeviceContainer m_rightLeafDevices;
NodeContainer m_routers;
NetDeviceContainer m_routerDevices; // just two connecting the routers
NetDeviceContainer m_leftRouterDevices;
NetDeviceContainer m_rightRouterDevices;
Ipv4InterfaceContainer m_leftLeafInterfaces;
Ipv4InterfaceContainer m_leftRouterInterfaces;
Ipv4InterfaceContainer m_rightLeafInterfaces;
Ipv4InterfaceContainer m_rightRouterInterfaces;
Ipv4InterfaceContainer m_routerInterfaces;
};
} // namespace ns3
#endif /* POINT_TO_POINT_DUMBBELL_HELPER_H */
|