Doxygen: fixed warnings
This commit is contained in:
@@ -72,6 +72,7 @@ private:
|
||||
/** \brief Request a destination. If can not send preq immediately -
|
||||
* add a destination to exisying PREQ generated by me and stored in
|
||||
* PREQ queue
|
||||
* \param dest is the destination to be resolved
|
||||
* \param originator_seqno is a sequence number that shall be preq originator sequenece number
|
||||
* \param dst_seqno is a sequence number taken from routing table
|
||||
*/
|
||||
|
||||
@@ -66,9 +66,8 @@ public:
|
||||
*/
|
||||
bool Install (Ptr<MeshPointDevice>);
|
||||
void PeerLinkStatus (Mac48Address meshPontAddress, Mac48Address peerAddress, uint32_t interface,bool status);
|
||||
///\brief This callback is used to obtain active neighbours on a
|
||||
//given interface
|
||||
///\param interface is the interface ID
|
||||
///\brief This callback is used to obtain active neighbours on a given interface
|
||||
///\param cb is a callback, which returns a list of addresses on given interface (uint32_t)
|
||||
void SetNeighboursCallback (Callback<std::vector<Mac48Address>, uint32_t> cb);
|
||||
///\name Proactive PREQ mechanism:
|
||||
///\{
|
||||
@@ -127,13 +126,13 @@ private:
|
||||
//retransmitted
|
||||
std::vector<Mac48Address> GetBroadcastReceivers (uint32_t interface);
|
||||
/**
|
||||
* \brief MAC-plugin asks wether the frame can be dropeed. Protocol automatically updates seqno.
|
||||
* \brief MAC-plugin asks whether the frame can be dropped. Protocol automatically updates seqno.
|
||||
*
|
||||
* \return true if frame can be dropped
|
||||
* \param uint32_t is the seqno
|
||||
* \param Mac48Address is the mesh source addrress of the frame
|
||||
* \param seqno is the sequence number of source
|
||||
* \param source is the source address
|
||||
*/
|
||||
bool DropDataFrame (uint32_t, Mac48Address);
|
||||
bool DropDataFrame (uint32_t seqno, Mac48Address source);
|
||||
//\}
|
||||
private:
|
||||
/// Packet waiting its routing information
|
||||
@@ -168,7 +167,7 @@ private:
|
||||
/**
|
||||
* \brief Generates PREQ retry when retry timeout has expired and route is still unresolved.
|
||||
*
|
||||
* When PREQ retry has achieved the maximum level - retry mechanish should be cancelled
|
||||
* When PREQ retry has achieved the maximum level - retry mechanism should be canceled
|
||||
*/
|
||||
void RetryPathDiscovery (Mac48Address dst, uint8_t numOfRetry);
|
||||
///\}
|
||||
@@ -222,7 +221,7 @@ private:
|
||||
///\{
|
||||
std::map<Mac48Address, EventId> m_preqTimeouts;
|
||||
EventId m_proactivePreqTimer;
|
||||
//Random start in Proactive PREQ propagation
|
||||
/// Random start in Proactive PREQ propagation
|
||||
Time m_randomStart;
|
||||
///\}
|
||||
|
||||
|
||||
@@ -51,13 +51,14 @@ public:
|
||||
/// Process beacon received from peer
|
||||
void SetBeaconInformation (Time lastBeacon, Time BeaconInterval);
|
||||
/**
|
||||
* \brief Method used to detecet peer link changes
|
||||
* \brief Method used to detect peer link changes
|
||||
*
|
||||
* \param bool if true - opened new link, if false - link closed
|
||||
* \param cb is a callback, which notifyes, that on interface (uint32_t), peer link
|
||||
* with address (Mac48Address) was opened (bool is true) or closed (bool is false)
|
||||
*/
|
||||
void SetLinkStatusCallback (Callback<void, uint32_t, Mac48Address, bool> cb);
|
||||
/**
|
||||
* \name Peer link geeters/setters
|
||||
* \name Peer link getters/setters
|
||||
* \{
|
||||
*/
|
||||
void SetPeerAddress (Mac48Address macaddr);
|
||||
@@ -203,7 +204,7 @@ private:
|
||||
private:
|
||||
///The number of interface I am associated with
|
||||
uint32_t m_interface;
|
||||
/// pointer to mac plugin, which is responsible for peer management
|
||||
/// pointer to MAC plugin, which is responsible for peer management
|
||||
Ptr<PeerManagementProtocolMac> m_macPlugin;
|
||||
/// Peer address
|
||||
Mac48Address m_peerAddress;
|
||||
@@ -230,9 +231,7 @@ private:
|
||||
PeerState m_state;
|
||||
/// Mesh interface configuration
|
||||
IeConfiguration m_configuration;
|
||||
|
||||
// State is a bitfield as defined as follows:
|
||||
// This are states for a given
|
||||
/// Beacon timing element received from the peer. Needed by BCA
|
||||
IeBeaconTiming m_beaconTiming;
|
||||
|
||||
/**
|
||||
|
||||
@@ -63,14 +63,13 @@ public:
|
||||
/**
|
||||
* \brief Methods that handle beacon sending/receiving procedure.
|
||||
*
|
||||
* This methods interact with MAC_layer plug-in
|
||||
* \name This methods interact with MAC_layer plug-in
|
||||
* \{
|
||||
*/
|
||||
/**
|
||||
* \brief When we are sending a beacon - we fill beacon timing
|
||||
* element
|
||||
* \param IeBeaconTiming is a beacon timing element that
|
||||
* should be present in beacon
|
||||
* \return IeBeaconTiming is a beacon timing element that should be present in beacon
|
||||
* \param interface is a interface sending a beacon
|
||||
*/
|
||||
Ptr<IeBeaconTiming> GetBeaconTimingElement (uint32_t interface);
|
||||
@@ -80,7 +79,11 @@ public:
|
||||
* and remember beacon timers - last beacon and beacon interval to
|
||||
* detect beacon loss and cancel links
|
||||
* \param interface is a interface on which beacon was received
|
||||
* \param meshBeacon indicates whether the beacon is mesh beacon or not.
|
||||
* \param timingElement is a timing element of remote beacon
|
||||
* \param peerAddress is an address where a beacon was received from
|
||||
* \param receivingTime is a time when beacon was received
|
||||
* \param beaconInterval is a beacon interval of received beacon
|
||||
*/
|
||||
void UpdatePeerBeaconTiming (
|
||||
uint32_t interface,
|
||||
@@ -98,18 +101,15 @@ public:
|
||||
*/
|
||||
/**
|
||||
* Deliver Peer link management information to the protocol-part
|
||||
* \param void is returning value - we pass a frame and forget
|
||||
* about it
|
||||
* \param uint32_t - is a interface ID of a given MAC (interfaceID rather
|
||||
* than MAC address, beacause many interfaces may have the same MAC)
|
||||
* \param Mac48Address is address of peer
|
||||
* \param Mac48Address is address of peer mesh point device (equal
|
||||
* \param interface is a interface ID of a given MAC (interfaceID rather
|
||||
* than MAC address, because many interfaces may have the same MAC)
|
||||
* \param peerAddress is address of peer
|
||||
* \param peerMeshPointAddress is address of peer mesh point device (equal
|
||||
* to peer address when only one interface)
|
||||
* \param uint16_t is association ID, which peer has assigned to
|
||||
* us
|
||||
* \param IeConfiguration is mesh configuration element
|
||||
* taken from the peer management frame
|
||||
* \param IePeerManagement is peer link management element
|
||||
* \param aid is association ID, which peer has assigned to us
|
||||
* \param peerManagementElement is peer link management element
|
||||
* \param meshConfig is mesh configuration element taken from the peer
|
||||
* management frame
|
||||
*/
|
||||
void ReceivePeerLinkFrame (
|
||||
uint32_t interface,
|
||||
@@ -120,17 +120,20 @@ public:
|
||||
IeConfiguration meshConfig
|
||||
);
|
||||
/**
|
||||
* Cancell peer link due to broken configuration (SSID or Supported
|
||||
* \brief Cancels peer link due to broken configuration (Mesh ID or Supported
|
||||
* rates)
|
||||
*/
|
||||
void ConfigurationMismatch (uint32_t interface, Mac48Address peerAddress);
|
||||
/**
|
||||
* Cancel peer link due to successive transmission failures
|
||||
* \brief Cancels peer link due to successive transmission failures
|
||||
*/
|
||||
void TransmissionFailure (uint32_t interface, const Mac48Address peerAddress);
|
||||
/**
|
||||
* \brief resets transmission failure statistics
|
||||
*/
|
||||
void TransmissionSuccess (uint32_t interface, const Mac48Address peerAddress);
|
||||
/**
|
||||
* Checks if there is established link
|
||||
* \brief Checks if there is established link
|
||||
*/
|
||||
bool IsActiveLink (uint32_t interface, Mac48Address peerAddress);
|
||||
//\}
|
||||
@@ -140,7 +143,7 @@ public:
|
||||
std::vector<Mac48Address> GetActiveLinks (uint32_t interface);
|
||||
///\brief needed by plugins to set global source address
|
||||
Mac48Address GetAddress ();
|
||||
///\Needed to fill mesh configuration
|
||||
///\brief Needed to fill mesh configuration
|
||||
uint8_t GetNumberOfLinks ();
|
||||
void SetMeshId (std::string s);
|
||||
Ptr<IeMeshId> GetMeshId () const;
|
||||
@@ -162,10 +165,8 @@ private:
|
||||
/// keeps all peer links at a given interface.
|
||||
typedef std::vector<Ptr<PeerLink> > PeerLinksOnInterface;
|
||||
/// This map keeps all peer links.
|
||||
///\param uint32_t is interface ID
|
||||
typedef std::map<uint32_t, PeerLinksOnInterface> PeerLinksMap;
|
||||
///\brief This map keeps relationship between peer address and its
|
||||
/// beacon information
|
||||
/// This map keeps relationship between peer address and its beacon information
|
||||
typedef std::map<Mac48Address, BeaconInfo> BeaconsOnInterface;
|
||||
///\brief This map keeps beacon information on all intefaces
|
||||
typedef std::map<uint32_t, BeaconsOnInterface> BeaconInfoMap;
|
||||
@@ -174,7 +175,7 @@ private:
|
||||
///\}
|
||||
private:
|
||||
/**
|
||||
* Return a position in beacon-storage for a given remote station
|
||||
* \brief Fills information of received beacon. Needed to form own beacon timing element
|
||||
*/
|
||||
void FillBeaconInfo (uint32_t interface, Mac48Address peerAddress, Time receivingTime, Time beaconInterval);
|
||||
Ptr<PeerLink> InitiateLink (
|
||||
@@ -219,19 +220,20 @@ private:
|
||||
uint8_t m_maxNumberOfPeerLinks;
|
||||
uint8_t m_maxBeaconLostForBeaconTiming;
|
||||
/**
|
||||
* Peer Links
|
||||
* \name Peer Links
|
||||
* \{
|
||||
*/
|
||||
PeerLinksMap m_peerLinks;
|
||||
/**
|
||||
* \}
|
||||
*/
|
||||
///\brief Callback to notify about peer link changes:
|
||||
///\param Mac48Address is peer address of mesh point
|
||||
///\param Mac48Address is peer address of interface
|
||||
///\param uint32_t - interface ID
|
||||
///\param bool is staus - true when new link has appeared, false -
|
||||
//when link was closed
|
||||
/**
|
||||
* \brief Callback to notify about peer link changes:
|
||||
* Mac48Address is peer address of mesh point,
|
||||
* Mac48Address is peer address of interface,
|
||||
* uint32_t - interface ID,
|
||||
* bool is status - true when new link has appeared, false - when link was closed,
|
||||
*/
|
||||
Callback <void, Mac48Address, Mac48Address, uint32_t, bool> m_peerStatusCallback;
|
||||
///\}
|
||||
//Keeps statistics
|
||||
|
||||
@@ -102,7 +102,7 @@ public:
|
||||
* MeshPointDevice must call this method when passing a packet to
|
||||
* upper layer.
|
||||
* \returns true if packet shall not be dropeed, false otherwise.
|
||||
* \param sourceIface the incoming interface of the packet
|
||||
* \param fromIface the incoming interface of the packet
|
||||
* \param source source address
|
||||
* \param destination destination address
|
||||
* \param packet the packet to be handled
|
||||
|
||||
@@ -133,14 +133,14 @@ private:
|
||||
uint16_t protocol, const Mac48Address src,
|
||||
const Mac48Address dst);
|
||||
/**
|
||||
* Response callback for L2 routing protocol. This will be executed when routing information is ready.
|
||||
* \brief Response callback for L2 routing protocol. This will be executed when routing information is ready.
|
||||
*
|
||||
* \param success True is route found. TODO: diagnose routing errors
|
||||
* \param packet Packet to send
|
||||
* \param src Source MAC address
|
||||
* \param dst Destination MAC address
|
||||
* \param protocol Protocol ID
|
||||
* \param outIface Interface to use (ID) for send (decided by routing protocol). All interfaces will be used if outIface = 0xffffffff
|
||||
* \param iface Interface to use (ID) for send (decided by routing protocol). All interfaces will be used if outIface = 0xffffffff
|
||||
*/
|
||||
void
|
||||
DoSend (bool success, Ptr<Packet> packet, Mac48Address src, Mac48Address dst, uint16_t protocol,
|
||||
|
||||
@@ -24,7 +24,84 @@
|
||||
* \ingroup devices
|
||||
* \defgroup mesh Mesh
|
||||
*
|
||||
* \brief Layer 2 mobile ad hoc wireless (aka mesh) networking
|
||||
*
|
||||
* see http://www.nsnam.org/wiki/index.php/Mesh for module architectural description.
|
||||
* \brief MAC-layer mobile mesh networking.
|
||||
* \section MeshOverview Overview of Layer-2 Mesh networking protocols.
|
||||
* The main goal of this module is to provide an NS-3 model of MAC-layer routing
|
||||
* protocols, which can be interfaced as plain network device by upper layer protocols.
|
||||
* Also our model supports stations with multiple network devices handled by a single
|
||||
* MAC-layer routing protocol, and this devices (called 'interfaces') are hidden from upper-layer protocols.
|
||||
*
|
||||
* Current implementation provides 2 layers of MAC-layer routing stack.
|
||||
* The upper layer is Mesh point device layer - it is an interface to upper-layer protocols and it implements
|
||||
* routing itself. The main task of this layer is to aggregate multiple network devices working under the same MAC-layer
|
||||
* routing protocol, to send, receive, and forward packets.
|
||||
* The lower layer implements interaction with MAC-layer itself, because some routing protocols (like HWMP in IEEE802.11s)
|
||||
* require their own management frames and some of this management frames may be MAC-specific. So, the main task
|
||||
* of this layer is to handle MAC-specific management frames needed by routing protocols.
|
||||
*
|
||||
* At the moment two routing protocols are implemented in this module:
|
||||
* - HWMP (default routing protocol for IEEE802.11s standard) + Peer management protocol (also described in 802.11s
|
||||
* draft standard), which is required by HWMP to manage peer links (works like association in IEEE802.11).
|
||||
* - FLAME (Forwarding LAyer for MEshing).
|
||||
* The former protocol works only with 802.11-MAC, the latter protocol works with all network devices, which support
|
||||
* 48-bit MAC_addressing scheme.
|
||||
* \subsection Architecture Architecture of MAC-layer routing stack.
|
||||
* According to said above, MAC-layer routing stack consists of two layers:
|
||||
* The upper is a ns3::MeshPointDevice, which forwards packets using ns3::MeshL2RoutingProtocol, attached to it.
|
||||
* Interface between MeshPointDevice and upper layers inherited from ns3::NetDevice class. Interface between MeshPointDevice
|
||||
* and MeshL2RoutingProtocol is the following: MeshPointDevice gives a packet with source and destination addresses,
|
||||
* number of network device, from which it was received and callback to be executed when route is found.
|
||||
* All routing queues are implemented inside a protocol. After the routing discovery procedure is done, protocol returns a
|
||||
* packet back to mesh point device and gives an index of network device, where packet shall be sent to. All additional
|
||||
* routing information is stored inside a packet using a tags. After all this routine packet goes to the lower layer.
|
||||
* The lower layer is responsible for filling MAC-specific headers. At the moment we have implemented only lower layer
|
||||
* for WifiNetDevice - ns::MeshWifiInterfaceMac, and ns3::MeshWifiInterfaceMacPlugin. The former is a new kind of WifiMac, which
|
||||
* implements IEEE802.11S mesh interface, when beaconing is turned on, and a simple ad hoc, when the beaconing is turned off.
|
||||
* Also MeshWfifiInterfaceMac supports beacon shifting, yo avoid collisions in mesh network.
|
||||
* The latter is a lower part of L2Routing protocol. It handles all outgoing and all incoming frames, fills needed headers and
|
||||
* decides, whether to drop a frame or not and it can add needed information elements to a beacon.
|
||||
* See http://www.nsnam.org/wiki/index.php/Mesh for module architectural description.
|
||||
* \subsection NewProtocol Adding a new protocol.
|
||||
* This model requires, that all network devices shall operate with ns3::Mac48Address type of addresses.
|
||||
* To add a new protocol you need to define the following things:
|
||||
* - Write a upper part of the protocol.
|
||||
* - If Your protocol works only with 802.11 MAC - write a lower part, inherited from ns3::MeshWifiInterfaceMacPlugin
|
||||
* - If Your protocol works with other type of Network devices - write your own lower part of protocol (interface of
|
||||
* communication with other types of network devices is not implemented) if needed.
|
||||
*
|
||||
* When you implement a protocol, you must remember, that when you are at MeshPointDevice level, you work with a packet
|
||||
* without LLC header, and when you are at plugin-level using ns3::MeshWifiInterfaceMacPlugun, the LLC header is already attached (by WifiNetDevice)
|
||||
* \attention Note, when you work with ns3::MeshWifiInterfaceMac, you have an ability to install multiple number of plugins.
|
||||
* \subsection Dot11s Overview of 802.11s
|
||||
* Implementation of 802.11s draft standard consists of two main parts: Peer management protocol and HWMP - Hybrid Wireless Mesh Protocol.
|
||||
* The task of peer management protocol is to open links, detecting beacons, and close peer links due to transmission failures or beacon loss.
|
||||
* If peer link between sender and receiver does not exist, the packet shall be dropped.
|
||||
* \subsubsection IE Implementation of Information elements
|
||||
* To make a model of 802.11 stack, we need to implement a big quantity of information elements and have an ability to add them in a beacon.
|
||||
* Also we have to parse beacon and extract a proper information elements from it. So, two classes ns3::WifiInformationElement and ns3::WifiInformationElementVector
|
||||
* implement this functionality. The former keeps all information of information element and its elementId and has methods SerializeInformation and Deserialize information
|
||||
* ns3::WifiInformationElementVector works as a header and adds all stored information elements to a packet.
|
||||
* \subsubsection PMP Peer management protocol
|
||||
* Peer management protocol consists of three main parts:
|
||||
* - Protocol itself ns3::dot11s::PeerManagementProtocol, which keeps all active peer links and handles all changes of their states
|
||||
* and notifies a routing protocol about link failures.
|
||||
* - its MAC plugin ns3::dot11s::PeerManagementProtocolMac which drops packet, if there is no peer link,
|
||||
* and peek all needed information from management frames and information lements from beacons.
|
||||
* - peer link instance ns3::dot11s::PeerLink which keeps finite state machine for each peer link, keeps beacon loss counter and counter of failed packets
|
||||
* to be transmitted.
|
||||
*
|
||||
* Procedure of closing peer link is not described detailed in 802.11s draft standard, so the link may be closed by:
|
||||
* - Beacon loss (see a proper attribute of ns3::dot11s::PeerLink class)
|
||||
* - by transmission failure - when a proper number of successive packets have failed to transmit, the link shall be closed.
|
||||
* Also Peer management protocol is responsible for beacon collision avoidance, because it keeps beacon timing elements from all neighbours.
|
||||
* Note, that PeerManagementProtocol is not attached to MeshPointDevice as a routing protocol, but the structure is the similar: the upper layer of protocol, and its plugins.
|
||||
*
|
||||
* \subsubsection HWMP Hybrid Wireless Mesh Protocol
|
||||
* HWMP is implemented in both modes - reactive and proactive. Also we have implemented an ability to transmit broadcast data and management frames as unicasts (see proper attributes).
|
||||
* This feature turns on when you need to transmit a broadcast and the number of neighbours of the transmitting station is is more than threshold.
|
||||
* \subsection overview of FLAME
|
||||
*
|
||||
* \subsection Statistics
|
||||
* Each routing protocol has a statistic structure, Report and ResetStats methods. This gives an opportunity to write statistic to an *.xml file periodically. As soon as you can reset statistics,
|
||||
* the period of report you can ajust as you need.
|
||||
*/
|
||||
|
||||
@@ -120,6 +120,12 @@ public:
|
||||
TypeId GetInstanceTypeId () const;
|
||||
virtual uint32_t GetSerializedSize () const;
|
||||
virtual void Serialize (Buffer::Iterator start) const;
|
||||
/**
|
||||
* \attention When you use RemoveHeader, WifiInformationElementVector supposes, that
|
||||
* all buffer consists of information elements
|
||||
* @param start
|
||||
* @return
|
||||
*/
|
||||
virtual uint32_t Deserialize (Buffer::Iterator start);
|
||||
virtual void Print (std::ostream &os) const;
|
||||
//\}
|
||||
@@ -129,6 +135,7 @@ public:
|
||||
* \return deserialized bytes
|
||||
*/
|
||||
virtual uint32_t DeserializeSingleIe (Buffer::Iterator start);
|
||||
///Set maximum size to control overflow of the max packet length
|
||||
void SetMaxSize (uint16_t size);
|
||||
typedef std::vector<Ptr<WifiInformationElement> >::iterator Iterator;
|
||||
Iterator Begin ();
|
||||
|
||||
@@ -42,9 +42,22 @@ public:
|
||||
static MeshHelper
|
||||
Default ();
|
||||
/**
|
||||
* \param type the type of ns3::WifiMac to create.
|
||||
* \param n%d the name of the attribute to set
|
||||
* \param v%d the value of the attribute to set
|
||||
* \param n0 the name of the attribute to set
|
||||
* \param v0 the value of the attribute to set
|
||||
* \param n1 the name of the attribute to set
|
||||
* \param v1 the value of the attribute to set
|
||||
* \param n2 the name of the attribute to set
|
||||
* \param v2 the value of the attribute to set
|
||||
* \param n3 the name of the attribute to set
|
||||
* \param v3 the value of the attribute to set
|
||||
* \param n4 the name of the attribute to set
|
||||
* \param v4 the value of the attribute to set
|
||||
* \param n5 the name of the attribute to set
|
||||
* \param v5 the value of the attribute to set
|
||||
* \param n6 the name of the attribute to set
|
||||
* \param v6 the value of the attribute to set
|
||||
* \param n7 the name of the attribute to set
|
||||
* \param v7 the value of the attribute to set
|
||||
*
|
||||
* All the attributes specified in this method should exist
|
||||
* in the requested mac.
|
||||
@@ -59,8 +72,22 @@ public:
|
||||
std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
|
||||
/**
|
||||
* \param type the type of ns3::WifiRemoteStationManager to create.
|
||||
* \param n%d the name of the attribute to set
|
||||
* \param v%d the value of the attribute to set
|
||||
* \param n0 the name of the attribute to set
|
||||
* \param v0 the value of the attribute to set
|
||||
* \param n1 the name of the attribute to set
|
||||
* \param v1 the value of the attribute to set
|
||||
* \param n2 the name of the attribute to set
|
||||
* \param v2 the value of the attribute to set
|
||||
* \param n3 the name of the attribute to set
|
||||
* \param v3 the value of the attribute to set
|
||||
* \param n4 the name of the attribute to set
|
||||
* \param v4 the value of the attribute to set
|
||||
* \param n5 the name of the attribute to set
|
||||
* \param v5 the value of the attribute to set
|
||||
* \param n6 the name of the attribute to set
|
||||
* \param v6 the value of the attribute to set
|
||||
* \param n7 the name of the attribute to set
|
||||
* \param v7 the value of the attribute to set
|
||||
*
|
||||
* All the attributes specified in this method should exist
|
||||
* in the requested station manager.
|
||||
@@ -101,10 +128,8 @@ public:
|
||||
/**
|
||||
* \brief Install 802.11s mesh device & protocols on given node list
|
||||
*
|
||||
* \param phy Wifi PHY helper
|
||||
* \param nodes List of nodes to install
|
||||
* \param roots List of root mesh points
|
||||
* \param nInterfaces Number of mesh point radio interfaces (= WiFi NICs)
|
||||
* \param phyHelper Wifi PHY helper
|
||||
* \param c List of nodes to install
|
||||
*
|
||||
* \return list of created mesh point devices, see MeshPointDevice
|
||||
*/
|
||||
@@ -112,9 +137,22 @@ public:
|
||||
Install (const WifiPhyHelper &phyHelper, NodeContainer c) const;
|
||||
/**
|
||||
* \param type the type of ns3::MeshStack.
|
||||
*
|
||||
* All the attributes specified in this method should exist
|
||||
* in the requested station manager.
|
||||
* \param n0 the name of the attribute to set
|
||||
* \param v0 the value of the attribute to set
|
||||
* \param n1 the name of the attribute to set
|
||||
* \param v1 the value of the attribute to set
|
||||
* \param n2 the name of the attribute to set
|
||||
* \param v2 the value of the attribute to set
|
||||
* \param n3 the name of the attribute to set
|
||||
* \param v3 the value of the attribute to set
|
||||
* \param n4 the name of the attribute to set
|
||||
* \param v4 the value of the attribute to set
|
||||
* \param n5 the name of the attribute to set
|
||||
* \param v5 the value of the attribute to set
|
||||
* \param n6 the name of the attribute to set
|
||||
* \param v6 the value of the attribute to set
|
||||
* \param n7 the name of the attribute to set
|
||||
* \param v7 the value of the attribute to set
|
||||
*/
|
||||
void SetStackInstaller (std::string type,
|
||||
std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
|
||||
|
||||
Reference in New Issue
Block a user