author | Borovkova Elena <borovkovaes@iitp.ru> |
Thu, 16 Jul 2009 18:25:49 +0400 | |
changeset 5597 | 8e4c7f2aaead |
parent 5593 | 4c3166588c8b |
child 5601 | 82c874729b6c |
permissions | -rw-r--r-- |
5537 | 1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
2 |
/* |
|
5591
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
3 |
* Copyright (c) 2009 IITP RAS |
5537 | 4 |
* |
5 |
* This program is free software; you can redistribute it and/or modify |
|
6 |
* it under the terms of the GNU General Public License version 2 as |
|
7 |
* published by the Free Software Foundation; |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
17 |
* |
|
5591
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
18 |
* Based on |
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
19 |
* NS-2 AODV model developed by the CMU/MONARCH group and optimized and |
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
20 |
* tuned by Samir Das and Mahesh Marina, University of Cincinnati; |
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
21 |
* |
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
22 |
* AODV-UU implementation by Erik Nordström of Uppsala University |
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
23 |
* http://core.it.uu.se/core/index.php/AODV-UU |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
24 |
* |
5591
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
25 |
* Authors: Elena Borovkova <borovkovaes@iitp.ru> |
e0448da5da14
AODV copyright changed to IITP
Pavel Boyko <boyko@iitp.ru>
parents:
5586
diff
changeset
|
26 |
* Pavel Boyko <boyko@iitp.ru> |
5537 | 27 |
*/ |
28 |
#ifndef __aodv_rtable_h__ |
|
29 |
#define __aodv_rtable_h__ |
|
30 |
||
31 |
#include <cassert> |
|
5564
95a3e7beb97b
replacement of the vector by a map in rtable
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5562
diff
changeset
|
32 |
#include <map> |
5537 | 33 |
#include <sys/types.h> |
34 |
#include "ns3/ipv4.h" |
|
5592
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
35 |
#include "ns3/ipv4-route.h" |
5581
d74aff108ddc
AodvProtocol in progress, doesn't work
Pavel Boyko <boyko@iitp.ru>
parents:
5578
diff
changeset
|
36 |
#include "ns3/ipv4-address.h" |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
37 |
#include "ns3/nstime.h" |
5592
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
38 |
#include "ns3/net-device.h" |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
39 |
|
5537 | 40 |
|
41 |
namespace ns3 { |
|
42 |
namespace aodv { |
|
43 |
||
5562
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
44 |
#define INFINITY2 0xff |
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
45 |
#define DELETE_PERIOD 10 // seconds. TODO: remove defines |
5537 | 46 |
|
5584 | 47 |
enum RouteFlags |
48 |
{ |
|
49 |
RTF_DOWN = 0, |
|
50 |
RTF_UP = 1, |
|
51 |
RTF_IN_REPAIR = 2 |
|
52 |
}; |
|
5537 | 53 |
|
5538 | 54 |
/** |
55 |
* \ingroup aodv |
|
56 |
* \brief Route Table Entry |
|
5537 | 57 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
58 |
class RoutingTableEntry |
5537 | 59 |
{ |
60 |
public: |
|
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
61 |
RoutingTableEntry(Ptr<NetDevice> dev,Ipv4Address dst = Ipv4Address(), bool vSeqNo = false, u_int32_t m_seqNo = 0, Ipv4Address iface = Ipv4Address(), u_int16_t hops = 0, |
5592
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
62 |
Ipv4Address nextHop = Ipv4Address(), Time lifetime = Seconds(0)); |
5584 | 63 |
|
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
64 |
~RoutingTableEntry(); |
5562
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
65 |
|
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
66 |
///\name Precursors management |
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
67 |
//\{ |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
68 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
69 |
* Insert precursor in precursor list if it doesn't yet exist in the list |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
70 |
* \param id precursor address |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
71 |
* \return true on success |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
72 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
73 |
bool InsertPrecursor(Ipv4Address id); |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
74 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
75 |
* Lookup precursor by address |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
76 |
* \param id precursor address |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
77 |
* \return true on success |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
78 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
79 |
bool LookupPrecursor(Ipv4Address id); |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
80 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
81 |
* \brief Delete precursor |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
82 |
* \param id precursor address |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
83 |
* \return true on success |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
84 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
85 |
bool DeletePrecursor(Ipv4Address id); |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
86 |
/// Delete all precursors |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
87 |
void DeleteAllPrecursors(); |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
88 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
89 |
* \return true if precursor list empty |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
90 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
91 |
bool IsPrecursorListEmpty() const; |
5562
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
92 |
//\} |
5571
b82fbde6cf8d
BroadcastIdCache methods and SendRequest() added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5565
diff
changeset
|
93 |
/// Return last valid hop count |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
94 |
uint16_t GetLastValidHopCount() { return m_lastHopCount; } |
5562
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
95 |
/// Mark entry as "down" (i.e. disable it) |
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
96 |
void Down (); |
5574
093ebba1c04c
Set, Get methods for aodv_rt_entry added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5571
diff
changeset
|
97 |
///\name Fields |
093ebba1c04c
Set, Get methods for aodv_rt_entry added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5571
diff
changeset
|
98 |
//\{ |
5592
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
99 |
Ipv4Address GetDestination() const { return m_ipv4Route->GetDestination(); } |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
100 |
Ptr<Ipv4Route> GetRoute() const { return m_ipv4Route; } |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
101 |
void SetRoute(Ptr<Ipv4Route> r) { m_ipv4Route = r; } |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
102 |
void SetNextHop (Ipv4Address nextHop) { m_ipv4Route->SetGateway(nextHop); } |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
103 |
Ipv4Address GetNextHop () const { return m_ipv4Route->GetGateway(); } |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
104 |
void SetOutputDevice(Ptr<NetDevice> dev) { m_ipv4Route->SetOutputDevice(dev); } |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
105 |
Ptr<NetDevice> GetOutputDevice() const { return m_ipv4Route->GetOutputDevice(); } |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
106 |
void SetValidSeqNo(bool s) { m_validSeqNo = s; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
107 |
bool GetValidSeqNo() const { return m_validSeqNo; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
108 |
void SetSeqNo(uint32_t sn) { m_seqNo = sn; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
109 |
uint32_t GetSeqNo() const { return m_seqNo; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
110 |
void SetHop(uint16_t hop) { m_hops = hop; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
111 |
uint16_t GetHop() const {return m_hops; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
112 |
void SetLifeTime(Time lt) { m_lifeTime = lt; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
113 |
Time GetLifeTime() const { return m_lifeTime; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
114 |
void SetFlag(uint8_t flag) { m_flag = flag; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
115 |
uint8_t GetFlag() const { return m_flag; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
116 |
void SetRreqCnt(uint8_t n) { m_reqCount = n; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
117 |
uint8_t GetRreqCnt() const { return m_reqCount; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
118 |
void SetRreqTimeout(Time t) {m_reqTimeout = t; } |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
119 |
Time GetRreqTimeout() const { return m_reqTimeout; } |
5574
093ebba1c04c
Set, Get methods for aodv_rt_entry added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5571
diff
changeset
|
120 |
//\} |
093ebba1c04c
Set, Get methods for aodv_rt_entry added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5571
diff
changeset
|
121 |
|
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
122 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
123 |
* \brief Compare destination address |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
124 |
* \return true if equal |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
125 |
*/ |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
126 |
bool operator==(Ipv4Address const dst) const |
5537 | 127 |
{ |
5592
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
128 |
return (m_ipv4Route->GetDestination() == dst); |
5537 | 129 |
} |
5592
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
130 |
void Print(std::ostream & os) const; |
5562
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
131 |
private: |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
132 |
/// Valid Destination Sequence Number flag |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
133 |
bool m_validSeqNo; |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
134 |
/// Destination Sequence Number, if m_validSeqNo = true |
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
135 |
uint32_t m_seqNo; |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
136 |
/// Hop Count (number of hops needed to reach destination) |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
137 |
uint16_t m_hops; |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
138 |
/// Last valid hop count |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
139 |
uint16_t m_lastHopCount; |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
140 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
141 |
* \brief Expiration or deletion time of the route |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
142 |
* Lifetime field in the routing table plays dual role -- |
5544
e149190912e4
Rtable cosmetics + RREQ header
Pavel Boyko <boyko@iitp.ru>
parents:
5543
diff
changeset
|
143 |
* for an active route it is the expiration time, and for an invalid route |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
144 |
* it is the deletion time. |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
145 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
146 |
Time m_lifeTime; |
5592
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
147 |
/** Ip route, include |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
148 |
* - destination address |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
149 |
* - source address |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
150 |
* - next hop address (gateway) |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
151 |
* - output device |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
152 |
*/ |
b74806ad2935
Ptr<Ipv4Route> added in routing table
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5586
diff
changeset
|
153 |
Ptr<Ipv4Route> m_ipv4Route; |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
154 |
/// Routing flags: down, up or in repair |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
155 |
uint8_t m_flag; |
5537 | 156 |
|
5584 | 157 |
/// List of precursors |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
158 |
std::vector<Ipv4Address> m_precursorList; |
5574
093ebba1c04c
Set, Get methods for aodv_rt_entry added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5571
diff
changeset
|
159 |
/// When I can send another request |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
160 |
Time m_reqTimeout; |
5574
093ebba1c04c
Set, Get methods for aodv_rt_entry added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5571
diff
changeset
|
161 |
/// Number of route requests |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
162 |
uint8_t m_reqCount; |
5574
093ebba1c04c
Set, Get methods for aodv_rt_entry added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5571
diff
changeset
|
163 |
|
5562
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
164 |
// TODO review and delete |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
165 |
#define MAX_HISTORY 3 |
5538 | 166 |
double rt_disc_latency[MAX_HISTORY]; |
167 |
char hist_indx; |
|
5537 | 168 |
}; |
169 |
||
5538 | 170 |
/** |
171 |
* \ingroup aodv |
|
172 |
* The Routing Table |
|
5537 | 173 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
174 |
class RoutingTable |
5537 | 175 |
{ |
176 |
public: |
|
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
177 |
RoutingTable() {} |
5537 | 178 |
|
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
179 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
180 |
* Add routing table entry if it doesn't yet exist in routing table |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
181 |
* \param r routing table entry |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
182 |
* \return true in success |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
183 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
184 |
bool AddRoute(RoutingTableEntry const & r); |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
185 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
186 |
* Delete routing table entry |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
187 |
* \param dst destination address |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
188 |
* \return true on success |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
189 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
190 |
bool DeleteRoute(Ipv4Address dst); |
5542
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
191 |
/** |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
192 |
* Lookup routing table entry |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
193 |
* \param dst destination address |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
194 |
* \param rt entry with destination address dst, if exists |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
195 |
* \return true on success |
1b504e63a1b1
aodv_rtable unit test added
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5540
diff
changeset
|
196 |
*/ |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
197 |
bool LookupRoute(Ipv4Address dst, RoutingTableEntry & rt) const; |
5584 | 198 |
/// Update routing table |
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
199 |
bool Update(Ipv4Address dst, RoutingTableEntry & rt); |
5562
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
200 |
/// Set routing table entry flags |
2fc3138b5622
AODV RoutingProtocol stub finished
Pavel Boyko <boyko@iitp.ru>
parents:
5561
diff
changeset
|
201 |
void SetEntryState (Ipv4Address dst, uint8_t state /*TODO use enum*/); |
5586 | 202 |
/// Print routing table |
203 |
void Print(std::ostream &os) const; |
|
5537 | 204 |
|
205 |
private: |
|
5597
8e4c7f2aaead
mothods, classes and members renamed
Borovkova Elena <borovkovaes@iitp.ru>
parents:
5593
diff
changeset
|
206 |
std::map<Ipv4Address, RoutingTableEntry> m_ipv4AddressEntry; |
5537 | 207 |
}; |
208 |
||
209 |
}} |
|
210 |
||
211 |
#endif /* _aodv__rtable_h__ */ |