/usr/include/ns3.26/ns3/hwmp-rtable.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 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2008,2009 IITP RAS
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Kirill Andreev <andreev@iitp.ru>
*/
#ifndef HWMP_RTABLE_H
#define HWMP_RTABLE_H
#include <map>
#include "ns3/nstime.h"
#include "ns3/mac48-address.h"
#include "ns3/hwmp-protocol.h"
namespace ns3 {
namespace dot11s {
/**
* \ingroup dot11s
*
* \brief Routing table for HWMP -- 802.11s routing protocol
*/
class HwmpRtable : public Object
{
public:
/// Means all interfaces
const static uint32_t INTERFACE_ANY = 0xffffffff;
/// Maximum (the best?) path metric
const static uint32_t MAX_METRIC = 0xffffffff;
/// Route lookup result, return type of LookupXXX methods
struct LookupResult
{
Mac48Address retransmitter;
uint32_t ifIndex;
uint32_t metric;
uint32_t seqnum;
Time lifetime;
LookupResult (Mac48Address r = Mac48Address::GetBroadcast (),
uint32_t i = INTERFACE_ANY,
uint32_t m = MAX_METRIC,
uint32_t s = 0,
Time l = Seconds (0.0));
/// True for valid route
bool IsValid () const;
/// Compare route lookup results, used by tests
bool operator== (const LookupResult & o) const;
};
/// Path precursor = {MAC, interface ID}
typedef std::vector<std::pair<uint32_t, Mac48Address> > PrecursorList;
public:
static TypeId GetTypeId ();
HwmpRtable ();
~HwmpRtable ();
void DoDispose ();
///\name Add/delete paths
//\{
void AddReactivePath (
Mac48Address destination,
Mac48Address retransmitter,
uint32_t interface,
uint32_t metric,
Time lifetime,
uint32_t seqnum
);
void AddProactivePath (
uint32_t metric,
Mac48Address root,
Mac48Address retransmitter,
uint32_t interface,
Time lifetime,
uint32_t seqnum
);
void AddPrecursor (Mac48Address destination, uint32_t precursorInterface, Mac48Address precursorAddress, Time lifetime);
PrecursorList GetPrecursors (Mac48Address destination);
void DeleteProactivePath ();
void DeleteProactivePath (Mac48Address root);
void DeleteReactivePath (Mac48Address destination);
//\}
///\name Lookup
//\{
/// Lookup path to destination
LookupResult LookupReactive (Mac48Address destination);
/// Return all reactive paths, including expired
LookupResult LookupReactiveExpired (Mac48Address destination);
/// Find proactive path to tree root. Note that calling this method has side effect of deleting expired proactive path
LookupResult LookupProactive ();
/// Return all proactive paths, including expired
LookupResult LookupProactiveExpired ();
//\}
/// When peer link with a given MAC-address fails - it returns list of unreachable destination addresses
std::vector<HwmpProtocol::FailedDestination> GetUnreachableDestinations (Mac48Address peerAddress);
private:
/// Route found in reactive mode
struct Precursor
{
Mac48Address address;
uint32_t interface;
Time whenExpire;
};
struct ReactiveRoute
{
Mac48Address retransmitter;
uint32_t interface;
uint32_t metric;
Time whenExpire;
uint32_t seqnum;
std::vector<Precursor> precursors;
};
/// Route fond in proactive mode
struct ProactiveRoute
{
Mac48Address root;
Mac48Address retransmitter;
uint32_t interface;
uint32_t metric;
Time whenExpire;
uint32_t seqnum;
std::vector<Precursor> precursors;
};
/// List of routes
std::map<Mac48Address, ReactiveRoute> m_routes;
/// Path to proactive tree root MP
ProactiveRoute m_root;
};
} // namespace dot11s
} // namespace ns3
#endif
|