/usr/include/ns3.27/ns3/flame-rtable.h is in libns3-dev 3.27+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 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 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 FLAME_RTABLE_H
#define FLAME_RTABLE_H
#include <map>
#include "ns3/nstime.h"
#include "ns3/object.h"
#include "ns3/mac48-address.h"
namespace ns3 {
namespace flame {
/**
* \ingroup flame
*
* \brief Routing table for FLAME
*/
class FlameRtable : public Object
{
public:
/// Means all interfaces
const static uint32_t INTERFACE_ANY = 0xffffffff;
/// Maximum (the best?) path cost
const static uint32_t MAX_COST = 0xff;
/// Route lookup result, return type of LookupXXX methods
struct LookupResult
{
Mac48Address retransmitter; ///< retransmitter
uint32_t ifIndex; ///< IF index
uint8_t cost; ///< cost
uint16_t seqnum; ///< sequence number
/**
* Constructor
*
* \param r retransmitter MAC address
* \param i interfce index
* \param c cost
* \param s sequence number
*/
LookupResult (Mac48Address r = Mac48Address::GetBroadcast (),
uint32_t i = INTERFACE_ANY,
uint8_t c = MAX_COST,
uint16_t s = 0)
: retransmitter (r),
ifIndex (i),
cost (c),
seqnum (s)
{
}
/**
* \returns True for valid route
*/
bool IsValid () const;
/**
* Compare route lookup results, used by tests
*
* \param o the object to compare
* \returns true if equal
*/
bool operator== (const LookupResult & o) const;
};
public:
/**
* \brief Get the type ID.
* \return the object TypeId
*/
static TypeId GetTypeId ();
FlameRtable ();
~FlameRtable ();
void DoDispose ();
/**
* Add path
*
* \param destination the destination address
* \param retransmitter the retransmitter address
* \param interface the interface
* \param cost the cost
* \param seqnum the sequence number
*/
void AddPath (
const Mac48Address destination,
const Mac48Address retransmitter,
const uint32_t interface,
const uint8_t cost,
const uint16_t seqnum
);
/**
* \brief Lookup path to destination
* \param destination
* \return Broadcast if not found
*/
LookupResult Lookup (Mac48Address destination);
private:
/**
* assignment operator
*
* \param table the flame table to assign
* \returns the assigned value
*/
FlameRtable& operator= (const FlameRtable & table);
/// type conversion operator
FlameRtable (const FlameRtable &);
/// Routing table entry
struct Route
{
Mac48Address retransmitter; ///< retransmitter
uint32_t interface; ///< interface
uint32_t cost; ///< cost
Time whenExpire; ///< expire when?
uint32_t seqnum; ///< sequence number
};
/// Lifetime parameter
Time m_lifetime;
/// List of routes
std::map<Mac48Address, Route> m_routes;
};
} // namespace flame
} // namespace ns3
#endif /* FLAME_PROTOCOL_H */
|