/usr/include/ns3.26/ns3/csma-star-helper.h is in libns3-dev 3.26+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 | /* -*- 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
*/
// Define an object to create a star topology.
#ifndef CSMA_STAR_HELPER_H
#define CSMA_STAR_HELPER_H
#include <string>
#include "csma-helper.h"
#include "ipv4-address-helper.h"
#include "ipv6-address-helper.h"
#include "internet-stack-helper.h"
#include "ipv4-interface-container.h"
#include "ipv6-interface-container.h"
#include "ipv6-address-generator.h"
namespace ns3 {
/**
* \defgroup csmalayout CSMA Layout Helpers
*
*/
/**
* \ingroup csmalayout
*
* \brief A helper to make it easier to create a star topology
* with Csma links
*/
class CsmaStarHelper
{
public:
/**
* Create a CsmaStarHelper in order to easily create
* star topologies using Csma links
*
* \param numSpokes the number of links attached to
* the hub node, creating a total of
* numSpokes + 1 nodes
*
* \param csmaHelper the link helper for Csma links,
* used to link nodes together
*/
CsmaStarHelper (uint32_t numSpokes,
CsmaHelper csmaHelper);
~CsmaStarHelper ();
public:
/**
* \returns a node pointer to the hub node in the
* star, i.e., the center node
*/
Ptr<Node> GetHub () const;
/**
* \param i an index into the spokes of the star
*
* \returns a node pointer to the node at the indexed spoke
*/
Ptr<Node> GetSpokeNode (uint32_t i) const;
/**
* \returns the net-device container which contains all of
* the devices on the hub node
*/
NetDeviceContainer GetHubDevices () const;
/**
* \returns the net-device container which contains all of
* the spoke node devices
*/
NetDeviceContainer GetSpokeDevices () const;
/**
* \param i index into the hub interfaces
*
* \returns Ipv4Address according to indexed hub interface
*/
Ipv4Address GetHubIpv4Address (uint32_t i) const;
/**
* \param i index into the hub interfaces
*
* \returns Ipv6Address according to indexed hub interface
*/
Ipv6Address GetHubIpv6Address (uint32_t i) const;
/**
* \param i index into the spoke interfaces
*
* \returns Ipv4Address according to indexed spoke interface
*/
Ipv4Address GetSpokeIpv4Address (uint32_t i) const;
/**
* \param i index into the spoke interfaces
*
* \returns Ipv6Address according to indexed spoke interface
*/
Ipv6Address GetSpokeIpv6Address (uint32_t i) const;
/**
* \returns the total number of spokes in the star
*/
uint32_t SpokeCount () const;
/**
* \param stack an InternetStackHelper which is used to install
* on every node in the star
*/
void InstallStack (InternetStackHelper stack);
/**
* \param address an Ipv4AddressHelper which is used to install
* Ipv4 addresses on all the node interfaces in
* the star
*/
void AssignIpv4Addresses (Ipv4AddressHelper address);
/**
* \param network an IPv6 Address representing the network portion
* of the Ipv6 Address
* \param prefix the prefix length
*/
void AssignIpv6Addresses (Ipv6Address network, Ipv6Prefix prefix);
private:
NodeContainer m_hub; //!< NodeContainer for the hub node
NetDeviceContainer m_hubDevices; //!< NetDeviceContainer for the hub node NetDevices
NodeContainer m_spokes; //!< NodeContainer for the spokes nodes
NetDeviceContainer m_spokeDevices; //!< NetDeviceContainer for the spokes nodes NetDevices
Ipv4InterfaceContainer m_hubInterfaces; //!< Ipv4InterfaceContainer for the hub IPv4 interfaces
Ipv4InterfaceContainer m_spokeInterfaces; //!< Ipv4InterfaceContainer for the spokes IPv4 interfaces
Ipv6InterfaceContainer m_hubInterfaces6; //!< Ipv6InterfaceContainer for the hub IPv6 interfaces
Ipv6InterfaceContainer m_spokeInterfaces6; //!< Ipv6InterfaceContainer for the spokes IPv6 interfaces
};
} // namespace ns3
#endif /* CSMA_STAR_HELPER_H */
|