fix various doxygen errors
This commit is contained in:
@@ -25,7 +25,7 @@ DOXYFILE_ENCODING = UTF-8
|
||||
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
||||
# by quotes) that should identify the project.
|
||||
|
||||
PROJECT_NAME = "NS-3 "
|
||||
PROJECT_NAME = "ns-3 "
|
||||
|
||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
|
||||
# This could be handy for archiving the generated documentation or
|
||||
@@ -590,8 +590,7 @@ INPUT_ENCODING = UTF-8
|
||||
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
|
||||
|
||||
FILE_PATTERNS = *.h \
|
||||
*.tcc \
|
||||
node-list.cc
|
||||
*.cc
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
@@ -603,11 +602,7 @@ RECURSIVE = YES
|
||||
# excluded from the INPUT source files. This way you can easily exclude a
|
||||
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||
|
||||
EXCLUDE = src/olsr/model/olsr-state.h \
|
||||
src/olsr/model/olsr-repositories.h \
|
||||
src/core/model/high-precision.h \
|
||||
src/core/model/high-precision-128.h \
|
||||
src/core/model/high-precision-double.h
|
||||
EXCLUDE =
|
||||
|
||||
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
||||
# directories that are symbolic links (a Unix filesystem feature) are excluded
|
||||
@@ -635,7 +630,39 @@ EXCLUDE_SYMBOLS =
|
||||
# directories that contain example code fragments that are included (see
|
||||
# the \include command).
|
||||
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATH = src/aodv/examples \
|
||||
src/bridge/examples \
|
||||
src/click/examples \
|
||||
src/config-store/examples \
|
||||
src/core/examples \
|
||||
src/csma/examples \
|
||||
src/csma-layout/examples \
|
||||
src/dsdv/examples \
|
||||
src/emu/examples \
|
||||
src/energy/examples \
|
||||
src/flow-monitor/examples \
|
||||
src/internet/examples \
|
||||
src/lte/examples \
|
||||
src/mesh/examples \
|
||||
src/mobility/examples \
|
||||
src/mpi/examples \
|
||||
src/netanim/examples \
|
||||
src/network/examples \
|
||||
src/nix-vector-routing/examples \
|
||||
src/olsr/examples \
|
||||
src/openflow/examples \
|
||||
src/point-to-point/examples \
|
||||
src/propagation/examples \
|
||||
src/spectrum/examples \
|
||||
src/tap-bridge/examples \
|
||||
src/template/examples \
|
||||
src/tools/examples \
|
||||
src/topology-read/examples \
|
||||
src/uan/examples \
|
||||
src/virtual-net-device/examples \
|
||||
src/visualizer/examples \
|
||||
src/wifi/examples \
|
||||
src/wimax/examples
|
||||
|
||||
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
||||
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||
|
||||
@@ -37,9 +37,15 @@ namespace ns3 {
|
||||
* CommandLine::AddValue but the most important functionality
|
||||
* provided by this class is that it can be used to set the
|
||||
* 'initial value' of every attribute in the system with the
|
||||
* '\--TypeIdName::AttributeName=value' syntax and it can be used
|
||||
* to set the value of every GlobalValue in the system with
|
||||
* the \--GlobalValueName=value syntax.
|
||||
* \verbatim
|
||||
* --TypeIdName::AttributeName=value
|
||||
* \endverbatim
|
||||
* syntax and it can be used to set the value of every GlobalValue
|
||||
* in the system with the
|
||||
* \verbatim
|
||||
* --GlobalValueName=value
|
||||
* \endverbatim
|
||||
* syntax.
|
||||
*/
|
||||
class CommandLine
|
||||
{
|
||||
|
||||
@@ -463,8 +463,8 @@ NamesPriv::Find (std::string path)
|
||||
NameNode *node = &m_root;
|
||||
|
||||
//
|
||||
// The string <remaining> is now composed entirely of path segments in the
|
||||
// /Names name space and we have eaten the leading slash. e.g.,
|
||||
// The string <remaining> is now composed entirely of path segments in
|
||||
// the /Names name space and we have eaten the leading slash. e.g.,
|
||||
// remaining = "ClientNode/eth0"
|
||||
//
|
||||
// The start of the search is always at the root of the name space.
|
||||
|
||||
@@ -359,6 +359,7 @@ public:
|
||||
}
|
||||
/**
|
||||
* \param timeUnit the unit of the value to return
|
||||
* \return int64_t time value
|
||||
*
|
||||
* Convert the input time into an integer value according to the requested
|
||||
* time unit.
|
||||
@@ -390,6 +391,7 @@ public:
|
||||
}
|
||||
/**
|
||||
* \param timeUnit the unit of the value to return
|
||||
* \return double time value
|
||||
*
|
||||
* Convert the input time into a floating point value according to the requested
|
||||
* time unit.
|
||||
|
||||
@@ -937,7 +937,7 @@ class TestSuite : public TestCase
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* \enum TestType
|
||||
* \enum Type
|
||||
* \brief Type of test.
|
||||
*/
|
||||
enum Type {
|
||||
|
||||
@@ -47,7 +47,7 @@ class QueueEntry
|
||||
public:
|
||||
typedef Ipv4RoutingProtocol::UnicastForwardCallback UnicastForwardCallback;
|
||||
typedef Ipv4RoutingProtocol::ErrorCallback ErrorCallback;
|
||||
// / c-tor
|
||||
/// c-tor
|
||||
QueueEntry (Ptr<const Packet> pa = 0, Ipv4Header const & h = Ipv4Header (),
|
||||
UnicastForwardCallback ucb = UnicastForwardCallback (),
|
||||
ErrorCallback ecb = ErrorCallback ())
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
{
|
||||
return ((m_packet == o.m_packet) && (m_header.GetDestination () == o.m_header.GetDestination ()) && (m_expire == o.m_expire));
|
||||
}
|
||||
// /\name Fields
|
||||
///\name Fields
|
||||
// \{
|
||||
UnicastForwardCallback GetUnicastForwardCallback () const
|
||||
{
|
||||
@@ -111,15 +111,15 @@ public:
|
||||
}
|
||||
// \}
|
||||
private:
|
||||
// / Data packet
|
||||
/// Data packet
|
||||
Ptr<const Packet> m_packet;
|
||||
// / IP header
|
||||
/// IP header
|
||||
Ipv4Header m_header;
|
||||
// / Unicast forward callback
|
||||
/// Unicast forward callback
|
||||
UnicastForwardCallback m_ucb;
|
||||
// / Error callback
|
||||
/// Error callback
|
||||
ErrorCallback m_ecb;
|
||||
// / Expire time for queue entry
|
||||
/// Expire time for queue entry
|
||||
Time m_expire;
|
||||
};
|
||||
/**
|
||||
@@ -133,24 +133,24 @@ private:
|
||||
class PacketQueue
|
||||
{
|
||||
public:
|
||||
// / Default c-tor
|
||||
/// Default c-tor
|
||||
PacketQueue ()
|
||||
{
|
||||
}
|
||||
// / Push entry in queue, if there is no entry with the same packet and destination address in queue.
|
||||
/// Push entry in queue, if there is no entry with the same packet and destination address in queue.
|
||||
bool Enqueue (QueueEntry & entry);
|
||||
// / Return first found (the earliest) entry for given destination
|
||||
/// Return first found (the earliest) entry for given destination
|
||||
bool Dequeue (Ipv4Address dst, QueueEntry & entry);
|
||||
// / Remove all packets with destination IP address dst
|
||||
/// Remove all packets with destination IP address dst
|
||||
void DropPacketWithDst (Ipv4Address dst);
|
||||
// / Finds whether a packet with destination dst exists in the queue
|
||||
/// Finds whether a packet with destination dst exists in the queue
|
||||
bool Find (Ipv4Address dst);
|
||||
// / Get count of packets with destination dst in the queue
|
||||
/// Get count of packets with destination dst in the queue
|
||||
uint32_t
|
||||
GetCountForPacketsWithDst (Ipv4Address dst);
|
||||
// / Number of entries
|
||||
/// Number of entries
|
||||
uint32_t GetSize ();
|
||||
// /\name Fields
|
||||
///\name Fields
|
||||
// \{
|
||||
uint32_t GetMaxQueueLen () const
|
||||
{
|
||||
@@ -180,15 +180,15 @@ public:
|
||||
|
||||
private:
|
||||
std::vector<QueueEntry> m_queue;
|
||||
// / Remove all expired entries
|
||||
/// Remove all expired entries
|
||||
void Purge ();
|
||||
// / Notify that packet is dropped from queue by timeout
|
||||
/// Notify that packet is dropped from queue by timeout
|
||||
void Drop (QueueEntry en, std::string reason);
|
||||
// / The maximum number of packets that we allow a routing protocol to buffer.
|
||||
/// The maximum number of packets that we allow a routing protocol to buffer.
|
||||
uint32_t m_maxLen;
|
||||
// / The maximum number of packets that we allow per destination to buffer.
|
||||
/// The maximum number of packets that we allow per destination to buffer.
|
||||
uint32_t m_maxLenPerDst;
|
||||
// / The maximum period of time that a routing protocol is allowed to buffer a packet for, seconds.
|
||||
/// The maximum period of time that a routing protocol is allowed to buffer a packet for, seconds.
|
||||
Time m_queueTimeout;
|
||||
static bool IsEqual (QueueEntry en, const Ipv4Address dst)
|
||||
{
|
||||
|
||||
@@ -98,9 +98,9 @@ public:
|
||||
return m_dstSeqNo;
|
||||
}
|
||||
private:
|
||||
Ipv4Address m_dst; // /< Destination IP Address
|
||||
uint32_t m_hopCount; // /< Number of Hops
|
||||
uint32_t m_dstSeqNo; // /< Destination Sequence Number
|
||||
Ipv4Address m_dst; ///< Destination IP Address
|
||||
uint32_t m_hopCount; ///< Number of Hops
|
||||
uint32_t m_dstSeqNo; ///< Destination Sequence Number
|
||||
};
|
||||
static inline std::ostream & operator<< (std::ostream& os, const DsdvHeader & packet)
|
||||
{
|
||||
|
||||
@@ -47,13 +47,13 @@ namespace ns3 {
|
||||
namespace dsdv {
|
||||
NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol);
|
||||
|
||||
// / UDP Port for DSDV control traffic
|
||||
/// UDP Port for DSDV control traffic
|
||||
const uint32_t RoutingProtocol::DSDV_PORT = 269;
|
||||
|
||||
// / Tag used by DSDV implementation
|
||||
/// Tag used by DSDV implementation
|
||||
struct DeferredRouteOutputTag : public Tag
|
||||
{
|
||||
// / Positive if output device is fixed in RouteOutput
|
||||
/// Positive if output device is fixed in RouteOutput
|
||||
int32_t oif;
|
||||
|
||||
DeferredRouteOutputTag (int32_t o = -1)
|
||||
|
||||
@@ -56,14 +56,14 @@ public:
|
||||
GetTypeId (void);
|
||||
static const uint32_t DSDV_PORT;
|
||||
|
||||
// / c-tor
|
||||
/// c-tor
|
||||
RoutingProtocol ();
|
||||
virtual
|
||||
~RoutingProtocol ();
|
||||
virtual void
|
||||
DoDispose ();
|
||||
|
||||
// /\name From Ipv4RoutingProtocol
|
||||
///\name From Ipv4RoutingProtocol
|
||||
// \{
|
||||
Ptr<Ipv4Route> RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr);
|
||||
bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev, UnicastForwardCallback ucb,
|
||||
@@ -75,7 +75,7 @@ public:
|
||||
virtual void NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address);
|
||||
virtual void SetIpv4 (Ptr<Ipv4> ipv4);
|
||||
// \}
|
||||
// /\name Methods to handle protocol parameters
|
||||
///\name Methods to handle protocol parameters
|
||||
// \{
|
||||
void SetEnableBufferFlag (bool f);
|
||||
bool GetEnableBufferFlag () const;
|
||||
@@ -86,64 +86,63 @@ public:
|
||||
// \}
|
||||
|
||||
private:
|
||||
// /\name Protocol parameters.
|
||||
///\name Protocol parameters.
|
||||
// \{
|
||||
// / \{Holdtimes is the multiplicative factor of PeriodicUpdateInterval for which the node waits since the last update
|
||||
// / before flushing a route from the routing table. If PeriodicUpdateInterval is 8s and Holdtimes is 3, the node
|
||||
// / waits for 24s since the last update to flush this route from its routing table. \}
|
||||
/// Holdtimes is the multiplicative factor of PeriodicUpdateInterval for which the node waits since the last update
|
||||
/// before flushing a route from the routing table. If PeriodicUpdateInterval is 8s and Holdtimes is 3, the node
|
||||
/// waits for 24s since the last update to flush this route from its routing table.
|
||||
uint32_t Holdtimes;
|
||||
// / \{PeriodicUpdateInterval specifies the periodic time interval between which the a node broadcasts
|
||||
// / its entire routing table.\}
|
||||
/// PeriodicUpdateInterval specifies the periodic time interval between which the a node broadcasts
|
||||
/// its entire routing table.
|
||||
Time m_periodicUpdateInterval;
|
||||
// /\{ SettlingTime specifies the time for which a node waits before propagating an update.
|
||||
// / It waits for this time interval in hope of receiving an update with a better metric.
|
||||
// /\}
|
||||
/// SettlingTime specifies the time for which a node waits before propagating an update.
|
||||
/// It waits for this time interval in hope of receiving an update with a better metric.
|
||||
Time m_settlingTime;
|
||||
// /Nodes IP address
|
||||
/// Nodes IP address
|
||||
Ipv4Address m_mainAddress;
|
||||
// / IP protocol
|
||||
/// IP protocol
|
||||
Ptr<Ipv4> m_ipv4;
|
||||
// / Raw socket per each IP interface, map socket -> iface address (IP + mask)
|
||||
/// Raw socket per each IP interface, map socket -> iface address (IP + mask)
|
||||
std::map<Ptr<Socket>, Ipv4InterfaceAddress> m_socketAddresses;
|
||||
// / Loopback device used to defer route requests until a route is found
|
||||
/// Loopback device used to defer route requests until a route is found
|
||||
Ptr<NetDevice> m_lo;
|
||||
// / Main Routing table for the node
|
||||
/// Main Routing table for the node
|
||||
RoutingTable m_routingTable;
|
||||
// / Advertised Routing table for the node
|
||||
/// Advertised Routing table for the node
|
||||
RoutingTable m_advRoutingTable;
|
||||
// / The maximum number of packets that we allow a routing protocol to buffer.
|
||||
/// The maximum number of packets that we allow a routing protocol to buffer.
|
||||
uint32_t m_maxQueueLen;
|
||||
// / The maximum number of packets that we allow per destination to buffer.
|
||||
/// The maximum number of packets that we allow per destination to buffer.
|
||||
uint32_t m_maxQueuedPacketsPerDst;
|
||||
// /< The maximum period of time that a routing protocol is allowed to buffer a packet for.
|
||||
/// The maximum period of time that a routing protocol is allowed to buffer a packet for.
|
||||
Time m_maxQueueTime;
|
||||
// / A "drop front on full" queue used by the routing layer to buffer packets to which it does not have a route.
|
||||
/// A "drop front on full" queue used by the routing layer to buffer packets to which it does not have a route.
|
||||
PacketQueue m_queue;
|
||||
// / Flag that is used to enable or disable buffering
|
||||
/// Flag that is used to enable or disable buffering
|
||||
bool EnableBuffering;
|
||||
// / Flag that is used to enable or disable Weighted Settling Time
|
||||
/// Flag that is used to enable or disable Weighted Settling Time
|
||||
bool EnableWST;
|
||||
// / This is the wighted factor to determine the weighted settling time
|
||||
/// This is the wighted factor to determine the weighted settling time
|
||||
double m_weightedFactor;
|
||||
// / This is a flag to enable route aggregation. Route aggregation will aggregate all routes for
|
||||
// / 'RouteAggregationTime' from the time an update is received by a node and sends them as a single update .
|
||||
/// This is a flag to enable route aggregation. Route aggregation will aggregate all routes for
|
||||
/// 'RouteAggregationTime' from the time an update is received by a node and sends them as a single update .
|
||||
bool EnableRouteAggregation;
|
||||
// / Parameter that holds the route aggregation time interval
|
||||
/// Parameter that holds the route aggregation time interval
|
||||
Time m_routeAggregationTime;
|
||||
// / Unicast callback for own packets
|
||||
/// Unicast callback for own packets
|
||||
UnicastForwardCallback m_scb;
|
||||
// / Error callback for own packets
|
||||
/// Error callback for own packets
|
||||
ErrorCallback m_ecb;
|
||||
// /\}
|
||||
// \}
|
||||
|
||||
private:
|
||||
// / Start protocol operation
|
||||
/// Start protocol operation
|
||||
void
|
||||
Start ();
|
||||
// / Queue packet untill we find a route
|
||||
/// Queue packet untill we find a route
|
||||
void
|
||||
DeferredRouteOutput (Ptr<const Packet> p, const Ipv4Header & header, UnicastForwardCallback ucb, ErrorCallback ecb);
|
||||
// / Look for any queued packets to send them out
|
||||
/// Look for any queued packets to send them out
|
||||
void
|
||||
LookForQueuedPackets (void);
|
||||
/**
|
||||
@@ -153,18 +152,18 @@ private:
|
||||
*/
|
||||
void
|
||||
SendPacketFromQueue (Ipv4Address dst, Ptr<Ipv4Route> route);
|
||||
// / Find socket with local interface address iface
|
||||
/// Find socket with local interface address iface
|
||||
Ptr<Socket>
|
||||
FindSocketWithInterfaceAddress (Ipv4InterfaceAddress iface) const;
|
||||
// /\name Receive dsdv control packets
|
||||
///\name Receive dsdv control packets
|
||||
// \{
|
||||
// / Receive and process dsdv control packet
|
||||
/// Receive and process dsdv control packet
|
||||
void
|
||||
RecvDsdv (Ptr<Socket> socket);
|
||||
// \}
|
||||
void
|
||||
Send (Ptr<Ipv4Route>, Ptr<const Packet>, const Ipv4Header &);
|
||||
// / Create loopback route for given header
|
||||
/// Create loopback route for given header
|
||||
Ptr<Ipv4Route>
|
||||
LoopbackRoute (const Ipv4Header & header, Ptr<NetDevice> oif) const;
|
||||
/**
|
||||
@@ -174,20 +173,20 @@ private:
|
||||
*/
|
||||
Time
|
||||
GetSettlingTime (Ipv4Address dst);
|
||||
// / Sends trigger update from a node
|
||||
/// Sends trigger update from a node
|
||||
void
|
||||
SendTriggeredUpdate ();
|
||||
// / Broadcasts the entire routing table for every PeriodicUpdateInterval
|
||||
/// Broadcasts the entire routing table for every PeriodicUpdateInterval
|
||||
void
|
||||
SendPeriodicUpdate ();
|
||||
void
|
||||
MergeTriggerPeriodicUpdates ();
|
||||
// / Notify that packet is dropped for some reason
|
||||
/// Notify that packet is dropped for some reason
|
||||
void
|
||||
Drop (Ptr<const Packet>, const Ipv4Header &, Socket::SocketErrno);
|
||||
// / Timer to trigger periodic updates from a node
|
||||
/// Timer to trigger periodic updates from a node
|
||||
Timer m_periodicUpdateTimer;
|
||||
// / Timer used by the trigger updates in case of Weighted Settling Time is used
|
||||
/// Timer used by the trigger updates in case of Weighted Settling Time is used
|
||||
Timer m_triggeredExpireTimer;
|
||||
};
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ enum RouteFlags
|
||||
class RoutingTableEntry
|
||||
{
|
||||
public:
|
||||
// / c-tor
|
||||
/// c-tor
|
||||
RoutingTableEntry (Ptr<NetDevice> dev = 0, Ipv4Address dst = Ipv4Address (), u_int32_t m_seqNo = 0,
|
||||
Ipv4InterfaceAddress iface = Ipv4InterfaceAddress (), u_int32_t hops = 0, Ipv4Address nextHop = Ipv4Address (),
|
||||
Time lifetime = Simulator::Now (), Time SettlingTime = Simulator::Now (), bool changedEntries = false);
|
||||
@@ -180,11 +180,11 @@ public:
|
||||
Print (Ptr<OutputStreamWrapper> stream) const;
|
||||
|
||||
private:
|
||||
// /\name Fields
|
||||
///\name Fields
|
||||
// \{
|
||||
// / Destination Sequence Number
|
||||
/// Destination Sequence Number
|
||||
uint32_t m_seqNo;
|
||||
// / Hop Count (number of hops needed to reach destination)
|
||||
/// Hop Count (number of hops needed to reach destination)
|
||||
uint32_t m_hops;
|
||||
/**
|
||||
* \brief Expiration or deletion time of the route
|
||||
@@ -200,16 +200,16 @@ private:
|
||||
* - output device
|
||||
*/
|
||||
Ptr<Ipv4Route> m_ipv4Route;
|
||||
// / Output interface address
|
||||
/// Output interface address
|
||||
Ipv4InterfaceAddress m_iface;
|
||||
// / Routing flags: valid, invalid or in search
|
||||
/// Routing flags: valid, invalid or in search
|
||||
RouteFlags m_flag;
|
||||
// / Time for which the node retains an update with changed metric before broadcasting it.
|
||||
// / A node does that in hope of receiving a better update.
|
||||
/// Time for which the node retains an update with changed metric before broadcasting it.
|
||||
/// A node does that in hope of receiving a better update.
|
||||
Time m_settlingTime;
|
||||
// / Flag to show if any of the routing table entries were changed with the routing update.
|
||||
/// Flag to show if any of the routing table entries were changed with the routing update.
|
||||
uint32_t m_entriesChanged;
|
||||
// \}
|
||||
//\}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -219,7 +219,7 @@ private:
|
||||
class RoutingTable
|
||||
{
|
||||
public:
|
||||
// / c-tor
|
||||
/// c-tor
|
||||
RoutingTable ();
|
||||
/**
|
||||
* Add routing table entry if it doesn't yet exist in routing table
|
||||
@@ -247,14 +247,14 @@ public:
|
||||
LookupRoute (Ipv4Address id, RoutingTableEntry & rt, bool forRouteInput);
|
||||
/**
|
||||
* Updating the routing Table with routing table entry rt
|
||||
* \param routing table entry rt
|
||||
* \param rt routing table entry
|
||||
* \return true on success
|
||||
*/
|
||||
bool
|
||||
Update (RoutingTableEntry & rt);
|
||||
/**
|
||||
* Lookup list of addresses for which nxtHp is the next Hop address
|
||||
* \param nexthop's address for which we want the list of destinations
|
||||
* \param nxtHp nexthop's address for which we want the list of destinations
|
||||
* \param dstList is the list that will hold all these destination addresses
|
||||
*/
|
||||
void
|
||||
@@ -265,35 +265,35 @@ public:
|
||||
*/
|
||||
void
|
||||
GetListOfAllRoutes (std::map<Ipv4Address, RoutingTableEntry> & allRoutes);
|
||||
// / Delete all route from interface with address iface
|
||||
/// Delete all route from interface with address iface
|
||||
void
|
||||
DeleteAllRoutesFromInterface (Ipv4InterfaceAddress iface);
|
||||
// / Delete all entries from routing table
|
||||
/// Delete all entries from routing table
|
||||
void
|
||||
Clear ()
|
||||
{
|
||||
m_ipv4AddressEntry.clear ();
|
||||
}
|
||||
// / Delete all outdated entries if Lifetime is expired
|
||||
/// Delete all outdated entries if Lifetime is expired
|
||||
void
|
||||
Purge (std::map<Ipv4Address, RoutingTableEntry> & removedAddresses);
|
||||
// / Print routing table
|
||||
/// Print routing table
|
||||
void
|
||||
Print (Ptr<OutputStreamWrapper> stream) const;
|
||||
// / Provides the number of routes present in that nodes routing table.
|
||||
/// Provides the number of routes present in that nodes routing table.
|
||||
uint32_t
|
||||
RoutingTableSize ();
|
||||
/**
|
||||
* Add an event for a destination address so that the update to for that destination is sent
|
||||
* after the event is completed.
|
||||
* \param destination address for which this event is running.
|
||||
* \param unique eventid that was generated.
|
||||
* \param address destination address for which this event is running.
|
||||
* \param id unique eventid that was generated.
|
||||
*/
|
||||
bool
|
||||
AddIpv4Event (Ipv4Address, EventId);
|
||||
AddIpv4Event (Ipv4Address address, EventId id);
|
||||
/**
|
||||
* Clear up the entry from the map after the event is completed
|
||||
* \param destination address for which this event is running.
|
||||
* \param address destination address for which this event is running.
|
||||
* \return true on success
|
||||
*/
|
||||
bool
|
||||
@@ -301,7 +301,7 @@ public:
|
||||
/**
|
||||
* Force delete an update waiting for settling time to complete as a better update to
|
||||
* same destination was received.
|
||||
* \param destination address for which this event is running.
|
||||
* \param address destination address for which this event is running.
|
||||
* \return true on success
|
||||
*/
|
||||
bool
|
||||
@@ -309,19 +309,19 @@ public:
|
||||
/**
|
||||
* Force delete an update waiting for settling time to complete as a better update to
|
||||
* same destination was received.
|
||||
* \param destination address for which this event is running.
|
||||
* \param address destination address for which this event is running.
|
||||
* \return true on finding out that an event is already running for that destination address.
|
||||
*/
|
||||
bool
|
||||
ForceDeleteIpv4Event (Ipv4Address address);
|
||||
/**
|
||||
* Get the EcentId associated with that address.
|
||||
* \param destination address for which this event is running.
|
||||
* \param address destination address for which this event is running.
|
||||
* \return EventId on finding out an event is associated else return NULL.
|
||||
*/
|
||||
EventId
|
||||
GetEventId (Ipv4Address address);
|
||||
// /\name Handle life time of invalid route
|
||||
///\name Handle life time of invalid route
|
||||
// \{
|
||||
Time Getholddowntime () const
|
||||
{
|
||||
@@ -334,13 +334,13 @@ public:
|
||||
// \}
|
||||
|
||||
private:
|
||||
// /\name Fields
|
||||
///\name Fields
|
||||
// \{
|
||||
// / an entry in the routing table.
|
||||
/// an entry in the routing table.
|
||||
std::map<Ipv4Address, RoutingTableEntry> m_ipv4AddressEntry;
|
||||
// / an entry in the event table.
|
||||
/// an entry in the event table.
|
||||
std::map<Ipv4Address, EventId> m_ipv4Events;
|
||||
// /
|
||||
///
|
||||
Time m_holddownTime;
|
||||
// \}
|
||||
};
|
||||
|
||||
@@ -111,7 +111,7 @@ public:
|
||||
};
|
||||
/**
|
||||
* \brief Set ECN Field
|
||||
* \param ECN Type
|
||||
* \param ecn ECN Type
|
||||
*/
|
||||
void SetEcn (EcnType ecn);
|
||||
/**
|
||||
|
||||
@@ -136,7 +136,7 @@ NscTcpSocketImpl::~NscTcpSocketImpl ()
|
||||
* when DeAllocate is called, it will call into
|
||||
* Ipv4EndPointDemux::Deallocate which triggers
|
||||
* a delete of the associated endPoint which triggers
|
||||
* in turn a call to the method ::Destroy below
|
||||
* in turn a call to the method NscTcpSocketImpl::Destroy below
|
||||
* will will zero the m_endPoint field.
|
||||
*/
|
||||
NS_ASSERT (m_endPoint != 0);
|
||||
|
||||
@@ -84,7 +84,7 @@ UdpSocketImpl::~UdpSocketImpl ()
|
||||
* when DeAllocate is called, it will call into
|
||||
* Ipv4EndPointDemux::Deallocate which triggers
|
||||
* a delete of the associated endPoint which triggers
|
||||
* in turn a call to the method ::Destroy below
|
||||
* in turn a call to the method UdpSocketImpl::Destroy below
|
||||
* will will zero the m_endPoint field.
|
||||
*/
|
||||
NS_ASSERT (m_endPoint != 0);
|
||||
|
||||
@@ -28,7 +28,8 @@ namespace ns3 {
|
||||
*
|
||||
* \brief Prototype for class, which helps to install MAC-layer
|
||||
* routing stack to ns3::MeshPointDevice
|
||||
* \details You need to create a MeshPointDevice and attach all
|
||||
*
|
||||
* You need to create a MeshPointDevice and attach all
|
||||
* interfaces to it, than call Install method
|
||||
*/
|
||||
class MeshStack : public Object
|
||||
|
||||
@@ -26,16 +26,15 @@ namespace dot11s {
|
||||
/**
|
||||
* \ingroup dot11s
|
||||
*
|
||||
* \brief airtime link metric calculator
|
||||
* \brief Airtime link metric calculator
|
||||
*
|
||||
* \details Airtime link metric is defined in 11B.10 of 802.11s Draft D3.0 as:
|
||||
* Airtime link metric is defined in 11B.10 of 802.11s Draft D3.0 as:
|
||||
*
|
||||
* airtime = (O + Bt/r)* (1 + average retry counter), where
|
||||
*
|
||||
* o -- the PHY dependent channel access which includes frame headers, training sequences,
|
||||
* airtime = (O + Bt/r)* (1 + average retry counter), where:
|
||||
* - o -- the PHY dependent channel access which includes frame headers, training sequences,
|
||||
* access protocol frames, etc.
|
||||
* bt -- the test packet length in bits (8192 by default),
|
||||
* r -- the current bitrate of the packet,
|
||||
* - bt -- the test packet length in bits (8192 by default),
|
||||
* - r -- the current bitrate of the packet,
|
||||
*
|
||||
* Final result is expressed in units of 0.01 Time Unit = 10.24 us (as required by 802.11s draft)
|
||||
*/
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace dot11s {
|
||||
* \brief Hwmp tag implements interaction between HWMP
|
||||
* protocol and MeshWifiMac
|
||||
*
|
||||
* \details Hwmp tag keeps the following:
|
||||
* Hwmp tag keeps the following:
|
||||
* 1. When packet is passed from Hwmp to 11sMAC:
|
||||
* - retransmitter address,
|
||||
* - TTL value,
|
||||
|
||||
@@ -34,9 +34,9 @@ namespace dot11s
|
||||
/**
|
||||
* \ingroup dot11s
|
||||
*
|
||||
* \brief 802.11s Peer link management frame:
|
||||
* \details included the following (see chapters 7.4.12.1-7.4.12.3 of
|
||||
* 802.11s):
|
||||
* \brief 802.11s Peer link management frame
|
||||
*
|
||||
* Peer link management frame included the following (see chapters 7.4.12.1-7.4.12.3 of 802.11s):
|
||||
* - Subtype field
|
||||
* - Association ID field
|
||||
* - Supported rates
|
||||
|
||||
@@ -202,14 +202,14 @@ private:
|
||||
PeerLink& operator= (const PeerLink &);
|
||||
PeerLink (const PeerLink &);
|
||||
|
||||
///The number of interface I am associated with
|
||||
/// The number of interface I am associated with
|
||||
uint32_t m_interface;
|
||||
/// pointer to MAC plugin, which is responsible for peer management
|
||||
Ptr<PeerManagementProtocolMac> m_macPlugin;
|
||||
/// Peer address
|
||||
Mac48Address m_peerAddress;
|
||||
/// Mesh point address, equal to peer address in case of single
|
||||
//interface mesh point
|
||||
/// interface mesh point
|
||||
Mac48Address m_peerMeshPointAddress;
|
||||
/// My ID of this link
|
||||
uint16_t m_localLinkId;
|
||||
@@ -253,7 +253,7 @@ private:
|
||||
EventId m_beaconLossTimer;
|
||||
uint16_t m_maxBeaconLoss;
|
||||
uint16_t m_maxPacketFail;
|
||||
//\}
|
||||
// \}
|
||||
/// How to report my status change
|
||||
SignalStatusCallback m_linkStatusCallback;
|
||||
};
|
||||
|
||||
@@ -45,26 +45,30 @@ public:
|
||||
PeerManagementProtocolMac (uint32_t interface, Ptr<PeerManagementProtocol> protocol);
|
||||
~PeerManagementProtocolMac ();
|
||||
///\name Inherited from plugin abstract class
|
||||
///\{
|
||||
// \{
|
||||
void SetParent (Ptr<MeshWifiInterfaceMac> parent);
|
||||
bool Receive (Ptr<Packet> packet, const WifiMacHeader & header);
|
||||
bool UpdateOutcomingFrame (Ptr<Packet> packet, WifiMacHeader & header, Mac48Address from, Mac48Address to);
|
||||
void UpdateBeacon (MeshWifiBeacon & beacon) const;
|
||||
///\}
|
||||
///\name Statistics:
|
||||
///\{
|
||||
// \}
|
||||
///\name Statistics
|
||||
// \{
|
||||
void Report (std::ostream &) const;
|
||||
void ResetStats ();
|
||||
uint32_t GetLinkMetric (Mac48Address peerAddress);
|
||||
///\}
|
||||
// \}
|
||||
private:
|
||||
PeerManagementProtocolMac& operator= (const PeerManagementProtocolMac &);
|
||||
PeerManagementProtocolMac (const PeerManagementProtocolMac &);
|
||||
|
||||
friend class PeerManagementProtocol;
|
||||
friend class PeerLink;
|
||||
///\name Create peer link management frames:
|
||||
///\{
|
||||
///\name Create peer link management frames
|
||||
// \{
|
||||
/**
|
||||
* \brief This structure keeps all fields in peer link management frame,
|
||||
* which are not subclasses of WifiInformationElement
|
||||
*/
|
||||
struct PlinkFrameStart
|
||||
{
|
||||
uint8_t subtype;
|
||||
@@ -75,18 +79,13 @@ private:
|
||||
Ptr<Packet> CreatePeerLinkOpenFrame ();
|
||||
Ptr<Packet> CreatePeerLinkConfirmFrame ();
|
||||
Ptr<Packet> CreatePeerLinkCloseFrame ();
|
||||
/**
|
||||
* \brief This structure keeps all fields in peer link management frame,
|
||||
* which are not subclasses of WifiInformationElement
|
||||
*/
|
||||
/// \name Parses the start of the frame, where there are no
|
||||
/// WifiInformationElements exist
|
||||
/// Parses the start of the frame, where no WifiInformationElements exist
|
||||
PlinkFrameStart ParsePlinkFrame (Ptr<const Packet> packet);
|
||||
///\}
|
||||
///// Closes link when a proper number of successive transmissions have failed
|
||||
// \}
|
||||
/// Closes link when a proper number of successive transmissions have failed
|
||||
void TxError (WifiMacHeader const &hdr);
|
||||
void TxOk (WifiMacHeader const &hdr);
|
||||
///BCA functionallity:
|
||||
/// BCA functionality
|
||||
void SetBeaconShift (Time shift);
|
||||
void SetPeerManagerProtcol (Ptr<PeerManagementProtocol> protocol);
|
||||
void SendPeerLinkManagementFrame (
|
||||
@@ -96,9 +95,10 @@ private:
|
||||
IePeerManagement peerElement,
|
||||
IeConfiguration meshConfig
|
||||
);
|
||||
///\brief DUBUG only - to print established links
|
||||
///\brief debug only, used to print established links
|
||||
Mac48Address GetAddress () const;
|
||||
///\name Statistics
|
||||
// \{
|
||||
struct Statistics
|
||||
{
|
||||
uint16_t txOpen;
|
||||
@@ -122,11 +122,11 @@ private:
|
||||
struct Statistics m_stats;
|
||||
///\}
|
||||
///\name Information about MAC and protocol:
|
||||
///\{
|
||||
// \{
|
||||
Ptr<MeshWifiInterfaceMac> m_parent;
|
||||
uint32_t m_ifIndex;
|
||||
Ptr<PeerManagementProtocol> m_protocol;
|
||||
///\}
|
||||
// \}
|
||||
};
|
||||
|
||||
} // namespace dot11s
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
* \param beaconTiming beacon timing element (needed by BCA)
|
||||
*/
|
||||
void ReceiveBeacon (uint32_t interface, Mac48Address peerAddress, Time beaconInterval, Ptr<IeBeaconTiming> beaconTiming);
|
||||
//\}
|
||||
// \}
|
||||
/**
|
||||
* \brief Methods that handle Peer link management frames
|
||||
* interaction:
|
||||
@@ -125,9 +125,9 @@ public:
|
||||
* \brief Checks if there is established link
|
||||
*/
|
||||
bool IsActiveLink (uint32_t interface, Mac48Address peerAddress);
|
||||
//\}
|
||||
// \}
|
||||
///\name Interface to other protocols (MLME)
|
||||
//\{
|
||||
// \{
|
||||
/// Set peer link status change callback
|
||||
void SetPeerLinkStatusCallback (Callback<void, Mac48Address, Mac48Address, uint32_t, bool> cb);
|
||||
/// Find active peer link by my interface and peer interface MAC
|
||||
@@ -150,7 +150,8 @@ public:
|
||||
void Report (std::ostream &) const;
|
||||
void ResetStats ();
|
||||
private:
|
||||
/** \name Private structures
|
||||
/**
|
||||
* \name Private structures
|
||||
* \{
|
||||
*/
|
||||
/// Keeps information about beacon of peer station: beacon interval, association ID, last time we have received a beacon
|
||||
@@ -171,7 +172,7 @@ private:
|
||||
typedef std::map<uint32_t, BeaconsOnInterface> BeaconInfoMap;
|
||||
///\brief this vector keeps pointers to MAC-plugins
|
||||
typedef std::map<uint32_t, Ptr<PeerManagementProtocolMac> > PeerManagementProtocolMacMap;
|
||||
///\}
|
||||
// \}
|
||||
private:
|
||||
PeerManagementProtocol& operator= (const PeerManagementProtocol &);
|
||||
PeerManagementProtocol (const PeerManagementProtocol &);
|
||||
@@ -200,7 +201,7 @@ private:
|
||||
*/
|
||||
Time TuToTime (uint32_t x);
|
||||
uint32_t TimeToTu (Time x);
|
||||
///\}
|
||||
// \}
|
||||
|
||||
/// Aux. method to register open links
|
||||
void NotifyLinkOpen (Mac48Address peerMp, Mac48Address peerIface, Mac48Address myIface, uint32_t interface);
|
||||
@@ -218,9 +219,9 @@ private:
|
||||
bool m_enableBca;
|
||||
/// Beacon can be shifted at [-m_maxBeaconShift; +m_maxBeaconShift] TUs
|
||||
uint16_t m_maxBeaconShift;
|
||||
///Last beacon at each interface
|
||||
/// Last beacon at each interface
|
||||
std::map<uint32_t, Time> m_lastBeacon;
|
||||
///Beacon interval at each interface
|
||||
/// Beacon interval at each interface
|
||||
std::map<uint32_t, Time> m_beaconInterval;
|
||||
|
||||
/**
|
||||
@@ -248,7 +249,7 @@ private:
|
||||
LinkEventCallback m_linkCloseTraceSrc;
|
||||
|
||||
///\name Statistics:
|
||||
///\{
|
||||
// \{
|
||||
struct Statistics {
|
||||
uint16_t linksTotal;
|
||||
uint16_t linksOpened;
|
||||
@@ -258,7 +259,7 @@ private:
|
||||
void Print (std::ostream & os) const;
|
||||
};
|
||||
struct Statistics m_stats;
|
||||
///\}
|
||||
// \}
|
||||
};
|
||||
|
||||
} // namespace dot11s
|
||||
|
||||
@@ -58,7 +58,7 @@ public:
|
||||
* \param mpAddress is mesh point address
|
||||
*/
|
||||
WifiMacHeader CreateHeader (Mac48Address address, Mac48Address mpAddress);
|
||||
///Returns a beacon interval of wifi beacon
|
||||
/// Returns a beacon interval of wifi beacon
|
||||
Time GetBeaconInterval () const;
|
||||
/// Create frame = { beacon header + all information elements sorted by ElementId () }
|
||||
Ptr<Packet> CreatePacket ();
|
||||
|
||||
@@ -61,19 +61,19 @@ public:
|
||||
virtual ~MeshWifiInterfaceMac ();
|
||||
|
||||
///\name Inherited from WifiMac
|
||||
//\{
|
||||
// \{
|
||||
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
|
||||
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
|
||||
virtual bool SupportsSendFrom () const;
|
||||
virtual void SetLinkUpCallback (Callback<void> linkUp);
|
||||
//\}
|
||||
// \}
|
||||
///\name Each mesh point interfaces must know the mesh point address
|
||||
//\{
|
||||
// \{
|
||||
void SetMeshPointAddress (Mac48Address);
|
||||
Mac48Address GetMeshPointAddress () const;
|
||||
//\}
|
||||
// \}
|
||||
///\name Beacons
|
||||
//\{
|
||||
// \{
|
||||
/// Set maximum initial random delay before first beacon
|
||||
void SetRandomStartDelay (Time interval);
|
||||
/// Set interval between two successive beacons
|
||||
@@ -94,13 +94,13 @@ public:
|
||||
* \attention User of ShiftTbtt () must take care to not shift it to the past.
|
||||
*/
|
||||
void ShiftTbtt (Time shift);
|
||||
//\}
|
||||
// \}
|
||||
|
||||
///\name Plugins
|
||||
//\{
|
||||
// \{
|
||||
/// Install plugin. TODO return unique ID to allow unregister plugins
|
||||
void InstallPlugin (Ptr<MeshWifiInterfaceMacPlugin> plugin);
|
||||
//\}
|
||||
// \}
|
||||
|
||||
/** \name Channel switching
|
||||
*
|
||||
@@ -109,12 +109,12 @@ public:
|
||||
*
|
||||
* Number of channels to use must be limited elsewhere.
|
||||
*/
|
||||
//\{
|
||||
// \{
|
||||
/// Current channel Id
|
||||
uint16_t GetFrequencyChannel () const;
|
||||
/// Switch channel
|
||||
void SwitchFrequencyChannel (uint16_t new_id);
|
||||
//\}
|
||||
// \}
|
||||
|
||||
/// To be used by plugins sending management frames.
|
||||
void SendManagementFrame (Ptr<Packet> frame, const WifiMacHeader& hdr);
|
||||
@@ -122,11 +122,11 @@ public:
|
||||
bool CheckSupportedRates (SupportedRates rates) const;
|
||||
/// \return list of supported bitrates
|
||||
SupportedRates GetSupportedRates () const;
|
||||
///\ name Metric Calculation routines:
|
||||
///\{
|
||||
///\name Metric Calculation routines:
|
||||
// \{
|
||||
void SetLinkMetricCallback (Callback<uint32_t, Mac48Address, Ptr<MeshWifiInterfaceMac> > cb);
|
||||
uint32_t GetLinkMetric (Mac48Address peerAddress);
|
||||
///\}
|
||||
// \}
|
||||
///\brief Statistics:
|
||||
void Report (std::ostream &) const;
|
||||
void ResetStats ();
|
||||
@@ -152,14 +152,14 @@ private:
|
||||
typedef std::vector<Ptr<MeshWifiInterfaceMacPlugin> > PluginList;
|
||||
|
||||
///\name Mesh timing intervals
|
||||
//\{
|
||||
// \{
|
||||
/// Beaconing interval.
|
||||
Time m_beaconInterval;
|
||||
/// Maximum delay before first beacon
|
||||
Time m_randomStart;
|
||||
/// Time for the next frame
|
||||
Time m_tbtt;
|
||||
//\}
|
||||
// \}
|
||||
|
||||
/// Mesh point address
|
||||
Mac48Address m_mpAddress;
|
||||
@@ -170,7 +170,7 @@ private:
|
||||
PluginList m_plugins;
|
||||
Callback<uint32_t, Mac48Address, Ptr<MeshWifiInterfaceMac> > m_linkMetricCallback;
|
||||
///\name Statistics:
|
||||
///\{
|
||||
// \{
|
||||
struct Statistics
|
||||
{
|
||||
uint16_t recvBeacons;
|
||||
@@ -183,7 +183,7 @@ private:
|
||||
Statistics ();
|
||||
};
|
||||
Statistics m_stats;
|
||||
///\}
|
||||
// \}
|
||||
/// Current PHY standard: needed to configure metric
|
||||
WifiPhyStandard m_standard;
|
||||
};
|
||||
|
||||
@@ -168,9 +168,10 @@ private:
|
||||
* were serialized in the byte buffer. The maintenance of metadata is
|
||||
* optional and disabled by default. To enable it, you must call
|
||||
* Packet::EnablePrinting and this will allow you to get non-empty
|
||||
* output from Packet::Print and Packet::Print. If you wish to only enable
|
||||
* output from Packet::Print. If you wish to only enable
|
||||
* checking of metadata, and do not need any printing capability, you can
|
||||
* call Packet::EnableChecking: its runtime cost is lower than Packet::EnablePrinting.
|
||||
* call Packet::EnableChecking: its runtime cost is lower than
|
||||
* Packet::EnablePrinting.
|
||||
*
|
||||
* - The set of tags contain simulation-specific information which cannot
|
||||
* be stored in the packet byte buffer because the protocol headers or trailers
|
||||
@@ -415,7 +416,7 @@ public:
|
||||
/**
|
||||
* By default, packets do not keep around enough metadata to
|
||||
* perform the operations requested by the Print methods. If you
|
||||
* want to be able to invoke any of the two ::Print methods,
|
||||
* want to be able the Packet::Print method,
|
||||
* you need to invoke this method at least once during the
|
||||
* simulation setup and before any packet is created.
|
||||
*/
|
||||
|
||||
@@ -21,8 +21,7 @@
|
||||
*/
|
||||
|
||||
///
|
||||
/// \file olsr-repositories.h
|
||||
/// \brief Here are defined all data structures needed by an OLSR node.
|
||||
/// \brief Here are defined all data structures needed by an OLSR node.
|
||||
///
|
||||
|
||||
#ifndef OLSR_REPOSITORIES_H
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
|
||||
|
||||
///
|
||||
/// \file OLSR.cc
|
||||
/// \brief Implementation of OLSR agent and related classes.
|
||||
/// \brief Implementation of OLSR agent and related classes.
|
||||
///
|
||||
/// This is the main file of this software because %OLSR's behaviour is
|
||||
/// implemented here.
|
||||
@@ -499,7 +498,6 @@ RoutingProtocol::RecvOlsr (Ptr<Socket> socket)
|
||||
receiverIfaceAddr, inetSourceAddr.GetIpv4 ());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// After processing all OLSR messages, we must recompute the routing table
|
||||
@@ -573,7 +571,6 @@ RoutingProtocol::MprComputation ()
|
||||
// MPR computation should be done for each interface. See section 8.3.1
|
||||
// (RFC 3626) for details.
|
||||
MprSet mprSet;
|
||||
|
||||
|
||||
// N is the subset of neighbors of the node, which are
|
||||
// neighbor "of the interface I"
|
||||
@@ -586,7 +583,7 @@ RoutingProtocol::MprComputation ()
|
||||
N.push_back (*neighbor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// N2 is the set of 2-hop neighbors reachable from "the interface
|
||||
// I", excluding:
|
||||
// (i) the nodes only reachable by members of N with willingness WILL_NEVER
|
||||
@@ -681,7 +678,7 @@ RoutingProtocol::MprComputation ()
|
||||
|
||||
// 2. Calculate D(y), where y is a member of N, for all nodes in N.
|
||||
// (we do this later)
|
||||
|
||||
|
||||
// 3. Add to the MPR set those nodes in N, which are the *only*
|
||||
// nodes to provide reachability to a node in N2.
|
||||
std::set<Ipv4Address> coveredTwoHopNeighbors;
|
||||
@@ -734,7 +731,7 @@ RoutingProtocol::MprComputation ()
|
||||
twoHopNeigh++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 4. While there exist nodes in N2 which are not covered by at
|
||||
// least one node in the MPR set:
|
||||
while (N2.begin () != N2.end ())
|
||||
@@ -882,7 +879,7 @@ RoutingProtocol::RoutingTableComputation ()
|
||||
|
||||
// 1. All the entries from the routing table are removed.
|
||||
Clear ();
|
||||
|
||||
|
||||
// 2. The new routing entries are added starting with the
|
||||
// symmetric neighbors (h=1) as the destination nodes.
|
||||
const NeighborSet &neighborSet = m_state.GetNeighbors ();
|
||||
@@ -1080,9 +1077,9 @@ RoutingProtocol::RoutingTableComputation ()
|
||||
|
||||
// 4. For each entry in the multiple interface association base
|
||||
// where there exists a routing entry such that:
|
||||
// R_dest_addr == I_main_addr (of the multiple interface association entry)
|
||||
// R_dest_addr == I_main_addr (of the multiple interface association entry)
|
||||
// AND there is no routing entry such that:
|
||||
// R_dest_addr == I_iface_addr
|
||||
// R_dest_addr == I_iface_addr
|
||||
const IfaceAssocSet &ifaceAssocSet = m_state.GetIfaceAssocSet ();
|
||||
for (IfaceAssocSet::const_iterator it = ifaceAssocSet.begin ();
|
||||
it != ifaceAssocSet.end (); it++)
|
||||
@@ -1268,13 +1265,13 @@ RoutingProtocol::ProcessTc (const olsr::MessageHeader &msg,
|
||||
{
|
||||
const olsr::MessageHeader::Tc &tc = msg.GetTc ();
|
||||
Time now = Simulator::Now ();
|
||||
|
||||
|
||||
// 1. If the sender interface of this message is not in the symmetric
|
||||
// 1-hop neighborhood of this node, the message MUST be discarded.
|
||||
const LinkTuple *link_tuple = m_state.FindSymLinkTuple (senderIface, now);
|
||||
if (link_tuple == NULL)
|
||||
return;
|
||||
|
||||
|
||||
// 2. If there exist some tuple in the topology set where:
|
||||
// T_last_addr == originator address AND
|
||||
// T_seq > ANSN,
|
||||
@@ -1284,10 +1281,10 @@ RoutingProtocol::ProcessTc (const olsr::MessageHeader &msg,
|
||||
m_state.FindNewerTopologyTuple (msg.GetOriginatorAddress (), tc.ansn);
|
||||
if (topologyTuple != NULL)
|
||||
return;
|
||||
|
||||
|
||||
// 3. All tuples in the topology set where:
|
||||
// T_last_addr == originator address AND
|
||||
// T_seq < ANSN
|
||||
// T_last_addr == originator address AND
|
||||
// T_seq < ANSN
|
||||
// MUST be removed from the topology set.
|
||||
m_state.EraseOlderTopologyTuples (msg.GetOriginatorAddress (), tc.ansn);
|
||||
|
||||
@@ -1298,10 +1295,10 @@ RoutingProtocol::ProcessTc (const olsr::MessageHeader &msg,
|
||||
{
|
||||
const Ipv4Address &addr = *i;
|
||||
// 4.1. If there exist some tuple in the topology set where:
|
||||
// T_dest_addr == advertised neighbor main address, AND
|
||||
// T_last_addr == originator address,
|
||||
// T_dest_addr == advertised neighbor main address, AND
|
||||
// T_last_addr == originator address,
|
||||
// then the holding time of that tuple MUST be set to:
|
||||
// T_time = current time + validity time.
|
||||
// T_time = current time + validity time.
|
||||
TopologyTuple *topologyTuple =
|
||||
m_state.FindTopologyTuple (addr, msg.GetOriginatorAddress ());
|
||||
|
||||
@@ -1313,10 +1310,10 @@ RoutingProtocol::ProcessTc (const olsr::MessageHeader &msg,
|
||||
{
|
||||
// 4.2. Otherwise, a new tuple MUST be recorded in the topology
|
||||
// set where:
|
||||
// T_dest_addr = advertised neighbor main address,
|
||||
// T_last_addr = originator address,
|
||||
// T_seq = ANSN,
|
||||
// T_time = current time + validity time.
|
||||
// T_dest_addr = advertised neighbor main address,
|
||||
// T_last_addr = originator address,
|
||||
// T_seq = ANSN,
|
||||
// T_time = current time + validity time.
|
||||
TopologyTuple topologyTuple;;
|
||||
topologyTuple.destAddr = addr;
|
||||
topologyTuple.lastAddr = msg.GetOriginatorAddress ();
|
||||
@@ -1376,7 +1373,7 @@ RoutingProtocol::ProcessMid (const olsr::MessageHeader &msg,
|
||||
" the message MUST be discarded.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 2. For each interface address listed in the MID message
|
||||
for (std::vector<Ipv4Address>::const_iterator i = mid.interfaceAddresses.begin ();
|
||||
i != mid.interfaceAddresses.end (); i++)
|
||||
@@ -1526,7 +1523,7 @@ RoutingProtocol::ForwardDefault (olsr::MessageHeader olsrMessage,
|
||||
" from " << olsrMessage.GetOriginatorAddress () << " because it is duplicated");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// If the sender interface address is an interface address
|
||||
// of a MPR selector of this node and ttl is greater than 1,
|
||||
// the message must be retransmitted
|
||||
@@ -1545,7 +1542,7 @@ RoutingProtocol::ForwardDefault (olsr::MessageHeader olsrMessage,
|
||||
retransmitted = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Update duplicate tuple...
|
||||
if (duplicated != NULL)
|
||||
{
|
||||
@@ -1680,7 +1677,7 @@ RoutingProtocol::SendHello ()
|
||||
|
||||
std::vector<olsr::MessageHeader::Hello::LinkMessage>
|
||||
&linkMessages = hello.linkMessages;
|
||||
|
||||
|
||||
const LinkSet &links = m_state.GetLinks ();
|
||||
for (LinkSet::const_iterator link_tuple = links.begin ();
|
||||
link_tuple != links.end (); link_tuple++)
|
||||
@@ -1921,7 +1918,7 @@ RoutingProtocol::RemoveHostNetworkAssociation (Ipv4Address networkAddr, Ipv4Mask
|
||||
/// in HNA messages sent by the node.
|
||||
/// If this method is called more than once, entries from the old
|
||||
/// association are deleted before entries from the new one are added.
|
||||
/// \param the Ipv4StaticRouting routing table to be associated.
|
||||
/// \param routingTable the Ipv4StaticRouting routing table to be associated.
|
||||
///
|
||||
void
|
||||
RoutingProtocol::SetRoutingTableAssociation (Ptr<Ipv4StaticRouting> routingTable)
|
||||
@@ -1983,8 +1980,8 @@ RoutingProtocol::UsesNonOlsrOutgoingInterface (const Ipv4RoutingTableEntry &rout
|
||||
}
|
||||
|
||||
///
|
||||
/// \brief Updates Link Set according to a new received HELLO message (following RFC 3626
|
||||
/// specification). Neighbor Set is also updated if needed.
|
||||
/// \brief Updates Link Set according to a new received HELLO message
|
||||
/// (following RFC 3626 specification). Neighbor Set is also updated if needed.
|
||||
void
|
||||
RoutingProtocol::LinkSensing (const olsr::MessageHeader &msg,
|
||||
const olsr::MessageHeader::Hello &hello,
|
||||
@@ -1997,7 +1994,7 @@ RoutingProtocol::LinkSensing (const olsr::MessageHeader &msg,
|
||||
NS_LOG_DEBUG ("@" << now.GetSeconds () << ": Olsr node " << m_mainAddress
|
||||
<< ": LinkSensing(receiverIface=" << receiverIface
|
||||
<< ", senderIface=" << senderIface << ") BEGIN");
|
||||
|
||||
|
||||
NS_ASSERT (msg.GetVTime () > Seconds (0));
|
||||
LinkTuple *link_tuple = m_state.FindLinkTuple (senderIface);
|
||||
if (link_tuple == NULL)
|
||||
@@ -2017,7 +2014,7 @@ RoutingProtocol::LinkSensing (const olsr::MessageHeader &msg,
|
||||
NS_LOG_LOGIC ("Existing link tuple already exists => will update it");
|
||||
updated = true;
|
||||
}
|
||||
|
||||
|
||||
link_tuple->asymTime = now + msg.GetVTime ();
|
||||
for (std::vector<olsr::MessageHeader::Hello::LinkMessage>::const_iterator linkMessage =
|
||||
hello.linkMessages.begin ();
|
||||
@@ -2118,8 +2115,8 @@ RoutingProtocol::LinkSensing (const olsr::MessageHeader &msg,
|
||||
}
|
||||
|
||||
///
|
||||
/// \brief Updates the Neighbor Set according to the information contained in a new received
|
||||
/// HELLO message (following RFC 3626).
|
||||
/// \brief Updates the Neighbor Set according to the information contained in
|
||||
/// a new received HELLO message (following RFC 3626).
|
||||
void
|
||||
RoutingProtocol::PopulateNeighborSet (const olsr::MessageHeader &msg,
|
||||
const olsr::MessageHeader::Hello &hello)
|
||||
@@ -2133,8 +2130,8 @@ RoutingProtocol::PopulateNeighborSet (const olsr::MessageHeader &msg,
|
||||
|
||||
|
||||
///
|
||||
/// \brief Updates the 2-hop Neighbor Set according to the information contained in a new
|
||||
/// received HELLO message (following RFC 3626).
|
||||
/// \brief Updates the 2-hop Neighbor Set according to the information contained
|
||||
/// in a new received HELLO message (following RFC 3626).
|
||||
void
|
||||
RoutingProtocol::PopulateTwoHopNeighborSet (const olsr::MessageHeader &msg,
|
||||
const olsr::MessageHeader::Hello &hello)
|
||||
@@ -2142,7 +2139,7 @@ RoutingProtocol::PopulateTwoHopNeighborSet (const olsr::MessageHeader &msg,
|
||||
Time now = Simulator::Now ();
|
||||
|
||||
NS_LOG_DEBUG ("Olsr node " << m_mainAddress << ": PopulateTwoHopNeighborSet BEGIN");
|
||||
|
||||
|
||||
for (LinkSet::const_iterator link_tuple = m_state.GetLinks ().begin ();
|
||||
link_tuple != m_state.GetLinks ().end (); link_tuple++)
|
||||
{
|
||||
@@ -2245,8 +2242,8 @@ RoutingProtocol::PopulateTwoHopNeighborSet (const olsr::MessageHeader &msg,
|
||||
|
||||
|
||||
///
|
||||
/// \brief Updates the MPR Selector Set according to the information contained in a new
|
||||
/// received HELLO message (following RFC 3626).
|
||||
/// \brief Updates the MPR Selector Set according to the information contained in
|
||||
/// a new received HELLO message (following RFC 3626).
|
||||
void
|
||||
RoutingProtocol::PopulateMprSelectorSet (const olsr::MessageHeader &msg,
|
||||
const olsr::MessageHeader::Hello &hello)
|
||||
@@ -2254,7 +2251,7 @@ RoutingProtocol::PopulateMprSelectorSet (const olsr::MessageHeader &msg,
|
||||
NS_LOG_FUNCTION (this);
|
||||
|
||||
Time now = Simulator::Now ();
|
||||
|
||||
|
||||
typedef std::vector<olsr::MessageHeader::Hello::LinkMessage> LinkMessageVec;
|
||||
for (LinkMessageVec::const_iterator linkMessage = hello.linkMessages.begin ();
|
||||
linkMessage != hello.linkMessages.end ();
|
||||
@@ -2305,9 +2302,9 @@ RoutingProtocol::PopulateMprSelectorSet (const olsr::MessageHeader &msg,
|
||||
|
||||
#if 0
|
||||
///
|
||||
/// \brief Drops a given packet because it couldn't be delivered to the corresponding
|
||||
/// destination by the MAC layer. This may cause a neighbor loss, and appropiate
|
||||
/// actions are then taken.
|
||||
/// \brief Drops a given packet because it couldn't be delivered to the corresponding
|
||||
/// destination by the MAC layer. This may cause a neighbor loss, and appropiate
|
||||
/// actions are then taken.
|
||||
///
|
||||
/// \param p the packet which couldn't be delivered by the MAC layer.
|
||||
///
|
||||
@@ -2316,17 +2313,17 @@ OLSR::mac_failed (Ptr<Packet> p) {
|
||||
double now = Simulator::Now ();
|
||||
struct hdr_ip* ih = HDR_IP (p);
|
||||
struct hdr_cmn* ch = HDR_CMN (p);
|
||||
|
||||
|
||||
debug ("%f: Node %d MAC Layer detects a breakage on link to %d\n",
|
||||
now,
|
||||
OLSR::node_id (ra_addr ()),
|
||||
OLSR::node_id (ch->next_hop ()));
|
||||
|
||||
|
||||
if ((u_int32_t)ih->daddr () == IP_BROADCAST) {
|
||||
drop (p, DROP_RTR_MAC_CALLBACK);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
OLSR_link_tuple* link_tuple = state_.find_link_tuple (ch->next_hop ());
|
||||
if (link_tuple != NULL) {
|
||||
link_tuple->lost_time () = now + OLSR_NEIGHB_HOLD_TIME;
|
||||
@@ -2431,8 +2428,8 @@ RoutingProtocol::RemoveLinkTuple (const LinkTuple &tuple)
|
||||
}
|
||||
|
||||
///
|
||||
/// \brief This function is invoked when a link tuple is updated. Its aim is to
|
||||
/// also update the corresponding neighbor tuple if it is needed.
|
||||
/// \brief This function is invoked when a link tuple is updated. Its aim is to
|
||||
/// also update the corresponding neighbor tuple if it is needed.
|
||||
///
|
||||
/// \param tuple the link tuple which has been updated.
|
||||
///
|
||||
@@ -2525,7 +2522,7 @@ RoutingProtocol::RemoveNeighborTuple (const NeighborTuple &tuple)
|
||||
// OLSR::node_id(ra_addr()),
|
||||
// OLSR::node_id(tuple->neighborMainAddr),
|
||||
// ((tuple->status() == OLSR_STATUS_SYM) ? "sym" : "not_sym"));
|
||||
|
||||
|
||||
m_state.EraseNeighborTuple (tuple);
|
||||
IncrementAnsn ();
|
||||
}
|
||||
@@ -2987,7 +2984,7 @@ RoutingProtocol::Clear ()
|
||||
|
||||
///
|
||||
/// \brief Deletes the entry whose destination address is given.
|
||||
/// \param dest address of the destination node.
|
||||
/// \param dest address of the destination node.
|
||||
///
|
||||
void
|
||||
RoutingProtocol::RemoveEntry (Ipv4Address const &dest)
|
||||
@@ -2997,9 +2994,9 @@ RoutingProtocol::RemoveEntry (Ipv4Address const &dest)
|
||||
|
||||
///
|
||||
/// \brief Looks up an entry for the specified destination address.
|
||||
/// \param dest destination address.
|
||||
/// \param dest destination address.
|
||||
/// \param outEntry output parameter to hold the routing entry result, if fuond
|
||||
/// \return true if found, false if not found
|
||||
/// \return true if found, false if not found
|
||||
///
|
||||
bool
|
||||
RoutingProtocol::Lookup (Ipv4Address const &dest,
|
||||
@@ -3016,8 +3013,8 @@ RoutingProtocol::Lookup (Ipv4Address const &dest,
|
||||
}
|
||||
|
||||
///
|
||||
/// \brief Finds the appropiate entry which must be used in order to forward
|
||||
/// a data packet to a next hop (given a destination).
|
||||
/// \brief Finds the appropiate entry which must be used in order to forward
|
||||
/// a data packet to a next hop (given a destination).
|
||||
///
|
||||
/// Imagine a routing table like this: [A,B] [B,C] [C,C]; being each pair of the
|
||||
/// form [dest addr,next-hop addr]. In this case, if this function is invoked with
|
||||
@@ -3025,11 +3022,11 @@ RoutingProtocol::Lookup (Ipv4Address const &dest,
|
||||
/// to forward a data packet destined to A. That is, C is a neighbor of this node,
|
||||
/// but B isn't. This function finds the appropiate neighbor for forwarding a packet.
|
||||
///
|
||||
/// \param entry the routing table entry which indicates the destination node
|
||||
/// we are interested in.
|
||||
/// \return the appropiate routing table entry which indicates the next
|
||||
/// hop which must be used for forwarding a data packet, or NULL
|
||||
/// if there is no such entry.
|
||||
/// \param entry the routing table entry which indicates the destination node
|
||||
/// we are interested in.
|
||||
/// \return the appropiate routing table entry which indicates the next
|
||||
/// hop which must be used for forwarding a data packet, or NULL
|
||||
/// if there is no such entry.
|
||||
///
|
||||
bool
|
||||
RoutingProtocol::FindSendEntry (RoutingTableEntry const &entry,
|
||||
@@ -3239,10 +3236,10 @@ RoutingProtocol::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress a
|
||||
///
|
||||
/// If an entry for the given destination existed, it is deleted and freed.
|
||||
///
|
||||
/// \param dest address of the destination node.
|
||||
/// \param next address of the next hop node.
|
||||
/// \param iface address of the local interface.
|
||||
/// \param dist distance to the destination node.
|
||||
/// \param dest address of the destination node.
|
||||
/// \param next address of the next hop node.
|
||||
/// \param iface address of the local interface.
|
||||
/// \param dist distance to the destination node.
|
||||
///
|
||||
void
|
||||
RoutingProtocol::AddEntry (Ipv4Address const &dest,
|
||||
@@ -3348,7 +3345,7 @@ RoutingProtocol::Dump (void)
|
||||
#endif //NS3_LOG_ENABLE
|
||||
}
|
||||
|
||||
}
|
||||
} // namespace olsr, ns3
|
||||
} // namespace olsr
|
||||
} // namespace ns3
|
||||
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
///
|
||||
/// \file OlsrState.cc
|
||||
/// \file olsr-state.cc
|
||||
/// \brief Implementation of all functions needed for manipulating the internal
|
||||
/// state of an OLSR node.
|
||||
///
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
|
||||
/**
|
||||
* \brief Enables a chain of loss models to act on the signal
|
||||
* \param The next PropagationLossModel to add to the chain
|
||||
* \param next The next PropagationLossModel to add to the chain
|
||||
*
|
||||
* This method of chaining propagation loss models only works commutatively
|
||||
* if the propagation loss of all models in the chain are independent
|
||||
@@ -515,8 +515,8 @@ public:
|
||||
* \brief Set loss (in dB, positive) between pair of ns-3 objects
|
||||
* (typically, nodes).
|
||||
*
|
||||
* \param ma Source mobility model
|
||||
* \param mb Destination mobility model
|
||||
* \param a ma Source mobility model
|
||||
* \param b mb Destination mobility model
|
||||
* \param loss a -> b path loss, positive in dB
|
||||
* \param symmetric If true (default), both a->b and b->a paths will be affected
|
||||
*/
|
||||
|
||||
@@ -37,11 +37,7 @@ class SpectrumChannel;
|
||||
|
||||
/**
|
||||
* \ingroup spectrum
|
||||
*
|
||||
*
|
||||
* create the NetDevice depicted in the figure
|
||||
* @image html HdOfdmAlohaNoAck.png
|
||||
*
|
||||
* \brief create the AlohaNoackNetDevice
|
||||
*/
|
||||
class AdhocAlohaNoackIdealPhyHelper
|
||||
{
|
||||
|
||||
@@ -434,23 +434,23 @@ public:
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param base the base
|
||||
* @param exp the exponent
|
||||
* @param lhs the base
|
||||
* @param rhs the exponent
|
||||
*
|
||||
* @return each value in base raised to the exponent
|
||||
*/
|
||||
friend SpectrumValue Pow (const SpectrumValue& base, double exp);
|
||||
friend SpectrumValue Pow (const SpectrumValue& lhs, double rhs);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param base the base
|
||||
* @param exp the exponent
|
||||
* @param lhs the base
|
||||
* @param rhs the exponent
|
||||
*
|
||||
* @return the value in base raised to each value in the exponent
|
||||
*/
|
||||
friend SpectrumValue Pow (double base, const SpectrumValue& exp);
|
||||
friend SpectrumValue Pow (double lhs, const SpectrumValue& rhs);
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -535,15 +535,14 @@ std::ostream& operator << (std::ostream& os, const SpectrumValue& pvf);
|
||||
double Norm (const SpectrumValue& x);
|
||||
double Sum (const SpectrumValue& x);
|
||||
double Prod (const SpectrumValue& x);
|
||||
SpectrumValue Pow (const SpectrumValue& base, double exp);
|
||||
SpectrumValue Pow (double base, const SpectrumValue& exp);
|
||||
SpectrumValue Log10 (const SpectrumValue& arg);
|
||||
SpectrumValue Log2 (const SpectrumValue& arg);
|
||||
SpectrumValue Log (const SpectrumValue& arg);
|
||||
SpectrumValue Pow (const SpectrumValue& lhs, double rhs);
|
||||
SpectrumValue Pow (double lhs, const SpectrumValue& rhs);
|
||||
SpectrumValue Log10 (const SpectrumValue& arg);
|
||||
SpectrumValue Log2 (const SpectrumValue& arg);
|
||||
SpectrumValue Log (const SpectrumValue& arg);
|
||||
double Integral (const SpectrumValue& x);
|
||||
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
|
||||
#endif /* SPECTRUM_VALUE_H */
|
||||
|
||||
@@ -188,8 +188,8 @@ public:
|
||||
|
||||
NetDeviceContainer Install (NodeContainer c) const;
|
||||
/**
|
||||
* \param channel a channel to use
|
||||
* \param c a set of nodes
|
||||
* \param channel a channel to use
|
||||
*
|
||||
* For each of the input nodes, a new ns3::UanNetDevice is attached
|
||||
* to the shared input channel. Each ns3::UanNetDevice is also
|
||||
@@ -202,6 +202,7 @@ public:
|
||||
|
||||
/**
|
||||
* \param node a node where to install the uan components
|
||||
* \param channel a channel to use
|
||||
*
|
||||
* Create a default uan stack with:
|
||||
* - default channel, ideal propagation and default noise model
|
||||
|
||||
@@ -169,7 +169,7 @@ class UanPhy : public Object
|
||||
public:
|
||||
static TypeId GetTypeId (void);
|
||||
|
||||
// / Enum defining possible Phy states
|
||||
/// Enum defining possible Phy states
|
||||
enum State
|
||||
{
|
||||
IDLE, CCABUSY, RX, TX, SLEEP
|
||||
|
||||
@@ -200,7 +200,7 @@ std::ostream &operator << (std::ostream &os, const UanModesList &ml);
|
||||
*/
|
||||
std::istream &operator >> (std::istream &is, UanModesList &ml);
|
||||
|
||||
///UanModesList is attribute value
|
||||
/// UanModesList is attribute value
|
||||
ATTRIBUTE_HELPER_HEADER (UanModesList);
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
@@ -121,7 +121,7 @@ private:
|
||||
|
||||
double m_noiseFigure; /**< noise figure (linear) */
|
||||
Ptr<ErrorRateModel> m_errorRateModel;
|
||||
///Experimental: needed for energy duration calculation
|
||||
/// Experimental: needed for energy duration calculation
|
||||
NiChanges m_niChanges;
|
||||
double m_firstPower;
|
||||
bool m_rxing;
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
WifiInformationElementVector ();
|
||||
~WifiInformationElementVector ();
|
||||
///\name Inherited from Header
|
||||
//\{
|
||||
// \{
|
||||
static TypeId GetTypeId ();
|
||||
TypeId GetInstanceTypeId () const;
|
||||
virtual uint32_t GetSerializedSize () const;
|
||||
|
||||
@@ -252,11 +252,9 @@ public:
|
||||
*/
|
||||
static WifiMode GetPlcpHeaderMode (WifiMode payloadMode, WifiPreamble preamble);
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
/**
|
||||
* \param payloadMode the WifiMode use for the transmission of the payload
|
||||
* \param preamble the type of preamble
|
||||
* \param preamble the type of preamble
|
||||
*
|
||||
* \return the duration of the PLCP header in microseconds
|
||||
*/
|
||||
@@ -271,8 +269,8 @@ public:
|
||||
static uint32_t GetPlcpPreambleDurationMicroSeconds (WifiMode payloadMode, WifiPreamble preamble);
|
||||
|
||||
/**
|
||||
* \param size the number of bytes in the packet to send
|
||||
* \param payloadMode the WifiMode use for the transmission of the payload
|
||||
* \param preamble the type of preamble
|
||||
*
|
||||
* \return the duration of the payload in microseconds
|
||||
*/
|
||||
|
||||
@@ -64,17 +64,17 @@ private:
|
||||
* because it resets time of last update.
|
||||
*/
|
||||
double CalculateAveragingCoefficient ();
|
||||
///averaging coefficient depends on the memory time
|
||||
/// averaging coefficient depends on the memory time
|
||||
Time m_memoryTime;
|
||||
///when last update has occured
|
||||
/// when last update has occured
|
||||
Time m_lastUpdate;
|
||||
/// moving percentage of failed frames
|
||||
double m_failAvg;
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief hold a list of per-remote-station state.
|
||||
* \ingroup wifi
|
||||
* \brief hold a list of per-remote-station state.
|
||||
*
|
||||
* \sa ns3::WifiRemoteStation.
|
||||
*/
|
||||
|
||||
@@ -110,23 +110,23 @@ BSSchedulerRtps::AddDownlinkBurst (Ptr<const WimaxConnection> connection,
|
||||
m_downlinkBursts->push_back (std::make_pair (dlMapIe, burst));
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief A DownLink Scheduler for rtPS Flows
|
||||
*
|
||||
* The DL Scheduler assigns the available bandwidth in the following order:
|
||||
* - IR Connections
|
||||
* - Broadcast Connections
|
||||
* - Basic and Primary Connections
|
||||
* - UGS Connections
|
||||
* - rtPS Connections
|
||||
* - nrtPS Connections
|
||||
* - BE Connections
|
||||
* All rtPS flows that have packets in the queue can transmit at least one
|
||||
* packet, according to the available bandwidth.
|
||||
*/
|
||||
void
|
||||
BSSchedulerRtps::Schedule (void)
|
||||
{
|
||||
/**
|
||||
* \brief A DownLink Scheduler for rtPS Flows
|
||||
*
|
||||
* The DL Scheduler assigns the available bandwidth in the following order:
|
||||
* - IR Connections
|
||||
* - Broadcast Connections
|
||||
* - Basic and Primary Connections
|
||||
* - UGS Connections
|
||||
* - rtPS Connections
|
||||
* - nrtPS Connections
|
||||
* - BE Connections
|
||||
* All rtPS flows that have packets in the queue can transmit at least one
|
||||
* packet, according to the available bandwidth.
|
||||
*/
|
||||
|
||||
uint32_t availableSymbols = GetBs ()->GetNrDlSymbols ();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user