author | Lalith Suresh |
Sun, 16 May 2010 10:12:26 +0530 | |
changeset 6303 | 4ef0052694b9 |
parent 6143 | ad316b5cfb5a |
child 6324 | e56ec0532fec |
permissions | -rw-r--r-- |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
1752
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
2 |
/* |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
3 |
* Copyright (c) 2004 Francisco J. Ros |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
4 |
* Copyright (c) 2007 INESC Porto |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
5 |
* |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
6 |
* This program is free software; you can redistribute it and/or modify |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
7 |
* it under the terms of the GNU General Public License version 2 as |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
8 |
* published by the Free Software Foundation; |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
9 |
* |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
10 |
* This program is distributed in the hope that it will be useful, |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
13 |
* GNU General Public License for more details. |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
14 |
* |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
16 |
* along with this program; if not, write to the Free Software |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
17 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
18 |
* |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
19 |
* Authors: Francisco J. Ros <fjrm@dif.um.es> |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
20 |
* Gustavo J. A. M. Carneiro <gjc@inescporto.pt> |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
21 |
*/ |
d9115729b7d6
Cleanup copyright headers and some unused includes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1740
diff
changeset
|
22 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
23 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
24 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
25 |
/// \file OLSR.cc |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
26 |
/// \brief Implementation of OLSR agent and related classes. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
27 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
28 |
/// This is the main file of this software because %OLSR's behaviour is |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
29 |
/// implemented here. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
30 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
31 |
|
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
32 |
#define NS_LOG_APPEND_CONTEXT \ |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
33 |
if (GetObject<Node> ()) { std::clog << "[node " << GetObject<Node> ()->GetId () << "] "; } |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
34 |
|
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
35 |
|
4364 | 36 |
#include "olsr-routing-protocol.h" |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
37 |
#include "ns3/socket-factory.h" |
3125
d2d8a36cfd23
s/ns3::Udp/ns3::UdpSocketFactory
Tom Henderson <tomh@tomh.org>
parents:
3116
diff
changeset
|
38 |
#include "ns3/udp-socket-factory.h" |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
39 |
#include "ns3/simulator.h" |
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
40 |
#include "ns3/log.h" |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
41 |
#include "ns3/random-variable.h" |
1740
3d3168e8fef6
Update OLSR code to NS-3 API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1732
diff
changeset
|
42 |
#include "ns3/inet-socket-address.h" |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
43 |
#include "ns3/ipv4-routing-protocol.h" |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
44 |
#include "ns3/ipv4-routing-table-entry.h" |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
45 |
#include "ns3/ipv4-route.h" |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
46 |
#include "ns3/boolean.h" |
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
47 |
#include "ns3/uinteger.h" |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
48 |
#include "ns3/enum.h" |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
49 |
#include "ns3/trace-source-accessor.h" |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
50 |
#include "ns3/ipv4-header.h" |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
51 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
52 |
/********** Useful macros **********/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
53 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
54 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
55 |
/// \brief Gets the delay between a given time and the current time. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
56 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
57 |
/// If given time is previous to the current one, then this macro returns |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
58 |
/// a number close to 0. This is used for scheduling events at a certain moment. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
59 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
60 |
#define DELAY(time) (((time) < (Simulator::Now ())) ? Seconds (0.000001) : \ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
61 |
(time - Simulator::Now () + Seconds (0.000001))) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
62 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
63 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
64 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
65 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
66 |
/// \brief Period at which a node must cite every link and every neighbor. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
67 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
68 |
/// We only use this value in order to define OLSR_NEIGHB_HOLD_TIME. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
69 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
70 |
#define OLSR_REFRESH_INTERVAL Seconds (2) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
71 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
72 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
73 |
/********** Holding times **********/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
74 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
75 |
/// Neighbor holding time. |
5932
462ca2c19a92
Bug 788: OLSR_NEIGH_HOLD_TIME should be 3 times OLSR_REFRESH_INTERVAL
Josh Pelkey <jpelkey@gatech.edu>
parents:
5867
diff
changeset
|
76 |
#define OLSR_NEIGHB_HOLD_TIME (Scalar (3) * OLSR_REFRESH_INTERVAL) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
77 |
/// Top holding time. |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
78 |
#define OLSR_TOP_HOLD_TIME (Scalar (3) * m_tcInterval) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
79 |
/// Dup holding time. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
80 |
#define OLSR_DUP_HOLD_TIME Seconds (30) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
81 |
/// MID holding time. |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
82 |
#define OLSR_MID_HOLD_TIME (Scalar (3) * m_midInterval) |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
83 |
/// HNA holding time. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
84 |
#define OLSR_HNA_HOLD_TIME (Scalar (3) * m_hnaInterval) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
85 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
86 |
/********** Link types **********/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
87 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
88 |
/// Unspecified link type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
89 |
#define OLSR_UNSPEC_LINK 0 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
90 |
/// Asymmetric link type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
91 |
#define OLSR_ASYM_LINK 1 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
92 |
/// Symmetric link type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
93 |
#define OLSR_SYM_LINK 2 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
94 |
/// Lost link type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
95 |
#define OLSR_LOST_LINK 3 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
96 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
97 |
/********** Neighbor types **********/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
98 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
99 |
/// Not neighbor type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
100 |
#define OLSR_NOT_NEIGH 0 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
101 |
/// Symmetric neighbor type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
102 |
#define OLSR_SYM_NEIGH 1 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
103 |
/// Asymmetric neighbor type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
104 |
#define OLSR_MPR_NEIGH 2 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
105 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
106 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
107 |
/********** Willingness **********/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
108 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
109 |
/// Willingness for forwarding packets from other nodes: never. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
110 |
#define OLSR_WILL_NEVER 0 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
111 |
/// Willingness for forwarding packets from other nodes: low. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
112 |
#define OLSR_WILL_LOW 1 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
113 |
/// Willingness for forwarding packets from other nodes: medium. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
114 |
#define OLSR_WILL_DEFAULT 3 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
115 |
/// Willingness for forwarding packets from other nodes: high. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
116 |
#define OLSR_WILL_HIGH 6 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
117 |
/// Willingness for forwarding packets from other nodes: always. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
118 |
#define OLSR_WILL_ALWAYS 7 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
119 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
120 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
121 |
/********** Miscellaneous constants **********/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
122 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
123 |
/// Maximum allowed jitter. |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
124 |
#define OLSR_MAXJITTER (m_helloInterval.GetSeconds () / 4) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
125 |
/// Maximum allowed sequence number. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
126 |
#define OLSR_MAX_SEQ_NUM 65535 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
127 |
/// Random number between [0-OLSR_MAXJITTER] used to jitter OLSR packet transmission. |
4218
debf1a8a96d3
Proposed RNG API changes
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
3970
diff
changeset
|
128 |
#define JITTER (Seconds (UniformVariable().GetValue (0, OLSR_MAXJITTER))) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
129 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
130 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
131 |
#define OLSR_PORT_NUMBER 698 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
132 |
/// Maximum number of messages per packet. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
133 |
#define OLSR_MAX_MSGS 64 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
134 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
135 |
/// Maximum number of hellos per message (4 possible link types * 3 possible nb types). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
136 |
#define OLSR_MAX_HELLOS 12 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
137 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
138 |
/// Maximum number of addresses advertised on a message. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
139 |
#define OLSR_MAX_ADDRS 64 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
140 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
141 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
142 |
namespace ns3 { |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
143 |
namespace olsr { |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
144 |
|
5867
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
145 |
NS_LOG_COMPONENT_DEFINE ("OlsrRoutingProtocol"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
146 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
147 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
148 |
/********** OLSR class **********/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
149 |
|
4364 | 150 |
NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol); |
2249
3a1da26d61dc
replace ComponentManager::Create and ClassId with InterfaceId::CreateObjest and InterfaceId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2232
diff
changeset
|
151 |
|
2250
18f432098389
InterfaceId -> TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2249
diff
changeset
|
152 |
TypeId |
4364 | 153 |
RoutingProtocol::GetTypeId (void) |
2249
3a1da26d61dc
replace ComponentManager::Create and ClassId with InterfaceId::CreateObjest and InterfaceId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2232
diff
changeset
|
154 |
{ |
4364 | 155 |
static TypeId tid = TypeId ("ns3::olsr::RoutingProtocol") |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
156 |
.SetParent<Ipv4RoutingProtocol> () |
4364 | 157 |
.AddConstructor<RoutingProtocol> () |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
158 |
.AddAttribute ("HelloInterval", "HELLO messages emission interval.", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
159 |
TimeValue (Seconds (2)), |
4364 | 160 |
MakeTimeAccessor (&RoutingProtocol::m_helloInterval), |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
161 |
MakeTimeChecker ()) |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
162 |
.AddAttribute ("TcInterval", "TC messages emission interval.", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
163 |
TimeValue (Seconds (5)), |
4364 | 164 |
MakeTimeAccessor (&RoutingProtocol::m_tcInterval), |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
165 |
MakeTimeChecker ()) |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
166 |
.AddAttribute ("MidInterval", "MID messages emission interval. Normally it is equal to TcInterval.", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
167 |
TimeValue (Seconds (5)), |
4364 | 168 |
MakeTimeAccessor (&RoutingProtocol::m_midInterval), |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
169 |
MakeTimeChecker ()) |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
170 |
.AddAttribute ("HnaInterval", "HNA messages emission interval. Normally it is equal to TcInterval.", |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
171 |
TimeValue (Seconds (5)), |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
172 |
MakeTimeAccessor (&RoutingProtocol::m_hnaInterval), |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
173 |
MakeTimeChecker ()) |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
174 |
.AddAttribute ("Willingness", "Willingness of a node to carry and forward traffic for other nodes.", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
175 |
EnumValue (OLSR_WILL_DEFAULT), |
4364 | 176 |
MakeEnumAccessor (&RoutingProtocol::m_willingness), |
3233
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
177 |
MakeEnumChecker (OLSR_WILL_NEVER, "never", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
178 |
OLSR_WILL_LOW, "low", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
179 |
OLSR_WILL_DEFAULT, "default", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
180 |
OLSR_WILL_HIGH, "high", |
35ba9a71bcb5
Add OLSR attribute documentation; make Willingness an enum attribute instead of uint. Closes #211
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3145
diff
changeset
|
181 |
OLSR_WILL_ALWAYS, "always")) |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
182 |
.AddTraceSource ("Rx", "Receive OLSR packet.", |
4364 | 183 |
MakeTraceSourceAccessor (&RoutingProtocol::m_rxPacketTrace)) |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
184 |
.AddTraceSource ("Tx", "Send OLSR packet.", |
4364 | 185 |
MakeTraceSourceAccessor (&RoutingProtocol::m_txPacketTrace)) |
2503 | 186 |
.AddTraceSource ("RoutingTableChanged", "The OLSR routing table has changed.", |
4364 | 187 |
MakeTraceSourceAccessor (&RoutingProtocol::m_routingTableChanged)) |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
188 |
; |
2252
80595448707a
iid -> tid
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2251
diff
changeset
|
189 |
return tid; |
2249
3a1da26d61dc
replace ComponentManager::Create and ClassId with InterfaceId::CreateObjest and InterfaceId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2232
diff
changeset
|
190 |
} |
3a1da26d61dc
replace ComponentManager::Create and ClassId with InterfaceId::CreateObjest and InterfaceId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2232
diff
changeset
|
191 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
192 |
|
4364 | 193 |
RoutingProtocol::RoutingProtocol () |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
194 |
: m_routingTableAssociation (0), |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
195 |
m_ipv4 (0), |
4560
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
196 |
m_helloTimer (Timer::CANCEL_ON_DESTROY), |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
197 |
m_tcTimer (Timer::CANCEL_ON_DESTROY), |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
198 |
m_midTimer (Timer::CANCEL_ON_DESTROY), |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
199 |
m_hnaTimer (Timer::CANCEL_ON_DESTROY), |
4560
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
200 |
m_queuedMessagesTimer (Timer::CANCEL_ON_DESTROY) |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
201 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
202 |
m_hnaRoutingTable = Create<Ipv4StaticRouting> (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
203 |
} |
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
204 |
|
4364 | 205 |
RoutingProtocol::~RoutingProtocol () |
2900
b5deaba7280e
add destructor. Easier to plant a breakpoint in there.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2827
diff
changeset
|
206 |
{} |
b5deaba7280e
add destructor. Easier to plant a breakpoint in there.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2827
diff
changeset
|
207 |
|
2484
d5b05b706999
port Olsr code to attributes/helpers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2308
diff
changeset
|
208 |
void |
4560
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
209 |
RoutingProtocol::SetIpv4 (Ptr<Ipv4> ipv4) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
210 |
{ |
4560
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
211 |
NS_ASSERT (ipv4 != 0); |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
212 |
NS_ASSERT (m_ipv4 == 0); |
4364 | 213 |
NS_LOG_DEBUG ("Created olsr::RoutingProtocol"); |
214 |
m_helloTimer.SetFunction (&RoutingProtocol::HelloTimerExpire, this); |
|
215 |
m_tcTimer.SetFunction (&RoutingProtocol::TcTimerExpire, this); |
|
216 |
m_midTimer.SetFunction (&RoutingProtocol::MidTimerExpire, this); |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
217 |
m_hnaTimer.SetFunction (&RoutingProtocol::HnaTimerExpire, this); |
4364 | 218 |
m_queuedMessagesTimer.SetFunction (&RoutingProtocol::SendQueuedMessages, this); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
219 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
220 |
m_packetSequenceNumber = OLSR_MAX_SEQ_NUM; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
221 |
m_messageSequenceNumber = OLSR_MAX_SEQ_NUM; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
222 |
m_ansn = OLSR_MAX_SEQ_NUM; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
223 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
224 |
m_linkTupleTimerFirstTime = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
225 |
|
4560
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
226 |
m_ipv4 = ipv4; |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
227 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
228 |
m_hnaRoutingTable->SetIpv4 (ipv4); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
229 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
230 |
|
4364 | 231 |
void RoutingProtocol::DoDispose () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
232 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
233 |
m_ipv4 = 0; |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
234 |
m_hnaRoutingTable = 0; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
235 |
m_routingTableAssociation = 0; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
236 |
|
5761
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
237 |
for (std::map< Ptr<Socket>, Ipv4InterfaceAddress >::iterator iter = m_socketAddresses.begin (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
238 |
iter != m_socketAddresses.end (); iter++) |
1779
85fd2b8c9e76
Fix OLSR agent finalization issues.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1778
diff
changeset
|
239 |
{ |
4362
9e9c734b927e
good god, there should be no reason to call Dispose directly here.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4358
diff
changeset
|
240 |
iter->first->Close (); |
1779
85fd2b8c9e76
Fix OLSR agent finalization issues.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1778
diff
changeset
|
241 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
242 |
m_socketAddresses.clear (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
243 |
|
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
244 |
Ipv4RoutingProtocol::DoDispose (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
245 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
246 |
|
5524
efed7493f2c1
Make applications generate traffic within their associated context/node
Guillaume Seguin <guillaume@segu.in>
parents:
5510
diff
changeset
|
247 |
void RoutingProtocol::DoStart () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
248 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
249 |
if (m_mainAddress == Ipv4Address ()) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
250 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
251 |
Ipv4Address loopback ("127.0.0.1"); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
252 |
for (uint32_t i = 0; i < m_ipv4->GetNInterfaces (); i++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
253 |
{ |
4375
db81fdcb06e7
Implementation cut over to use Ipv4InterfaceAddress
Tom Henderson <tomh@tomh.org>
parents:
4218
diff
changeset
|
254 |
// Use primary address, if multiple |
db81fdcb06e7
Implementation cut over to use Ipv4InterfaceAddress
Tom Henderson <tomh@tomh.org>
parents:
4218
diff
changeset
|
255 |
Ipv4Address addr = m_ipv4->GetAddress (i, 0).GetLocal (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
256 |
if (addr != loopback) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
257 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
258 |
m_mainAddress = addr; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
259 |
break; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
260 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
261 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
262 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
263 |
NS_ASSERT (m_mainAddress != Ipv4Address ()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
264 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
265 |
|
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
266 |
NS_LOG_DEBUG ("Starting OLSR on node " << m_mainAddress); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
267 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
268 |
Ipv4Address loopback ("127.0.0.1"); |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
269 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
270 |
bool canRunOlsr = false; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
271 |
for (uint32_t i = 0; i < m_ipv4->GetNInterfaces (); i++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
272 |
{ |
4375
db81fdcb06e7
Implementation cut over to use Ipv4InterfaceAddress
Tom Henderson <tomh@tomh.org>
parents:
4218
diff
changeset
|
273 |
Ipv4Address addr = m_ipv4->GetAddress (i, 0).GetLocal (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
274 |
if (addr == loopback) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
275 |
continue; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
276 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
277 |
if (addr != m_mainAddress) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
278 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
279 |
// Create never expiring interface association tuple entries for our |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
280 |
// own network interfaces, so that GetMainAddress () works to |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
281 |
// translate the node's own interface addresses into the main address. |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
282 |
IfaceAssocTuple tuple; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
283 |
tuple.ifaceAddr = addr; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
284 |
tuple.mainAddr = m_mainAddress; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
285 |
AddIfaceAssocTuple (tuple); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
286 |
NS_ASSERT (GetMainAddress (addr) == m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
287 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
288 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
289 |
if(m_interfaceExclusions.find (i) != m_interfaceExclusions.end ()) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
290 |
continue; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
291 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
292 |
// Create a socket to listen only on this interface |
3116
c33b6d2775b7
Move API for socket factory to a Socket::CreateSocket () factory method
Tom Henderson <tomh@tomh.org>
parents:
3103
diff
changeset
|
293 |
Ptr<Socket> socket = Socket::CreateSocket (GetObject<Node> (), |
3125
d2d8a36cfd23
s/ns3::Udp/ns3::UdpSocketFactory
Tom Henderson <tomh@tomh.org>
parents:
3116
diff
changeset
|
294 |
UdpSocketFactory::GetTypeId()); |
4364 | 295 |
socket->SetRecvCallback (MakeCallback (&RoutingProtocol::RecvOlsr, this)); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
296 |
if (socket->Bind (InetSocketAddress (addr, OLSR_PORT_NUMBER))) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
297 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
298 |
NS_FATAL_ERROR ("Failed to bind() OLSR receive socket"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
299 |
} |
6303
4ef0052694b9
Bug Fix: OLSR messages generated on non-OLSR interfaces
Lalith Suresh
parents:
6143
diff
changeset
|
300 |
socket->Connect (InetSocketAddress (addr.GetSubnetDirectedBroadcast (m_ipv4->GetAddress (i, 0).GetMask ()), OLSR_PORT_NUMBER)); |
5761
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
301 |
m_socketAddresses[socket] = m_ipv4->GetAddress (i, 0); |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
302 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
303 |
canRunOlsr = true; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
304 |
} |
1723
b5ff7d8efe27
Adapt OLSR code to use SingleEvent instead of Timer, and EventCollector.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1716
diff
changeset
|
305 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
306 |
if(canRunOlsr) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
307 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
308 |
HelloTimerExpire (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
309 |
TcTimerExpire (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
310 |
MidTimerExpire (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
311 |
HnaTimerExpire (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
312 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
313 |
NS_LOG_DEBUG ("OLSR on node " << m_mainAddress << " started"); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
314 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
315 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
316 |
|
4364 | 317 |
void RoutingProtocol::SetMainInterface (uint32_t interface) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
318 |
{ |
4375
db81fdcb06e7
Implementation cut over to use Ipv4InterfaceAddress
Tom Henderson <tomh@tomh.org>
parents:
4218
diff
changeset
|
319 |
m_mainAddress = m_ipv4->GetAddress (interface, 0).GetLocal (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
320 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
321 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
322 |
void RoutingProtocol::SetInterfaceExclusions (std::set<uint32_t> exceptions) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
323 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
324 |
m_interfaceExclusions = exceptions; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
325 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
326 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
327 |
// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
328 |
// \brief Processes an incoming %OLSR packet following RFC 3626 specification. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
329 |
void |
4364 | 330 |
RoutingProtocol::RecvOlsr (Ptr<Socket> socket) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
331 |
{ |
3098
d384d52f8f6e
Cut over UDP applications to use the new receive API
Tom Henderson <tomh@tomh.org>
parents:
2972
diff
changeset
|
332 |
Ptr<Packet> receivedPacket; |
3270 | 333 |
Address sourceAddress; |
334 |
receivedPacket = socket->RecvFrom (sourceAddress); |
|
3098
d384d52f8f6e
Cut over UDP applications to use the new receive API
Tom Henderson <tomh@tomh.org>
parents:
2972
diff
changeset
|
335 |
|
1740
3d3168e8fef6
Update OLSR code to NS-3 API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1732
diff
changeset
|
336 |
InetSocketAddress inetSourceAddr = InetSocketAddress::ConvertFrom (sourceAddress); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
337 |
Ipv4Address senderIfaceAddr = inetSourceAddr.GetIpv4 (); |
5761
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
338 |
Ipv4Address receiverIfaceAddr = m_socketAddresses[socket].GetLocal (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
339 |
NS_ASSERT (receiverIfaceAddr != Ipv4Address ()); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
340 |
NS_LOG_DEBUG ("OLSR node " << m_mainAddress << " received a OLSR packet from " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
341 |
<< senderIfaceAddr << " to " << receiverIfaceAddr); |
1740
3d3168e8fef6
Update OLSR code to NS-3 API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1732
diff
changeset
|
342 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
343 |
// All routing messages are sent from and to port RT_PORT, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
344 |
// so we check it. |
1740
3d3168e8fef6
Update OLSR code to NS-3 API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1732
diff
changeset
|
345 |
NS_ASSERT (inetSourceAddr.GetPort () == OLSR_PORT_NUMBER); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
346 |
|
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
347 |
Ptr<Packet> packet = receivedPacket; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
348 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
349 |
olsr::PacketHeader olsrPacketHeader; |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
350 |
packet->RemoveHeader (olsrPacketHeader); |
1740
3d3168e8fef6
Update OLSR code to NS-3 API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1732
diff
changeset
|
351 |
NS_ASSERT (olsrPacketHeader.GetPacketLength () >= olsrPacketHeader.GetSerializedSize ()); |
3d3168e8fef6
Update OLSR code to NS-3 API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1732
diff
changeset
|
352 |
uint32_t sizeLeft = olsrPacketHeader.GetPacketLength () - olsrPacketHeader.GetSerializedSize (); |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
353 |
|
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
354 |
MessageList messages; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
355 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
356 |
while (sizeLeft) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
357 |
{ |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
358 |
MessageHeader messageHeader; |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
359 |
if (packet->RemoveHeader (messageHeader) == 0) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
360 |
NS_ASSERT (false); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
361 |
|
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
362 |
sizeLeft -= messageHeader.GetSerializedSize (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
363 |
|
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
364 |
NS_LOG_DEBUG ("Olsr Msg received with type " |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
365 |
<< std::dec << int (messageHeader.GetMessageType ()) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
366 |
<< " TTL=" << int (messageHeader.GetTimeToLive ()) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
367 |
<< " origAddr=" << messageHeader.GetOriginatorAddress ()); |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
368 |
messages.push_back (messageHeader); |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
369 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
370 |
|
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
371 |
m_rxPacketTrace (olsrPacketHeader, messages); |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
372 |
|
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
373 |
for (MessageList::const_iterator messageIter = messages.begin (); |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
374 |
messageIter != messages.end (); messageIter++) |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
375 |
{ |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
376 |
const MessageHeader &messageHeader = *messageIter; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
377 |
// If ttl is less than or equal to zero, or |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
378 |
// the receiver is the same as the originator, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
379 |
// the message must be silently dropped |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
380 |
if (messageHeader.GetTimeToLive () == 0 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
381 |
|| messageHeader.GetOriginatorAddress () == m_mainAddress) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
382 |
{ |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
383 |
packet->RemoveAtStart (messageHeader.GetSerializedSize () |
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
384 |
- messageHeader.GetSerializedSize ()); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
385 |
continue; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
386 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
387 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
388 |
// If the message has been processed it must not be processed again |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
389 |
bool do_forwarding = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
390 |
DuplicateTuple *duplicated = m_state.FindDuplicateTuple |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
391 |
(messageHeader.GetOriginatorAddress (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
392 |
messageHeader.GetMessageSequenceNumber ()); |
2306
6f947d8c8f41
OLSR: get main address of the peer from the UDP source address and the 'interface association' table; this way the UDP source address need not be the same as the main address.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2296
diff
changeset
|
393 |
|
6f947d8c8f41
OLSR: get main address of the peer from the UDP source address and the 'interface association' table; this way the UDP source address need not be the same as the main address.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2296
diff
changeset
|
394 |
// Get main address of the peer, which may be different from the packet source address |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
395 |
// const IfaceAssocTuple *ifaceAssoc = m_state.FindIfaceAssocTuple (inetSourceAddr.GetIpv4 ()); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
396 |
// Ipv4Address peerMainAddress; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
397 |
// if (ifaceAssoc != NULL) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
398 |
// { |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
399 |
// peerMainAddress = ifaceAssoc->mainAddr; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
400 |
// } |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
401 |
// else |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
402 |
// { |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
403 |
// peerMainAddress = inetSourceAddr.GetIpv4 () ; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
404 |
// } |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
405 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
406 |
if (duplicated == NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
407 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
408 |
switch (messageHeader.GetMessageType ()) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
409 |
{ |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
410 |
case olsr::MessageHeader::HELLO_MESSAGE: |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
411 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
412 |
<< "s OLSR node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
413 |
<< " received HELLO message of size " << messageHeader.GetSerializedSize ()); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
414 |
ProcessHello (messageHeader, receiverIfaceAddr, senderIfaceAddr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
415 |
break; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
416 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
417 |
case olsr::MessageHeader::TC_MESSAGE: |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
418 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
419 |
<< "s OLSR node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
420 |
<< " received TC message of size " << messageHeader.GetSerializedSize ()); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
421 |
ProcessTc (messageHeader, senderIfaceAddr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
422 |
break; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
423 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
424 |
case olsr::MessageHeader::MID_MESSAGE: |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
425 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
426 |
<< "s OLSR node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
427 |
<< " received MID message of size " << messageHeader.GetSerializedSize ()); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
428 |
ProcessMid (messageHeader, senderIfaceAddr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
429 |
break; |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
430 |
case olsr::MessageHeader::HNA_MESSAGE: |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
431 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
432 |
<< "s OLSR node " << m_mainAddress |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
433 |
<< " received HNA message of size " << messageHeader.GetSerializedSize ()); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
434 |
ProcessHna (messageHeader, senderIfaceAddr); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
435 |
break; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
436 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
437 |
default: |
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
438 |
NS_LOG_DEBUG ("OLSR message type " << |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
439 |
int (messageHeader.GetMessageType ()) << |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
440 |
" not implemented"); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
441 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
442 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
443 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
444 |
{ |
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
445 |
NS_LOG_DEBUG ("OLSR message is duplicated, not reading it."); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
446 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
447 |
// If the message has been considered for forwarding, it should |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
448 |
// not be retransmitted again |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
449 |
for (std::vector<Ipv4Address>::const_iterator it = duplicated->ifaceList.begin (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
450 |
it != duplicated->ifaceList.end(); it++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
451 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
452 |
if (*it == receiverIfaceAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
453 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
454 |
do_forwarding = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
455 |
break; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
456 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
457 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
458 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
459 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
460 |
if (do_forwarding) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
461 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
462 |
// HELLO messages are never forwarded. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
463 |
// TC and MID messages are forwarded using the default algorithm. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
464 |
// Remaining messages are also forwarded using the default algorithm. |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
465 |
if (messageHeader.GetMessageType () != olsr::MessageHeader::HELLO_MESSAGE) |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
466 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
467 |
ForwardDefault (messageHeader, duplicated, |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
468 |
receiverIfaceAddr, inetSourceAddr.GetIpv4 ()); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
469 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
470 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
471 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
472 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
473 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
474 |
// After processing all OLSR messages, we must recompute the routing table |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
475 |
RoutingTableComputation (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
476 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
477 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
478 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
479 |
/// \brief This auxiliary function (defined in RFC 3626) is used for calculating the MPR Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
480 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
481 |
/// \param tuple the neighbor tuple which has the main address of the node we are going to calculate its degree to. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
482 |
/// \return the degree of the node. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
483 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
484 |
int |
4364 | 485 |
RoutingProtocol::Degree (NeighborTuple const &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
486 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
487 |
int degree = 0; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
488 |
for (TwoHopNeighborSet::const_iterator it = m_state.GetTwoHopNeighbors ().begin (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
489 |
it != m_state.GetTwoHopNeighbors ().end (); it++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
490 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
491 |
TwoHopNeighborTuple const &nb2hop_tuple = *it; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
492 |
if (nb2hop_tuple.neighborMainAddr == tuple.neighborMainAddr) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
493 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
494 |
const NeighborTuple *nb_tuple = |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
495 |
m_state.FindNeighborTuple (nb2hop_tuple.neighborMainAddr); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
496 |
if (nb_tuple == NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
497 |
degree++; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
498 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
499 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
500 |
return degree; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
501 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
502 |
|
5756 | 503 |
namespace { |
504 |
/// |
|
505 |
/// \brief Remove all covered 2-hop neighbors from N2 set. This is a helper function used by MprComputation algorithm. |
|
506 |
/// |
|
507 |
void |
|
508 |
CoverTwoHopNeighbors (Ipv4Address neighborMainAddr, TwoHopNeighborSet & N2) |
|
509 |
{ |
|
510 |
// first gather all 2-hop neighbors to be removed |
|
511 |
std::set<Ipv4Address> toRemove; |
|
512 |
for (TwoHopNeighborSet::iterator twoHopNeigh = N2.begin (); twoHopNeigh != N2.end (); twoHopNeigh ++) |
|
513 |
{ |
|
514 |
if (twoHopNeigh->neighborMainAddr == neighborMainAddr) |
|
515 |
{ |
|
516 |
toRemove.insert (twoHopNeigh->twoHopNeighborAddr); |
|
517 |
} |
|
518 |
} |
|
519 |
// Now remove all matching records from N2 |
|
520 |
for (TwoHopNeighborSet::iterator twoHopNeigh = N2.begin (); twoHopNeigh != N2.end (); ) |
|
521 |
{ |
|
522 |
if (toRemove.find (twoHopNeigh->twoHopNeighborAddr) != toRemove.end ()) |
|
523 |
{ |
|
524 |
twoHopNeigh = N2.erase (twoHopNeigh); |
|
525 |
} |
|
526 |
else |
|
527 |
{ |
|
528 |
twoHopNeigh ++; |
|
529 |
} |
|
530 |
} |
|
531 |
} |
|
532 |
} // anonymous namespace |
|
533 |
||
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
534 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
535 |
/// \brief Computates MPR set of a node following RFC 3626 hints. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
536 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
537 |
void |
4364 | 538 |
RoutingProtocol::MprComputation() |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
539 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
540 |
NS_LOG_FUNCTION (this); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
541 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
542 |
// MPR computation should be done for each interface. See section 8.3.1 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
543 |
// (RFC 3626) for details. |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
544 |
MprSet mprSet; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
545 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
546 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
547 |
// N is the subset of neighbors of the node, which are |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
548 |
// neighbor "of the interface I" |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
549 |
NeighborSet N; |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
550 |
for (NeighborSet::const_iterator neighbor = m_state.GetNeighbors ().begin(); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
551 |
neighbor != m_state.GetNeighbors ().end (); neighbor++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
552 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
553 |
if (neighbor->status == NeighborTuple::STATUS_SYM) // I think that we need this check |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
554 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
555 |
N.push_back (*neighbor); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
556 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
557 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
558 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
559 |
// N2 is the set of 2-hop neighbors reachable from "the interface |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
560 |
// I", excluding: |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
561 |
// (i) the nodes only reachable by members of N with willingness WILL_NEVER |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
562 |
// (ii) the node performing the computation |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
563 |
// (iii) all the symmetric neighbors: the nodes for which there exists a symmetric |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
564 |
// link to this node on some interface. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
565 |
TwoHopNeighborSet N2; |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
566 |
for (TwoHopNeighborSet::const_iterator twoHopNeigh = m_state.GetTwoHopNeighbors ().begin (); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
567 |
twoHopNeigh != m_state.GetTwoHopNeighbors ().end (); twoHopNeigh++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
568 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
569 |
// excluding: |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
570 |
// (ii) the node performing the computation |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
571 |
if (twoHopNeigh->twoHopNeighborAddr == m_mainAddress) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
572 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
573 |
continue; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
574 |
} |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
575 |
|
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
576 |
// excluding: |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
577 |
// (i) the nodes only reachable by members of N with willingness WILL_NEVER |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
578 |
bool ok = false; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
579 |
for (NeighborSet::const_iterator neigh = N.begin (); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
580 |
neigh != N.end (); neigh++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
581 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
582 |
if (neigh->neighborMainAddr == twoHopNeigh->neighborMainAddr) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
583 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
584 |
if (neigh->willingness == OLSR_WILL_NEVER) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
585 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
586 |
ok = false; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
587 |
break; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
588 |
} |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
589 |
else |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
590 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
591 |
ok = true; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
592 |
break; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
593 |
} |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
594 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
595 |
} |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
596 |
if (!ok) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
597 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
598 |
continue; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
599 |
} |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
600 |
|
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
601 |
// excluding: |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
602 |
// (iii) all the symmetric neighbors: the nodes for which there exists a symmetric |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
603 |
// link to this node on some interface. |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
604 |
for (NeighborSet::const_iterator neigh = N.begin (); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
605 |
neigh != N.end (); neigh++) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
606 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
607 |
if (neigh->neighborMainAddr == twoHopNeigh->twoHopNeighborAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
608 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
609 |
ok = false; |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
610 |
break; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
611 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
612 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
613 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
614 |
if (ok) |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
615 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
616 |
N2.push_back (*twoHopNeigh); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
617 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
618 |
} |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
619 |
|
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
620 |
#ifdef NS3_LOG_ENABLE |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
621 |
{ |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
622 |
std::ostringstream os; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
623 |
os << "["; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
624 |
for (TwoHopNeighborSet::const_iterator iter = N2.begin (); |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
625 |
iter != N2.end (); iter++) |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
626 |
{ |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
627 |
TwoHopNeighborSet::const_iterator next = iter; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
628 |
next++; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
629 |
os << iter->neighborMainAddr << "->" << iter->twoHopNeighborAddr; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
630 |
if (next != N2.end ()) |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
631 |
os << ", "; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
632 |
} |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
633 |
os << "]"; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
634 |
NS_LOG_DEBUG ("N2: " << os.str ()); |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
635 |
} |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
636 |
#endif //NS3_LOG_ENABLE |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
637 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
638 |
// 1. Start with an MPR set made of all members of N with |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
639 |
// N_willingness equal to WILL_ALWAYS |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
640 |
for (NeighborSet::const_iterator neighbor = N.begin (); neighbor != N.end (); neighbor++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
641 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
642 |
if (neighbor->willingness == OLSR_WILL_ALWAYS) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
643 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
644 |
mprSet.insert (neighbor->neighborMainAddr); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
645 |
// (not in RFC but I think is needed: remove the 2-hop |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
646 |
// neighbors reachable by the MPR from N2) |
5756 | 647 |
CoverTwoHopNeighbors (neighbor->neighborMainAddr, N2); |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
648 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
649 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
650 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
651 |
// 2. Calculate D(y), where y is a member of N, for all nodes in N. |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
652 |
// (we do this later) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
653 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
654 |
// 3. Add to the MPR set those nodes in N, which are the *only* |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
655 |
// nodes to provide reachability to a node in N2. |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
656 |
std::set<Ipv4Address> coveredTwoHopNeighbors; |
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
657 |
for (TwoHopNeighborSet::const_iterator twoHopNeigh = N2.begin (); twoHopNeigh != N2.end (); twoHopNeigh++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
658 |
{ |
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
659 |
bool onlyOne = true; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
660 |
// try to find another neighbor that can reach twoHopNeigh->twoHopNeighborAddr |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
661 |
for (TwoHopNeighborSet::const_iterator otherTwoHopNeigh = N2.begin (); otherTwoHopNeigh != N2.end (); otherTwoHopNeigh++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
662 |
{ |
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
663 |
if (otherTwoHopNeigh->twoHopNeighborAddr == twoHopNeigh->twoHopNeighborAddr |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
664 |
&& otherTwoHopNeigh->neighborMainAddr != twoHopNeigh->neighborMainAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
665 |
{ |
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
666 |
onlyOne = false; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
667 |
break; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
668 |
} |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
669 |
} |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
670 |
if (onlyOne) |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
671 |
{ |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
672 |
NS_LOG_LOGIC ("Neighbor " << twoHopNeigh->neighborMainAddr |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
673 |
<< " is the only that can reach 2-hop neigh. " |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
674 |
<< twoHopNeigh->twoHopNeighborAddr |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
675 |
<< " => select as MPR."); |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
676 |
|
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
677 |
mprSet.insert (twoHopNeigh->neighborMainAddr); |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
678 |
|
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
679 |
// take note of all the 2-hop neighbors reachable by the newly elected MPR |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
680 |
for (TwoHopNeighborSet::const_iterator otherTwoHopNeigh = N2.begin (); |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
681 |
otherTwoHopNeigh != N2.end (); otherTwoHopNeigh++) |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
682 |
{ |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
683 |
if (otherTwoHopNeigh->neighborMainAddr == twoHopNeigh->neighborMainAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
684 |
{ |
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
685 |
coveredTwoHopNeighbors.insert (otherTwoHopNeigh->twoHopNeighborAddr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
686 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
687 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
688 |
} |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
689 |
} |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
690 |
// Remove the nodes from N2 which are now covered by a node in the MPR set. |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
691 |
for (TwoHopNeighborSet::iterator twoHopNeigh = N2.begin (); |
2916
5d4ff983595b
Fix bad usage of std container iteration and erase () all over OLSR code; closes #171; thanks to Liu Jian for spotting and submitting an initial patch.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2900
diff
changeset
|
692 |
twoHopNeigh != N2.end (); ) |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
693 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
694 |
if (coveredTwoHopNeighbors.find (twoHopNeigh->twoHopNeighborAddr) != coveredTwoHopNeighbors.end ()) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
695 |
{ |
5756 | 696 |
// This works correctly only because it is known that twoHopNeigh is reachable by exactly one neighbor, |
697 |
// so only one record in N2 exists for each of them. This record is erased here. |
|
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
698 |
NS_LOG_LOGIC ("2-hop neigh. " << twoHopNeigh->twoHopNeighborAddr << " is already covered by an MPR."); |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
699 |
twoHopNeigh = N2.erase (twoHopNeigh); |
2916
5d4ff983595b
Fix bad usage of std container iteration and erase () all over OLSR code; closes #171; thanks to Liu Jian for spotting and submitting an initial patch.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2900
diff
changeset
|
700 |
} |
5d4ff983595b
Fix bad usage of std container iteration and erase () all over OLSR code; closes #171; thanks to Liu Jian for spotting and submitting an initial patch.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2900
diff
changeset
|
701 |
else |
5d4ff983595b
Fix bad usage of std container iteration and erase () all over OLSR code; closes #171; thanks to Liu Jian for spotting and submitting an initial patch.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2900
diff
changeset
|
702 |
{ |
5d4ff983595b
Fix bad usage of std container iteration and erase () all over OLSR code; closes #171; thanks to Liu Jian for spotting and submitting an initial patch.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2900
diff
changeset
|
703 |
twoHopNeigh++; |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
704 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
705 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
706 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
707 |
// 4. While there exist nodes in N2 which are not covered by at |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
708 |
// least one node in the MPR set: |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
709 |
while (N2.begin () != N2.end ()) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
710 |
{ |
5471
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
711 |
|
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
712 |
#ifdef NS3_LOG_ENABLE |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
713 |
{ |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
714 |
std::ostringstream os; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
715 |
os << "["; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
716 |
for (TwoHopNeighborSet::const_iterator iter = N2.begin (); |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
717 |
iter != N2.end (); iter++) |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
718 |
{ |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
719 |
TwoHopNeighborSet::const_iterator next = iter; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
720 |
next++; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
721 |
os << iter->neighborMainAddr << "->" << iter->twoHopNeighborAddr; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
722 |
if (next != N2.end ()) |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
723 |
os << ", "; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
724 |
} |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
725 |
os << "]"; |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
726 |
NS_LOG_DEBUG ("Step 4 iteration: N2=" << os.str ()); |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
727 |
} |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
728 |
#endif //NS3_LOG_ENABLE |
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
729 |
|
61831e265e20
Bug 733: OLSR MPR Computation give incorrect result
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
4616
diff
changeset
|
730 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
731 |
// 4.1. For each node in N, calculate the reachability, i.e., the |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
732 |
// number of nodes in N2 which are not yet covered by at |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
733 |
// least one node in the MPR set, and which are reachable |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
734 |
// through this 1-hop neighbor |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
735 |
std::map<int, std::vector<const NeighborTuple *> > reachability; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
736 |
std::set<int> rs; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
737 |
for (NeighborSet::iterator it = N.begin(); it != N.end(); it++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
738 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
739 |
NeighborTuple const &nb_tuple = *it; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
740 |
int r = 0; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
741 |
for (TwoHopNeighborSet::iterator it2 = N2.begin (); it2 != N2.end (); it2++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
742 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
743 |
TwoHopNeighborTuple const &nb2hop_tuple = *it2; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
744 |
if (nb_tuple.neighborMainAddr == nb2hop_tuple.neighborMainAddr) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
745 |
r++; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
746 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
747 |
rs.insert (r); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
748 |
reachability[r].push_back (&nb_tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
749 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
750 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
751 |
// 4.2. Select as a MPR the node with highest N_willingness among |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
752 |
// the nodes in N with non-zero reachability. In case of |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
753 |
// multiple choice select the node which provides |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
754 |
// reachability to the maximum number of nodes in N2. In |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
755 |
// case of multiple nodes providing the same amount of |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
756 |
// reachability, select the node as MPR whose D(y) is |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
757 |
// greater. Remove the nodes from N2 which are now covered |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
758 |
// by a node in the MPR set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
759 |
NeighborTuple const *max = NULL; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
760 |
int max_r = 0; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
761 |
for (std::set<int>::iterator it = rs.begin (); it != rs.end (); it++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
762 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
763 |
int r = *it; |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
764 |
if (r == 0) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
765 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
766 |
continue; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
767 |
} |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
768 |
for (std::vector<const NeighborTuple *>::iterator it2 = reachability[r].begin (); |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
769 |
it2 != reachability[r].end (); it2++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
770 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
771 |
const NeighborTuple *nb_tuple = *it2; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
772 |
if (max == NULL || nb_tuple->willingness > max->willingness) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
773 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
774 |
max = nb_tuple; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
775 |
max_r = r; |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
776 |
} |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
777 |
else if (nb_tuple->willingness == max->willingness) |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
778 |
{ |
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
779 |
if (r > max_r) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
780 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
781 |
max = nb_tuple; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
782 |
max_r = r; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
783 |
} |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
784 |
else if (r == max_r) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
785 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
786 |
if (Degree (*nb_tuple) > Degree (*max)) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
787 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
788 |
max = nb_tuple; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
789 |
max_r = r; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
790 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
791 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
792 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
793 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
794 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
795 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
796 |
if (max != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
797 |
{ |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
798 |
mprSet.insert (max->neighborMainAddr); |
5756 | 799 |
CoverTwoHopNeighbors (max->neighborMainAddr, N2); |
800 |
NS_LOG_LOGIC (N2.size () << " 2-hop neighbors left to cover!"); |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
801 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
802 |
} |
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
803 |
|
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
804 |
#ifdef NS3_LOG_ENABLE |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
805 |
{ |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
806 |
std::ostringstream os; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
807 |
os << "["; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
808 |
for (MprSet::const_iterator iter = mprSet.begin (); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
809 |
iter != mprSet.end (); iter++) |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
810 |
{ |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
811 |
MprSet::const_iterator next = iter; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
812 |
next++; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
813 |
os << *iter; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
814 |
if (next != mprSet.end ()) |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
815 |
os << ", "; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
816 |
} |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
817 |
os << "]"; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
818 |
NS_LOG_DEBUG ("Computed MPR set for node " << m_mainAddress << ": " << os.str ()); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
819 |
} |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
820 |
#endif //NS3_LOG_ENABLE |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
821 |
|
2361
743e0e351379
OLSR: fix default willingness value, cleanup and fix the MPR computation algorithm.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2359
diff
changeset
|
822 |
m_state.SetMprSet (mprSet); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
823 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
824 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
825 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
826 |
/// \brief Gets the main address associated with a given interface address. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
827 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
828 |
/// \param iface_addr the interface address. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
829 |
/// \return the corresponding main address. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
830 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
831 |
Ipv4Address |
4364 | 832 |
RoutingProtocol::GetMainAddress (Ipv4Address iface_addr) const |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
833 |
{ |
1798
7bb07f0d0e9f
Make OlsrAgentImpl::GetMainAddress const
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1779
diff
changeset
|
834 |
const IfaceAssocTuple *tuple = |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
835 |
m_state.FindIfaceAssocTuple (iface_addr); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
836 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
837 |
if (tuple != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
838 |
return tuple->mainAddr; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
839 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
840 |
return iface_addr; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
841 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
842 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
843 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
844 |
/// \brief Creates the routing table of the node following RFC 3626 hints. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
845 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
846 |
void |
4364 | 847 |
RoutingProtocol::RoutingTableComputation () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
848 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
849 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << " s: Node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
850 |
<< ": RoutingTableComputation begin..."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
851 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
852 |
// 1. All the entries from the routing table are removed. |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
853 |
Clear (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
854 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
855 |
// 2. The new routing entries are added starting with the |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
856 |
// symmetric neighbors (h=1) as the destination nodes. |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
857 |
const NeighborSet &neighborSet = m_state.GetNeighbors (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
858 |
for (NeighborSet::const_iterator it = neighborSet.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
859 |
it != neighborSet.end(); it++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
860 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
861 |
NeighborTuple const &nb_tuple = *it; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
862 |
NS_LOG_DEBUG ("Looking at neighbor tuple: " << nb_tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
863 |
if (nb_tuple.status == NeighborTuple::STATUS_SYM) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
864 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
865 |
bool nb_main_addr = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
866 |
const LinkTuple *lt = NULL; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
867 |
const LinkSet &linkSet = m_state.GetLinks (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
868 |
for (LinkSet::const_iterator it2 = linkSet.begin(); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
869 |
it2 != linkSet.end(); it2++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
870 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
871 |
LinkTuple const &link_tuple = *it2; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
872 |
NS_LOG_DEBUG ("Looking at link tuple: " << link_tuple |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
873 |
<< (link_tuple.time >= Simulator::Now ()? "" : " (expired)")); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
874 |
if ((GetMainAddress (link_tuple.neighborIfaceAddr) == nb_tuple.neighborMainAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
875 |
&& link_tuple.time >= Simulator::Now ()) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
876 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
877 |
NS_LOG_LOGIC ("Link tuple matches neighbor " << nb_tuple.neighborMainAddr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
878 |
<< " => adding routing table entry to neighbor"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
879 |
lt = &link_tuple; |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
880 |
AddEntry (link_tuple.neighborIfaceAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
881 |
link_tuple.neighborIfaceAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
882 |
link_tuple.localIfaceAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
883 |
1); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
884 |
if (link_tuple.neighborIfaceAddr == nb_tuple.neighborMainAddr) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
885 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
886 |
nb_main_addr = true; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
887 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
888 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
889 |
else |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
890 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
891 |
NS_LOG_LOGIC ("Link tuple: linkMainAddress= " << GetMainAddress (link_tuple.neighborIfaceAddr) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
892 |
<< "; neighborMainAddr = " << nb_tuple.neighborMainAddr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
893 |
<< "; expired=" << int (link_tuple.time < Simulator::Now ()) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
894 |
<< " => IGNORE"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
895 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
896 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
897 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
898 |
// If, in the above, no R_dest_addr is equal to the main |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
899 |
// address of the neighbor, then another new routing entry |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
900 |
// with MUST be added, with: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
901 |
// R_dest_addr = main address of the neighbor; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
902 |
// R_next_addr = L_neighbor_iface_addr of one of the |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
903 |
// associated link tuple with L_time >= current time; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
904 |
// R_dist = 1; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
905 |
// R_iface_addr = L_local_iface_addr of the |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
906 |
// associated link tuple. |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
907 |
if (!nb_main_addr && lt != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
908 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
909 |
NS_LOG_LOGIC ("no R_dest_addr is equal to the main address of the neighbor " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
910 |
"=> adding additional routing entry"); |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
911 |
AddEntry(nb_tuple.neighborMainAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
912 |
lt->neighborIfaceAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
913 |
lt->localIfaceAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
914 |
1); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
915 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
916 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
917 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
918 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
919 |
// 3. for each node in N2, i.e., a 2-hop neighbor which is not a |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
920 |
// neighbor node or the node itself, and such that there exist at |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
921 |
// least one entry in the 2-hop neighbor set where |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
922 |
// N_neighbor_main_addr correspond to a neighbor node with |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
923 |
// willingness different of WILL_NEVER, |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
924 |
const TwoHopNeighborSet &twoHopNeighbors = m_state.GetTwoHopNeighbors (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
925 |
for (TwoHopNeighborSet::const_iterator it = twoHopNeighbors.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
926 |
it != twoHopNeighbors.end (); it++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
927 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
928 |
TwoHopNeighborTuple const &nb2hop_tuple = *it; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
929 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
930 |
NS_LOG_LOGIC ("Looking at two-hop neighbor tuple: " << nb2hop_tuple); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
931 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
932 |
// a 2-hop neighbor which is not a neighbor node or the node itself |
5867
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
933 |
if (m_state.FindSymNeighborTuple (nb2hop_tuple.twoHopNeighborAddr)) |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
934 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
935 |
NS_LOG_LOGIC ("Two-hop neighbor tuple is also neighbor; skipped."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
936 |
continue; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
937 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
938 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
939 |
if (nb2hop_tuple.twoHopNeighborAddr == m_mainAddress) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
940 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
941 |
NS_LOG_LOGIC ("Two-hop neighbor is self; skipped."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
942 |
continue; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
943 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
944 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
945 |
// ...and such that there exist at least one entry in the 2-hop |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
946 |
// neighbor set where N_neighbor_main_addr correspond to a |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
947 |
// neighbor node with willingness different of WILL_NEVER... |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
948 |
bool nb2hopOk = false; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
949 |
for (NeighborSet::const_iterator neighbor = neighborSet.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
950 |
neighbor != neighborSet.end(); neighbor++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
951 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
952 |
if (neighbor->neighborMainAddr == nb2hop_tuple.neighborMainAddr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
953 |
&& neighbor->willingness != OLSR_WILL_NEVER) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
954 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
955 |
nb2hopOk = true; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
956 |
break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
957 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
958 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
959 |
if (!nb2hopOk) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
960 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
961 |
NS_LOG_LOGIC ("Two-hop neighbor tuple skipped: 2-hop neighbor " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
962 |
<< nb2hop_tuple.twoHopNeighborAddr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
963 |
<< " is attached to neighbor " << nb2hop_tuple.neighborMainAddr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
964 |
<< ", which was not found in the Neighbor Set."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
965 |
continue; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
966 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
967 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
968 |
// one selects one 2-hop tuple and creates one entry in the routing table with: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
969 |
// R_dest_addr = the main address of the 2-hop neighbor; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
970 |
// R_next_addr = the R_next_addr of the entry in the |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
971 |
// routing table with: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
972 |
// R_dest_addr == N_neighbor_main_addr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
973 |
// of the 2-hop tuple; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
974 |
// R_dist = 2; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
975 |
// R_iface_addr = the R_iface_addr of the entry in the |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
976 |
// routing table with: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
977 |
// R_dest_addr == N_neighbor_main_addr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
978 |
// of the 2-hop tuple; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
979 |
RoutingTableEntry entry; |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
980 |
bool foundEntry = Lookup (nb2hop_tuple.neighborMainAddr, entry); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
981 |
if (foundEntry) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
982 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
983 |
NS_LOG_LOGIC ("Adding routing entry for two-hop neighbor."); |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
984 |
AddEntry (nb2hop_tuple.twoHopNeighborAddr, |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
985 |
entry.nextAddr, |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
986 |
entry.interface, |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
987 |
2); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
988 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
989 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
990 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
991 |
NS_LOG_LOGIC ("NOT adding routing entry for two-hop neighbor (" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
992 |
<< nb2hop_tuple.twoHopNeighborAddr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
993 |
<< " not found in the routing table)"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
994 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
995 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
996 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
997 |
for (uint32_t h = 2; ; h++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
998 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
999 |
bool added = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1000 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1001 |
// 3.1. For each topology entry in the topology table, if its |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1002 |
// T_dest_addr does not correspond to R_dest_addr of any |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1003 |
// route entry in the routing table AND its T_last_addr |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1004 |
// corresponds to R_dest_addr of a route entry whose R_dist |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1005 |
// is equal to h, then a new route entry MUST be recorded in |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1006 |
// the routing table (if it does not already exist) |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1007 |
const TopologySet &topology = m_state.GetTopologySet (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1008 |
for (TopologySet::const_iterator it = topology.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1009 |
it != topology.end (); it++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1010 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1011 |
const TopologyTuple &topology_tuple = *it; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1012 |
NS_LOG_LOGIC ("Looking at topology tuple: " << topology_tuple); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1013 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1014 |
RoutingTableEntry destAddrEntry, lastAddrEntry; |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1015 |
bool have_destAddrEntry = Lookup (topology_tuple.destAddr, destAddrEntry); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1016 |
bool have_lastAddrEntry = Lookup (topology_tuple.lastAddr, lastAddrEntry); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1017 |
if (!have_destAddrEntry && have_lastAddrEntry && lastAddrEntry.distance == h) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1018 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1019 |
NS_LOG_LOGIC ("Adding routing table entry based on the topology tuple."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1020 |
// then a new route entry MUST be recorded in |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1021 |
// the routing table (if it does not already exist) where: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1022 |
// R_dest_addr = T_dest_addr; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1023 |
// R_next_addr = R_next_addr of the recorded |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1024 |
// route entry where: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1025 |
// R_dest_addr == T_last_addr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1026 |
// R_dist = h+1; and |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1027 |
// R_iface_addr = R_iface_addr of the recorded |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1028 |
// route entry where: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1029 |
// R_dest_addr == T_last_addr. |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1030 |
AddEntry (topology_tuple.destAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1031 |
lastAddrEntry.nextAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1032 |
lastAddrEntry.interface, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1033 |
h + 1); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1034 |
added = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1035 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1036 |
else |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1037 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1038 |
NS_LOG_LOGIC ("NOT adding routing table entry based on the topology tuple: " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1039 |
"have_destAddrEntry=" << have_destAddrEntry |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1040 |
<< " have_lastAddrEntry=" << have_lastAddrEntry |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1041 |
<< " lastAddrEntry.distance=" << (int) lastAddrEntry.distance |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1042 |
<< " (h=" << h << ")"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1043 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1044 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1045 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1046 |
if (!added) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1047 |
break; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1048 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1049 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1050 |
// 4. For each entry in the multiple interface association base |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1051 |
// where there exists a routing entry such that: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1052 |
// R_dest_addr == I_main_addr (of the multiple interface association entry) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1053 |
// AND there is no routing entry such that: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1054 |
// R_dest_addr == I_iface_addr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1055 |
const IfaceAssocSet &ifaceAssocSet = m_state.GetIfaceAssocSet (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1056 |
for (IfaceAssocSet::const_iterator it = ifaceAssocSet.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1057 |
it != ifaceAssocSet.end (); it++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1058 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1059 |
IfaceAssocTuple const &tuple = *it; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1060 |
RoutingTableEntry entry1, entry2; |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1061 |
bool have_entry1 = Lookup (tuple.mainAddr, entry1); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1062 |
bool have_entry2 = Lookup (tuple.ifaceAddr, entry2); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1063 |
if (have_entry1 && !have_entry2) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1064 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1065 |
// then a route entry is created in the routing table with: |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1066 |
// R_dest_addr = I_iface_addr (of the multiple interface |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1067 |
// association entry) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1068 |
// R_next_addr = R_next_addr (of the recorded route entry) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1069 |
// R_dist = R_dist (of the recorded route entry) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1070 |
// R_iface_addr = R_iface_addr (of the recorded route entry). |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1071 |
AddEntry (tuple.ifaceAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1072 |
entry1.nextAddr, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1073 |
entry1.interface, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1074 |
entry1.distance); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1075 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1076 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1077 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1078 |
// 5. For each tuple in the association set, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1079 |
// If there is no entry in the routing table with: |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1080 |
// R_dest_addr == A_network_addr/A_netmask |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1081 |
// then a new routing entry is created. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1082 |
const AssociationSet &associationSet = m_state.GetAssociationSet (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1083 |
for (AssociationSet::const_iterator it = associationSet.begin (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1084 |
it != associationSet.end (); it++) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1085 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1086 |
AssociationTuple const &tuple = *it; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1087 |
RoutingTableEntry gatewayEntry; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1088 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1089 |
bool gatewayEntryExists = Lookup (tuple.gatewayAddr, gatewayEntry); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1090 |
bool addRoute = false; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1091 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1092 |
uint32_t routeIndex = 0; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1093 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1094 |
for (routeIndex = 0; routeIndex < m_hnaRoutingTable->GetNRoutes (); routeIndex++) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1095 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1096 |
Ipv4RoutingTableEntry route = m_hnaRoutingTable->GetRoute (routeIndex); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1097 |
if (route.GetDestNetwork () == tuple.networkAddr && |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1098 |
route.GetDestNetworkMask () == tuple.netmask) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1099 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1100 |
break; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1101 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1102 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1103 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1104 |
if (routeIndex == m_hnaRoutingTable->GetNRoutes ()) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1105 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1106 |
addRoute = true; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1107 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1108 |
else if(gatewayEntryExists && m_hnaRoutingTable->GetMetric (routeIndex) > gatewayEntry.distance) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1109 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1110 |
m_hnaRoutingTable->RemoveRoute(routeIndex); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1111 |
addRoute = true; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1112 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1113 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1114 |
if(addRoute && gatewayEntryExists) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1115 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1116 |
m_hnaRoutingTable->AddNetworkRouteTo (tuple.networkAddr, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1117 |
tuple.netmask, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1118 |
gatewayEntry.nextAddr, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1119 |
gatewayEntry.interface, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1120 |
gatewayEntry.distance); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1121 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1122 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1123 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1124 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1125 |
NS_LOG_DEBUG ("Node " << m_mainAddress << ": RoutingTableComputation end."); |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
1126 |
m_routingTableChanged (GetSize ()); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1127 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1128 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1129 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1130 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1131 |
/// \brief Processes a HELLO message following RFC 3626 specification. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1132 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1133 |
/// Link sensing and population of the Neighbor Set, 2-hop Neighbor Set and MPR |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1134 |
/// Selector Set are performed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1135 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1136 |
/// \param msg the %OLSR message which contains the HELLO message. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1137 |
/// \param receiver_iface the address of the interface where the message was received from. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1138 |
/// \param sender_iface the address of the interface where the message was sent from. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1139 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1140 |
void |
4364 | 1141 |
RoutingProtocol::ProcessHello (const olsr::MessageHeader &msg, |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1142 |
const Ipv4Address &receiverIface, |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1143 |
const Ipv4Address &senderIface) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1144 |
{ |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1145 |
const olsr::MessageHeader::Hello &hello = msg.GetHello (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1146 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1147 |
LinkSensing (msg, hello, receiverIface, senderIface); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1148 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1149 |
#ifdef NS3_LOG_ENABLE |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1150 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1151 |
const LinkSet &links = m_state.GetLinks (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1152 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1153 |
<< "s ** BEGIN dump Link Set for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1154 |
for (LinkSet::const_iterator link = links.begin (); link != links.end (); link++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1155 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1156 |
NS_LOG_DEBUG(*link); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1157 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1158 |
NS_LOG_DEBUG ("** END dump Link Set for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1159 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1160 |
const NeighborSet &neighbors = m_state.GetNeighbors (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1161 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1162 |
<< "s ** BEGIN dump Neighbor Set for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1163 |
for (NeighborSet::const_iterator neighbor = neighbors.begin (); neighbor != neighbors.end (); neighbor++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1164 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1165 |
NS_LOG_DEBUG(*neighbor); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1166 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1167 |
NS_LOG_DEBUG ("** END dump Neighbor Set for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1168 |
} |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
1169 |
#endif // NS3_LOG_ENABLE |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1170 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1171 |
PopulateNeighborSet (msg, hello); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1172 |
PopulateTwoHopNeighborSet (msg, hello); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1173 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1174 |
#ifdef NS3_LOG_ENABLE |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1175 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1176 |
const TwoHopNeighborSet &twoHopNeighbors = m_state.GetTwoHopNeighbors (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1177 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1178 |
<< "s ** BEGIN dump TwoHopNeighbor Set for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1179 |
for (TwoHopNeighborSet::const_iterator tuple = twoHopNeighbors.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1180 |
tuple != twoHopNeighbors.end (); tuple++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1181 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1182 |
NS_LOG_DEBUG(*tuple); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1183 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1184 |
NS_LOG_DEBUG ("** END dump TwoHopNeighbor Set for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1185 |
} |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
1186 |
#endif // NS3_LOG_ENABLE |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1187 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1188 |
MprComputation (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1189 |
PopulateMprSelectorSet (msg, hello); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1190 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1191 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1192 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1193 |
/// \brief Processes a TC message following RFC 3626 specification. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1194 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1195 |
/// The Topology Set is updated (if needed) with the information of |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1196 |
/// the received TC message. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1197 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1198 |
/// \param msg the %OLSR message which contains the TC message. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1199 |
/// \param sender_iface the address of the interface where the message was sent from. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1200 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1201 |
void |
4364 | 1202 |
RoutingProtocol::ProcessTc (const olsr::MessageHeader &msg, |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1203 |
const Ipv4Address &senderIface) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1204 |
{ |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1205 |
const olsr::MessageHeader::Tc &tc = msg.GetTc (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1206 |
Time now = Simulator::Now (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1207 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1208 |
// 1. If the sender interface of this message is not in the symmetric |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1209 |
// 1-hop neighborhood of this node, the message MUST be discarded. |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1210 |
const LinkTuple *link_tuple = m_state.FindSymLinkTuple (senderIface, now); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1211 |
if (link_tuple == NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1212 |
return; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1213 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1214 |
// 2. If there exist some tuple in the topology set where: |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1215 |
// T_last_addr == originator address AND |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1216 |
// T_seq > ANSN, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1217 |
// then further processing of this TC message MUST NOT be |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1218 |
// performed. |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1219 |
const TopologyTuple *topologyTuple = |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1220 |
m_state.FindNewerTopologyTuple (msg.GetOriginatorAddress (), tc.ansn); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1221 |
if (topologyTuple != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1222 |
return; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1223 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1224 |
// 3. All tuples in the topology set where: |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1225 |
// T_last_addr == originator address AND |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1226 |
// T_seq < ANSN |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1227 |
// MUST be removed from the topology set. |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1228 |
m_state.EraseOlderTopologyTuples (msg.GetOriginatorAddress (), tc.ansn); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1229 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1230 |
// 4. For each of the advertised neighbor main address received in |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1231 |
// the TC message: |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1232 |
for (std::vector<Ipv4Address>::const_iterator i = tc.neighborAddresses.begin (); |
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1233 |
i != tc.neighborAddresses.end (); i++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1234 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1235 |
const Ipv4Address &addr = *i; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1236 |
// 4.1. If there exist some tuple in the topology set where: |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1237 |
// T_dest_addr == advertised neighbor main address, AND |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1238 |
// T_last_addr == originator address, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1239 |
// then the holding time of that tuple MUST be set to: |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1240 |
// T_time = current time + validity time. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1241 |
TopologyTuple *topologyTuple = |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1242 |
m_state.FindTopologyTuple (addr, msg.GetOriginatorAddress ()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1243 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1244 |
if (topologyTuple != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1245 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1246 |
topologyTuple->expirationTime = now + msg.GetVTime (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1247 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1248 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1249 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1250 |
// 4.2. Otherwise, a new tuple MUST be recorded in the topology |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1251 |
// set where: |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1252 |
// T_dest_addr = advertised neighbor main address, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1253 |
// T_last_addr = originator address, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1254 |
// T_seq = ANSN, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1255 |
// T_time = current time + validity time. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1256 |
TopologyTuple topologyTuple;; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1257 |
topologyTuple.destAddr = addr; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1258 |
topologyTuple.lastAddr = msg.GetOriginatorAddress (); |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1259 |
topologyTuple.sequenceNumber = tc.ansn; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1260 |
topologyTuple.expirationTime = now + msg.GetVTime (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1261 |
AddTopologyTuple (topologyTuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1262 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1263 |
// Schedules topology tuple deletion |
1768
1664a9db93b9
Make EventGarbageCollector private to the olsr module; adapt olsr to Timer API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1765
diff
changeset
|
1264 |
m_events.Track (Simulator::Schedule (DELAY (topologyTuple.expirationTime), |
4364 | 1265 |
&RoutingProtocol::TopologyTupleTimerExpire, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
1266 |
this, |
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
1267 |
topologyTuple.destAddr, |
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
1268 |
topologyTuple.lastAddr)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1269 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1270 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1271 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1272 |
#ifdef NS3_LOG_ENABLE |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1273 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1274 |
const TopologySet &topology = m_state.GetTopologySet (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1275 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1276 |
<< "s ** BEGIN dump TopologySet for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1277 |
for (TopologySet::const_iterator tuple = topology.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1278 |
tuple != topology.end (); tuple++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1279 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1280 |
NS_LOG_DEBUG (*tuple); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1281 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1282 |
NS_LOG_DEBUG ("** END dump TopologySet Set for OLSR Node " << m_mainAddress); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1283 |
} |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
1284 |
#endif // NS3_LOG_ENABLE |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1285 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1286 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1287 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1288 |
/// \brief Processes a MID message following RFC 3626 specification. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1289 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1290 |
/// The Interface Association Set is updated (if needed) with the information |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1291 |
/// of the received MID message. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1292 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1293 |
/// \param msg the %OLSR message which contains the MID message. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1294 |
/// \param sender_iface the address of the interface where the message was sent from. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1295 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1296 |
void |
4364 | 1297 |
RoutingProtocol::ProcessMid (const olsr::MessageHeader &msg, |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1298 |
const Ipv4Address &senderIface) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1299 |
{ |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1300 |
const olsr::MessageHeader::Mid &mid = msg.GetMid (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1301 |
Time now = Simulator::Now (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1302 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1303 |
NS_LOG_DEBUG ("Node " << m_mainAddress << " ProcessMid from " << senderIface); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1304 |
// 1. If the sender interface of this message is not in the symmetric |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1305 |
// 1-hop neighborhood of this node, the message MUST be discarded. |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1306 |
const LinkTuple *linkTuple = m_state.FindSymLinkTuple (senderIface, now); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1307 |
if (linkTuple == NULL) |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1308 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1309 |
NS_LOG_LOGIC ("Node " << m_mainAddress << |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1310 |
": the sender interface of this message is not in the " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1311 |
"symmetric 1-hop neighborhood of this node," |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1312 |
" the message MUST be discarded."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1313 |
return; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1314 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1315 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1316 |
// 2. For each interface address listed in the MID message |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1317 |
for (std::vector<Ipv4Address>::const_iterator i = mid.interfaceAddresses.begin (); |
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1318 |
i != mid.interfaceAddresses.end (); i++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1319 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1320 |
bool updated = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1321 |
IfaceAssocSet &ifaceAssoc = m_state.GetIfaceAssocSetMutable (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1322 |
for (IfaceAssocSet::iterator tuple = ifaceAssoc.begin(); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1323 |
tuple != ifaceAssoc.end(); tuple++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1324 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1325 |
if (tuple->ifaceAddr == *i |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1326 |
&& tuple->mainAddr == msg.GetOriginatorAddress ()) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1327 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1328 |
NS_LOG_LOGIC ("IfaceAssoc updated: " << *tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1329 |
tuple->time = now + msg.GetVTime (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1330 |
updated = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1331 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1332 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1333 |
if (!updated) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1334 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1335 |
IfaceAssocTuple tuple; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1336 |
tuple.ifaceAddr = *i; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1337 |
tuple.mainAddr = msg.GetOriginatorAddress (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1338 |
tuple.time = now + msg.GetVTime (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1339 |
AddIfaceAssocTuple (tuple); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1340 |
NS_LOG_LOGIC ("New IfaceAssoc added: " << tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1341 |
// Schedules iface association tuple deletion |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1342 |
Simulator::Schedule (DELAY (tuple.time), |
4364 | 1343 |
&RoutingProtocol::IfaceAssocTupleTimerExpire, this, tuple.ifaceAddr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1344 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1345 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1346 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1347 |
// 3. (not part of the RFC) iterate over all NeighborTuple's and |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1348 |
// TwoHopNeighborTuples, update the neighbor addresses taking into account |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1349 |
// the new MID information. |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1350 |
NeighborSet &neighbors = m_state.GetNeighbors (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1351 |
for (NeighborSet::iterator neighbor = neighbors.begin (); neighbor != neighbors.end(); neighbor++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1352 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1353 |
neighbor->neighborMainAddr = GetMainAddress (neighbor->neighborMainAddr); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1354 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1355 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1356 |
TwoHopNeighborSet &twoHopNeighbors = m_state.GetTwoHopNeighbors (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1357 |
for (TwoHopNeighborSet::iterator twoHopNeighbor = twoHopNeighbors.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1358 |
twoHopNeighbor != twoHopNeighbors.end(); twoHopNeighbor++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1359 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1360 |
twoHopNeighbor->neighborMainAddr = GetMainAddress (twoHopNeighbor->neighborMainAddr); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1361 |
twoHopNeighbor->twoHopNeighborAddr = GetMainAddress (twoHopNeighbor->twoHopNeighborAddr); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1362 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1363 |
NS_LOG_DEBUG ("Node " << m_mainAddress << " ProcessMid from " << senderIface << " -> END."); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1364 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1365 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1366 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1367 |
/// \brief Processes a HNA message following RFC 3626 specification. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1368 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1369 |
/// The Host Network Association Set is updated (if needed) with the information |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1370 |
/// of the received HNA message. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1371 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1372 |
/// \param msg the %OLSR message which contains the HNA message. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1373 |
/// \param sender_iface the address of the interface where the message was sent from. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1374 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1375 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1376 |
RoutingProtocol::ProcessHna (const olsr::MessageHeader &msg, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1377 |
const Ipv4Address &senderIface) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1378 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1379 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1380 |
const olsr::MessageHeader::Hna &hna = msg.GetHna (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1381 |
Time now = Simulator::Now (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1382 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1383 |
// 1. If the sender interface of this message is not in the symmetric |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1384 |
// 1-hop neighborhood of this node, the message MUST be discarded. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1385 |
const LinkTuple *link_tuple = m_state.FindSymLinkTuple (senderIface, now); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1386 |
if (link_tuple == NULL) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1387 |
return; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1388 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1389 |
// 2. Otherwise, for each (network address, netmask) pair in the |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1390 |
// message: |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1391 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1392 |
for (std::vector<olsr::MessageHeader::Hna::Association>::const_iterator it = hna.associations.begin(); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1393 |
it != hna.associations.end() ; it++) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1394 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1395 |
AssociationTuple *tuple = m_state.FindAssociationTuple(msg.GetOriginatorAddress(),it->address,it->mask); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1396 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1397 |
// 2.1 if an entry in the association set already exists, where: |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1398 |
// A_gateway_addr == originator address |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1399 |
// A_network_addr == network address |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1400 |
// A_netmask == netmask |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1401 |
// then the holding time for that tuple MUST be set to: |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1402 |
// A_time = current time + validity time |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1403 |
if(tuple != NULL) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1404 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1405 |
tuple->expirationTime = now + msg.GetVTime (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1406 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1407 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1408 |
// 2.2 otherwise, a new tuple MUST be recorded with: |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1409 |
// A_gateway_addr = originator address |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1410 |
// A_network_addr = network address |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1411 |
// A_netmask = netmask |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1412 |
// A_time = current time + validity time |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1413 |
else |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1414 |
{ |
6143
ad316b5cfb5a
Fix compilation error: ISO C++ forbids use of initializer list to initialize reference assocTuple
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6142
diff
changeset
|
1415 |
AssociationTuple assocTuple = { |
ad316b5cfb5a
Fix compilation error: ISO C++ forbids use of initializer list to initialize reference assocTuple
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6142
diff
changeset
|
1416 |
msg.GetOriginatorAddress(), |
ad316b5cfb5a
Fix compilation error: ISO C++ forbids use of initializer list to initialize reference assocTuple
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6142
diff
changeset
|
1417 |
it->address, |
ad316b5cfb5a
Fix compilation error: ISO C++ forbids use of initializer list to initialize reference assocTuple
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6142
diff
changeset
|
1418 |
it->mask, |
ad316b5cfb5a
Fix compilation error: ISO C++ forbids use of initializer list to initialize reference assocTuple
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6142
diff
changeset
|
1419 |
now + msg.GetVTime () |
ad316b5cfb5a
Fix compilation error: ISO C++ forbids use of initializer list to initialize reference assocTuple
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
6142
diff
changeset
|
1420 |
}; |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1421 |
AddAssociationTuple (assocTuple); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1422 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1423 |
//Schedule Association Tuple deletion |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1424 |
Simulator::Schedule (DELAY (assocTuple.expirationTime), |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1425 |
&RoutingProtocol::AssociationTupleTimerExpire, this, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1426 |
assocTuple.gatewayAddr,assocTuple.networkAddr,assocTuple.netmask); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1427 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1428 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1429 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1430 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1431 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1432 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1433 |
/// \brief OLSR's default forwarding algorithm. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1434 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1435 |
/// See RFC 3626 for details. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1436 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1437 |
/// \param p the %OLSR packet which has been received. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1438 |
/// \param msg the %OLSR message which must be forwarded. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1439 |
/// \param dup_tuple NULL if the message has never been considered for forwarding, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1440 |
/// or a duplicate tuple in other case. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1441 |
/// \param local_iface the address of the interface where the message was received from. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1442 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1443 |
void |
4364 | 1444 |
RoutingProtocol::ForwardDefault (olsr::MessageHeader olsrMessage, |
1732
5eb67772a3e5
fix indentation in some places (was broken due to class rename)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1731
diff
changeset
|
1445 |
DuplicateTuple *duplicated, |
5eb67772a3e5
fix indentation in some places (was broken due to class rename)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1731
diff
changeset
|
1446 |
const Ipv4Address &localIface, |
5eb67772a3e5
fix indentation in some places (was broken due to class rename)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1731
diff
changeset
|
1447 |
const Ipv4Address &senderAddress) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1448 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1449 |
Time now = Simulator::Now (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1450 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1451 |
// If the sender interface address is not in the symmetric |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1452 |
// 1-hop neighborhood the message must not be forwarded |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1453 |
const LinkTuple *linkTuple = m_state.FindSymLinkTuple (senderAddress, now); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1454 |
if (linkTuple == NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1455 |
return; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1456 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1457 |
// If the message has already been considered for forwarding, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1458 |
// it must not be retransmitted again |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1459 |
if (duplicated != NULL && duplicated->retransmitted) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1460 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1461 |
NS_LOG_LOGIC (Simulator::Now () << "Node " << m_mainAddress << " does not forward a message received" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1462 |
" from " << olsrMessage.GetOriginatorAddress () << " because it is duplicated"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1463 |
return; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1464 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1465 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1466 |
// If the sender interface address is an interface address |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1467 |
// of a MPR selector of this node and ttl is greater than 1, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1468 |
// the message must be retransmitted |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1469 |
bool retransmitted = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1470 |
if (olsrMessage.GetTimeToLive () > 1) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1471 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1472 |
const MprSelectorTuple *mprselTuple = |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1473 |
m_state.FindMprSelectorTuple (GetMainAddress (senderAddress)); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1474 |
if (mprselTuple != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1475 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1476 |
olsrMessage.SetTimeToLive (olsrMessage.GetTimeToLive () - 1); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1477 |
olsrMessage.SetHopCount (olsrMessage.GetHopCount () + 1); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1478 |
// We have to introduce a random delay to avoid |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1479 |
// synchronization with neighbors. |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1480 |
QueueMessage (olsrMessage, JITTER); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1481 |
retransmitted = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1482 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1483 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1484 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1485 |
// Update duplicate tuple... |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1486 |
if (duplicated != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1487 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1488 |
duplicated->expirationTime = now + OLSR_DUP_HOLD_TIME; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1489 |
duplicated->retransmitted = retransmitted; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1490 |
duplicated->ifaceList.push_back (localIface); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1491 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1492 |
// ...or create a new one |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1493 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1494 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1495 |
DuplicateTuple newDup; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1496 |
newDup.address = olsrMessage.GetOriginatorAddress (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1497 |
newDup.sequenceNumber = olsrMessage.GetMessageSequenceNumber (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1498 |
newDup.expirationTime = now + OLSR_DUP_HOLD_TIME; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1499 |
newDup.retransmitted = retransmitted; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1500 |
newDup.ifaceList.push_back (localIface); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1501 |
AddDuplicateTuple (newDup); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1502 |
// Schedule dup tuple deletion |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1503 |
Simulator::Schedule (OLSR_DUP_HOLD_TIME, |
4364 | 1504 |
&RoutingProtocol::DupTupleTimerExpire, this, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
1505 |
newDup.address, newDup.sequenceNumber); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1506 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1507 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1508 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1509 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1510 |
/// \brief Enques an %OLSR message which will be sent with a delay of (0, delay]. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1511 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1512 |
/// This buffering system is used in order to piggyback several %OLSR messages in |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1513 |
/// a same %OLSR packet. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1514 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1515 |
/// \param msg the %OLSR message which must be sent. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1516 |
/// \param delay maximum delay the %OLSR message is going to be buffered. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1517 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1518 |
void |
4364 | 1519 |
RoutingProtocol::QueueMessage (const olsr::MessageHeader &message, Time delay) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1520 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1521 |
m_queuedMessages.push_back (message); |
1730
163aab5f1129
solve some merge problems
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1723
diff
changeset
|
1522 |
if (not m_queuedMessagesTimer.IsRunning ()) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1523 |
{ |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
1524 |
m_queuedMessagesTimer.SetDelay (delay); |
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
1525 |
m_queuedMessagesTimer.Schedule (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1526 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1527 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1528 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1529 |
void |
4364 | 1530 |
RoutingProtocol::SendPacket (Ptr<Packet> packet, |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1531 |
const MessageList &containedMessages) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1532 |
{ |
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
1533 |
NS_LOG_DEBUG ("OLSR node " << m_mainAddress << " sending a OLSR packet"); |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1534 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1535 |
// Add a header |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1536 |
olsr::PacketHeader header; |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1537 |
header.SetPacketLength (header.GetSerializedSize () + packet->GetSize ()); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1538 |
header.SetPacketSequenceNumber (GetPacketSequenceNumber ()); |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1539 |
packet->AddHeader (header); |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1540 |
|
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1541 |
// Trace it |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1542 |
m_txPacketTrace (header, containedMessages); |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1543 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1544 |
// Send it |
6303
4ef0052694b9
Bug Fix: OLSR messages generated on non-OLSR interfaces
Lalith Suresh
parents:
6143
diff
changeset
|
1545 |
for (std::map<Ptr<Socket> , Ipv4InterfaceAddress>::const_iterator i = |
4ef0052694b9
Bug Fix: OLSR messages generated on non-OLSR interfaces
Lalith Suresh
parents:
6143
diff
changeset
|
1546 |
m_socketAddresses.begin (); i != m_socketAddresses.end (); i++) |
4ef0052694b9
Bug Fix: OLSR messages generated on non-OLSR interfaces
Lalith Suresh
parents:
6143
diff
changeset
|
1547 |
{ |
4ef0052694b9
Bug Fix: OLSR messages generated on non-OLSR interfaces
Lalith Suresh
parents:
6143
diff
changeset
|
1548 |
i->first->Send (packet); |
4ef0052694b9
Bug Fix: OLSR messages generated on non-OLSR interfaces
Lalith Suresh
parents:
6143
diff
changeset
|
1549 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1550 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1551 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1552 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1553 |
/// \brief Creates as many %OLSR packets as needed in order to send all buffered |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1554 |
/// %OLSR messages. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1555 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1556 |
/// Maximum number of messages which can be contained in an %OLSR packet is |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1557 |
/// dictated by OLSR_MAX_MSGS constant. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1558 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1559 |
void |
4364 | 1560 |
RoutingProtocol::SendQueuedMessages () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1561 |
{ |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1562 |
Ptr<Packet> packet = Create<Packet> (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1563 |
int numMessages = 0; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1564 |
|
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
1565 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress << ": SendQueuedMessages"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1566 |
|
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1567 |
MessageList msglist; |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1568 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1569 |
for (std::vector<olsr::MessageHeader>::const_iterator message = m_queuedMessages.begin (); |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1570 |
message != m_queuedMessages.end (); |
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1571 |
message++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1572 |
{ |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1573 |
Ptr<Packet> p = Create<Packet> (); |
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1574 |
p->AddHeader (*message); |
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1575 |
packet->AddAtEnd (p); |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1576 |
msglist.push_back (*message); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1577 |
if (++numMessages == OLSR_MAX_MSGS) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1578 |
{ |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1579 |
SendPacket (packet, msglist); |
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1580 |
msglist.clear (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1581 |
// Reset variables for next packet |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1582 |
numMessages = 0; |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1583 |
packet = Create<Packet> (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1584 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1585 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1586 |
|
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
1587 |
if (packet->GetSize ()) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1588 |
{ |
1803
4078e5efdfc6
Add OLSR message tracing, as discussed on ns-developers list.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1801
diff
changeset
|
1589 |
SendPacket (packet, msglist); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1590 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1591 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1592 |
m_queuedMessages.clear (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1593 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1594 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1595 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1596 |
/// \brief Creates a new %OLSR HELLO message which is buffered for being sent later on. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1597 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1598 |
void |
4364 | 1599 |
RoutingProtocol::SendHello () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1600 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1601 |
NS_LOG_FUNCTION (this); |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1602 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1603 |
olsr::MessageHeader msg; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1604 |
Time now = Simulator::Now (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1605 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1606 |
msg.SetVTime (OLSR_NEIGHB_HOLD_TIME); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1607 |
msg.SetOriginatorAddress (m_mainAddress); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1608 |
msg.SetTimeToLive (1); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1609 |
msg.SetHopCount (0); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1610 |
msg.SetMessageSequenceNumber (GetMessageSequenceNumber ()); |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1611 |
olsr::MessageHeader::Hello &hello = msg.GetHello (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1612 |
|
5772
a8245e39c546
Bug 739 - OLSR: Strange HTime value in HELLO messages (thanks to Pavel Boyko)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5761
diff
changeset
|
1613 |
hello.SetHTime (m_helloInterval); |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1614 |
hello.willingness = m_willingness; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1615 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1616 |
std::vector<olsr::MessageHeader::Hello::LinkMessage> |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1617 |
&linkMessages = hello.linkMessages; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1618 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1619 |
const LinkSet &links = m_state.GetLinks (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1620 |
for (LinkSet::const_iterator link_tuple = links.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1621 |
link_tuple != links.end (); link_tuple++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1622 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1623 |
if (!(GetMainAddress (link_tuple->localIfaceAddr) == m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1624 |
&& link_tuple->time >= now)) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1625 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1626 |
continue; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1627 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1628 |
|
1762
6410d2be8cbf
Fix a couple more warnings in OLSR
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1755
diff
changeset
|
1629 |
uint8_t link_type, nb_type = 0xff; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1630 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1631 |
// Establishes link type |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1632 |
if (link_tuple->symTime >= now) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1633 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1634 |
link_type = OLSR_SYM_LINK; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1635 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1636 |
else if (link_tuple->asymTime >= now) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1637 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1638 |
link_type = OLSR_ASYM_LINK; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1639 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1640 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1641 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1642 |
link_type = OLSR_LOST_LINK; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1643 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1644 |
// Establishes neighbor type. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1645 |
if (m_state.FindMprAddress (GetMainAddress (link_tuple->neighborIfaceAddr))) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1646 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1647 |
nb_type = OLSR_MPR_NEIGH; |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1648 |
NS_LOG_DEBUG ("I consider neighbor " << GetMainAddress (link_tuple->neighborIfaceAddr) |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1649 |
<< " to be MPR_NEIGH."); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1650 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1651 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1652 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1653 |
bool ok = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1654 |
for (NeighborSet::const_iterator nb_tuple = m_state.GetNeighbors ().begin (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1655 |
nb_tuple != m_state.GetNeighbors ().end (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1656 |
nb_tuple++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1657 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1658 |
if (nb_tuple->neighborMainAddr == GetMainAddress (link_tuple->neighborIfaceAddr)) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1659 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1660 |
if (nb_tuple->status == NeighborTuple::STATUS_SYM) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1661 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1662 |
NS_LOG_DEBUG ("I consider neighbor " << GetMainAddress (link_tuple->neighborIfaceAddr) |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1663 |
<< " to be SYM_NEIGH."); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1664 |
nb_type = OLSR_SYM_NEIGH; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1665 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1666 |
else if (nb_tuple->status == NeighborTuple::STATUS_NOT_SYM) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1667 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1668 |
nb_type = OLSR_NOT_NEIGH; |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1669 |
NS_LOG_DEBUG ("I consider neighbor " << GetMainAddress (link_tuple->neighborIfaceAddr) |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1670 |
<< " to be NOT_NEIGH."); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1671 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1672 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1673 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1674 |
NS_FATAL_ERROR ("There is a neighbor tuple with an unknown status!\n"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1675 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1676 |
ok = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1677 |
break; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1678 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1679 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1680 |
if (!ok) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1681 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1682 |
NS_LOG_WARN ("I don't know the neighbor " << GetMainAddress (link_tuple->neighborIfaceAddr) << "!!!"); |
2308
7c34ef595e3e
OLSR: remove the 'Link tuple has no corresponding neighbor tuple' assertion; it happens now because MID messages may occasionally not arrive in time, but it's normal.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2307
diff
changeset
|
1683 |
continue; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1684 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1685 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1686 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1687 |
olsr::MessageHeader::Hello::LinkMessage linkMessage; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1688 |
linkMessage.linkCode = (link_type & 0x03) | ((nb_type << 2) & 0x0f); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1689 |
linkMessage.neighborInterfaceAddresses.push_back |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1690 |
(link_tuple->neighborIfaceAddr); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1691 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1692 |
std::vector<Ipv4Address> interfaces = |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1693 |
m_state.FindNeighborInterfaces (link_tuple->neighborIfaceAddr); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1694 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1695 |
linkMessage.neighborInterfaceAddresses.insert |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1696 |
(linkMessage.neighborInterfaceAddresses.end (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1697 |
interfaces.begin (), interfaces.end ()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1698 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1699 |
linkMessages.push_back (linkMessage); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1700 |
} |
1804
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
1701 |
NS_LOG_DEBUG ("OLSR HELLO message size: " << int (msg.GetSerializedSize ()) |
9c11e776f501
bug 96: debug.h duplicates functionality from log.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1803
diff
changeset
|
1702 |
<< " (with " << int (linkMessages.size ()) << " link messages)"); |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1703 |
QueueMessage (msg, JITTER); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1704 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1705 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1706 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1707 |
/// \brief Creates a new %OLSR TC message which is buffered for being sent later on. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1708 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1709 |
void |
4364 | 1710 |
RoutingProtocol::SendTc () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1711 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1712 |
NS_LOG_FUNCTION (this); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1713 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1714 |
olsr::MessageHeader msg; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1715 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1716 |
msg.SetVTime (OLSR_TOP_HOLD_TIME); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1717 |
msg.SetOriginatorAddress (m_mainAddress); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1718 |
msg.SetTimeToLive (255); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1719 |
msg.SetHopCount (0); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1720 |
msg.SetMessageSequenceNumber (GetMessageSequenceNumber ()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1721 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1722 |
olsr::MessageHeader::Tc &tc = msg.GetTc (); |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1723 |
tc.ansn = m_ansn; |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1724 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1725 |
for (MprSelectorSet::const_iterator mprsel_tuple = m_state.GetMprSelectors ().begin(); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1726 |
mprsel_tuple != m_state.GetMprSelectors ().end(); mprsel_tuple++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1727 |
{ |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1728 |
tc.neighborAddresses.push_back (mprsel_tuple->mainAddr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1729 |
} |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1730 |
QueueMessage (msg, JITTER); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1731 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1732 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1733 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1734 |
/// \brief Creates a new %OLSR MID message which is buffered for being sent later on. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1735 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1736 |
void |
4364 | 1737 |
RoutingProtocol::SendMid () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1738 |
{ |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1739 |
olsr::MessageHeader msg; |
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1740 |
olsr::MessageHeader::Mid &mid = msg.GetMid (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1741 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1742 |
// A node which has only a single interface address participating in |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1743 |
// the MANET (i.e., running OLSR), MUST NOT generate any MID |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1744 |
// message. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1745 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1746 |
// A node with several interfaces, where only one is participating |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1747 |
// in the MANET and running OLSR (e.g., a node is connected to a |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1748 |
// wired network as well as to a MANET) MUST NOT generate any MID |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1749 |
// messages. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1750 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1751 |
// A node with several interfaces, where more than one is |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1752 |
// participating in the MANET and running OLSR MUST generate MID |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1753 |
// messages as specified. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1754 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1755 |
// [ Note: assuming here that all interfaces participate in the |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1756 |
// MANET; later we may want to make this configurable. ] |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1757 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1758 |
Ipv4Address loopback ("127.0.0.1"); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1759 |
for (uint32_t i = 0; i < m_ipv4->GetNInterfaces (); i++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1760 |
{ |
4375
db81fdcb06e7
Implementation cut over to use Ipv4InterfaceAddress
Tom Henderson <tomh@tomh.org>
parents:
4218
diff
changeset
|
1761 |
Ipv4Address addr = m_ipv4->GetAddress (i, 0).GetLocal (); |
6142
c5b36fbaa9c8
Bug 407 postfix: filter out non-OLSR interfaces when generating MID messages
Lalith Suresh <suresh.lalith@gmail.com>
parents:
6140
diff
changeset
|
1762 |
if (addr != m_mainAddress && addr != loopback && m_interfaceExclusions.find (i) == m_interfaceExclusions.end ()) |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1763 |
mid.interfaceAddresses.push_back (addr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1764 |
} |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1765 |
if (mid.interfaceAddresses.size () == 0) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1766 |
return; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1767 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1768 |
msg.SetVTime (OLSR_MID_HOLD_TIME); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1769 |
msg.SetOriginatorAddress (m_mainAddress); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1770 |
msg.SetTimeToLive (255); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1771 |
msg.SetHopCount (0); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1772 |
msg.SetMessageSequenceNumber (GetMessageSequenceNumber ()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1773 |
|
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1774 |
QueueMessage (msg, JITTER); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1775 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1776 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1777 |
/// |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1778 |
/// \brief Creates a new %OLSR HNA message which is buffered for being sent later on. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1779 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1780 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1781 |
RoutingProtocol::SendHna () |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1782 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1783 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1784 |
olsr::MessageHeader msg; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1785 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1786 |
msg.SetVTime (OLSR_HNA_HOLD_TIME); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1787 |
msg.SetOriginatorAddress (m_mainAddress); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1788 |
msg.SetTimeToLive (255); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1789 |
msg.SetHopCount (0); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1790 |
msg.SetMessageSequenceNumber (GetMessageSequenceNumber ()); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1791 |
olsr::MessageHeader::Hna &hna = msg.GetHna (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1792 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1793 |
std::vector<olsr::MessageHeader::Hna::Association> |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1794 |
&associations = hna.associations; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1795 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1796 |
if (m_routingTableAssociation != 0) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1797 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1798 |
// Add (NetworkAddr, Netmask) entries from Associated Routing Table to HNA message. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1799 |
for (uint32_t i = 0; i < m_routingTableAssociation->GetNRoutes (); i++) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1800 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1801 |
Ipv4RoutingTableEntry route = m_routingTableAssociation->GetRoute (i); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1802 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1803 |
std::set<uint32_t>::const_iterator ci = m_interfaceExclusions.find (route.GetInterface ()); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1804 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1805 |
if (ci != m_interfaceExclusions.end ()) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1806 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1807 |
olsr::MessageHeader::Hna::Association assoc = {route.GetDestNetwork (), route.GetDestNetworkMask ()}; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1808 |
associations.push_back(assoc); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1809 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1810 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1811 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1812 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1813 |
int size = associations.size (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1814 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1815 |
// Add (NetworkAddr, Netmask) entries specified using AddHostNetworkAssociation () to HNA message. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1816 |
for (Associations::const_iterator it = m_state.GetAssociations ().begin (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1817 |
it != m_state.GetAssociations ().end (); it++) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1818 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1819 |
// Check if the entry has already been added from the Associated Routing Table |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1820 |
std::vector<olsr::MessageHeader::Hna::Association>::const_iterator ci = associations.begin (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1821 |
bool found = false; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1822 |
for (int i = 0; i < size; i++) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1823 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1824 |
if (it->networkAddr == ci->address && it->netmask == ci->mask) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1825 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1826 |
found = true; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1827 |
break; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1828 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1829 |
ci++; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1830 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1831 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1832 |
if(!found) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1833 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1834 |
olsr::MessageHeader::Hna::Association assoc = {it->networkAddr,it->netmask}; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1835 |
associations.push_back(assoc); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1836 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1837 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1838 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1839 |
if(associations.size () == 0) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1840 |
return; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1841 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1842 |
QueueMessage (msg, JITTER); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1843 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1844 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1845 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1846 |
/// \brief Injects a (networkAddr, netmask) tuple for which the node |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1847 |
/// can generate an HNA message for |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1848 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1849 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1850 |
RoutingProtocol::AddHostNetworkAssociation (Ipv4Address networkAddr, Ipv4Mask netmask) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1851 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1852 |
m_state.InsertAssociation ((Association) {networkAddr, netmask}); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1853 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1854 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1855 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1856 |
/// \brief Adds an Ipv4StaticRouting protocol Association |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1857 |
/// can generate an HNA message for |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1858 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1859 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1860 |
RoutingProtocol::SetRoutingTableAssociation (Ptr<Ipv4StaticRouting> routingTable) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1861 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1862 |
m_routingTableAssociation = routingTable; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1863 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1864 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
1865 |
/// |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1866 |
/// \brief Updates Link Set according to a new received HELLO message (following RFC 3626 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1867 |
/// specification). Neighbor Set is also updated if needed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1868 |
void |
4364 | 1869 |
RoutingProtocol::LinkSensing (const olsr::MessageHeader &msg, |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1870 |
const olsr::MessageHeader::Hello &hello, |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1871 |
const Ipv4Address &receiverIface, |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1872 |
const Ipv4Address &senderIface) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1873 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1874 |
Time now = Simulator::Now (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1875 |
bool updated = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1876 |
bool created = false; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1877 |
NS_LOG_DEBUG ("@" << now.GetSeconds () << ": Olsr node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1878 |
<< ": LinkSensing(receiverIface=" << receiverIface |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1879 |
<< ", senderIface=" << senderIface << ") BEGIN"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1880 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1881 |
NS_ASSERT (msg.GetVTime () > Seconds (0)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1882 |
LinkTuple *link_tuple = m_state.FindLinkTuple (senderIface); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1883 |
if (link_tuple == NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1884 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1885 |
LinkTuple newLinkTuple; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1886 |
// We have to create a new tuple |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1887 |
newLinkTuple.neighborIfaceAddr = senderIface; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1888 |
newLinkTuple.localIfaceAddr = receiverIface; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1889 |
newLinkTuple.symTime = now - Seconds (1); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1890 |
newLinkTuple.time = now + msg.GetVTime (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1891 |
link_tuple = &m_state.InsertLinkTuple (newLinkTuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1892 |
created = true; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1893 |
NS_LOG_LOGIC ("Existing link tuple did not exist => creating new one"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1894 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1895 |
else |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1896 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1897 |
NS_LOG_LOGIC ("Existing link tuple already exists => will update it"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1898 |
updated = true; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1899 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1900 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1901 |
link_tuple->asymTime = now + msg.GetVTime (); |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
1902 |
for (std::vector<olsr::MessageHeader::Hello::LinkMessage>::const_iterator linkMessage = |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1903 |
hello.linkMessages.begin (); |
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
1904 |
linkMessage != hello.linkMessages.end (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1905 |
linkMessage++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1906 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1907 |
int lt = linkMessage->linkCode & 0x03; // Link Type |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1908 |
int nt = (linkMessage->linkCode >> 2) & 0x03; // Neighbor Type |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1909 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1910 |
#ifdef NS3_LOG_ENABLE |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1911 |
const char *linkTypeName; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1912 |
switch (lt) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1913 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1914 |
case OLSR_UNSPEC_LINK: linkTypeName = "UNSPEC_LINK"; break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1915 |
case OLSR_ASYM_LINK: linkTypeName = "ASYM_LINK"; break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1916 |
case OLSR_SYM_LINK: linkTypeName = "SYM_LINK"; break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1917 |
case OLSR_LOST_LINK: linkTypeName = "LOST_LINK"; break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1918 |
default: linkTypeName = "(invalid value!)"; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1919 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1920 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1921 |
const char *neighborTypeName; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1922 |
switch (nt) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1923 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1924 |
case OLSR_NOT_NEIGH: neighborTypeName = "NOT_NEIGH"; break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1925 |
case OLSR_SYM_NEIGH: neighborTypeName = "SYM_NEIGH"; break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1926 |
case OLSR_MPR_NEIGH: neighborTypeName = "MPR_NEIGH"; break; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1927 |
default: neighborTypeName = "(invalid value!)"; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1928 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1929 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1930 |
NS_LOG_DEBUG ("Looking at HELLO link messages with Link Type " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1931 |
<< lt << " (" << linkTypeName |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1932 |
<< ") and Neighbor Type " << nt |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1933 |
<< " (" << neighborTypeName << ")"); |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
1934 |
#endif // NS3_LOG_ENABLE |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1935 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1936 |
// We must not process invalid advertised links |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1937 |
if ((lt == OLSR_SYM_LINK && nt == OLSR_NOT_NEIGH) || |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1938 |
(nt != OLSR_SYM_NEIGH && nt != OLSR_MPR_NEIGH |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1939 |
&& nt != OLSR_NOT_NEIGH)) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1940 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1941 |
NS_LOG_LOGIC ("HELLO link code is invalid => IGNORING"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1942 |
continue; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1943 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1944 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1945 |
for (std::vector<Ipv4Address>::const_iterator neighIfaceAddr = |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1946 |
linkMessage->neighborInterfaceAddresses.begin (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1947 |
neighIfaceAddr != linkMessage->neighborInterfaceAddresses.end (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1948 |
neighIfaceAddr++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1949 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1950 |
NS_LOG_DEBUG (" -> Neighbor: " << *neighIfaceAddr); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1951 |
if (*neighIfaceAddr == receiverIface) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1952 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1953 |
if (lt == OLSR_LOST_LINK) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1954 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1955 |
NS_LOG_LOGIC ("link is LOST => expiring it"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1956 |
link_tuple->symTime = now - Seconds (1); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1957 |
updated = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1958 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1959 |
else if (lt == OLSR_SYM_LINK || lt == OLSR_ASYM_LINK) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1960 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1961 |
NS_LOG_DEBUG (*link_tuple << ": link is SYM or ASYM => should become SYM now" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1962 |
" (symTime being increased to " << now + msg.GetVTime ()); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1963 |
link_tuple->symTime = now + msg.GetVTime (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1964 |
link_tuple->time = link_tuple->symTime + OLSR_NEIGHB_HOLD_TIME; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1965 |
updated = true; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1966 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1967 |
else |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1968 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1969 |
NS_FATAL_ERROR ("bad link type"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1970 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1971 |
break; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1972 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1973 |
else |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1974 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1975 |
NS_LOG_DEBUG (" \\-> *neighIfaceAddr (" << *neighIfaceAddr |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1976 |
<< " != receiverIface (" << receiverIface << ") => IGNORING!"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1977 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1978 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1979 |
NS_LOG_DEBUG ("Link tuple updated: " << int (updated)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1980 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1981 |
link_tuple->time = std::max(link_tuple->time, link_tuple->asymTime); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1982 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1983 |
if (updated) |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1984 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
1985 |
LinkTupleUpdated (*link_tuple, hello.willingness); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1986 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1987 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1988 |
// Schedules link tuple deletion |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1989 |
if (created && link_tuple != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1990 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1991 |
LinkTupleAdded (*link_tuple, hello.willingness); |
1768
1664a9db93b9
Make EventGarbageCollector private to the olsr module; adapt olsr to Timer API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1765
diff
changeset
|
1992 |
m_events.Track (Simulator::Schedule (DELAY (std::min (link_tuple->time, link_tuple->symTime)), |
4364 | 1993 |
&RoutingProtocol::LinkTupleTimerExpire, this, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
1994 |
link_tuple->neighborIfaceAddr)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1995 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1996 |
NS_LOG_DEBUG ("@" << now.GetSeconds () << ": Olsr node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
1997 |
<< ": LinkSensing END"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1998 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
1999 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2000 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2001 |
/// \brief Updates the Neighbor Set according to the information contained in a new received |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2002 |
/// HELLO message (following RFC 3626). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2003 |
void |
4364 | 2004 |
RoutingProtocol::PopulateNeighborSet (const olsr::MessageHeader &msg, |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2005 |
const olsr::MessageHeader::Hello &hello) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2006 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2007 |
NeighborTuple *nb_tuple = m_state.FindNeighborTuple (msg.GetOriginatorAddress ()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2008 |
if (nb_tuple != NULL) |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2009 |
{ |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2010 |
nb_tuple->willingness = hello.willingness; |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2011 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2012 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2013 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2014 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2015 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2016 |
/// \brief Updates the 2-hop Neighbor Set according to the information contained in a new |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2017 |
/// received HELLO message (following RFC 3626). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2018 |
void |
4364 | 2019 |
RoutingProtocol::PopulateTwoHopNeighborSet (const olsr::MessageHeader &msg, |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2020 |
const olsr::MessageHeader::Hello &hello) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2021 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2022 |
Time now = Simulator::Now (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2023 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2024 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress << ": PopulateTwoHopNeighborSet BEGIN"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2025 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2026 |
for (LinkSet::const_iterator link_tuple = m_state.GetLinks ().begin (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2027 |
link_tuple != m_state.GetLinks ().end (); link_tuple++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2028 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2029 |
NS_LOG_LOGIC ("Looking at link tuple: " << *link_tuple); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2030 |
if (GetMainAddress (link_tuple->neighborIfaceAddr) != msg.GetOriginatorAddress ()) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2031 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2032 |
NS_LOG_LOGIC ("Link tuple ignored: " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2033 |
"GetMainAddress (link_tuple->neighborIfaceAddr) != msg.GetOriginatorAddress ()"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2034 |
NS_LOG_LOGIC ("(GetMainAddress(" << link_tuple->neighborIfaceAddr << "): " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2035 |
<< GetMainAddress (link_tuple->neighborIfaceAddr) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2036 |
<< "; msg.GetOriginatorAddress (): " << msg.GetOriginatorAddress ()); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2037 |
continue; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2038 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2039 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2040 |
if (link_tuple->symTime < now) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2041 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2042 |
NS_LOG_LOGIC ("Link tuple ignored: expired."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2043 |
continue; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2044 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2045 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2046 |
typedef std::vector<olsr::MessageHeader::Hello::LinkMessage> LinkMessageVec; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2047 |
for (LinkMessageVec::const_iterator linkMessage = hello.linkMessages.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2048 |
linkMessage != hello.linkMessages.end (); linkMessage++) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2049 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2050 |
int neighborType = (linkMessage->linkCode >> 2) & 0x3; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2051 |
#ifdef NS3_LOG_ENABLE |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2052 |
const char *neighborTypeNames[3] = { "NOT_NEIGH", "SYM_NEIGH", "MPR_NEIGH" }; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2053 |
const char *neighborTypeName = ((neighborType < 3)? |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2054 |
neighborTypeNames[neighborType] |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2055 |
: "(invalid value)"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2056 |
NS_LOG_DEBUG ("Looking at Link Message from HELLO message: neighborType=" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2057 |
<< neighborType << " (" << neighborTypeName << ")"); |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2058 |
#endif // NS3_LOG_ENABLE |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2059 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2060 |
for (std::vector<Ipv4Address>::const_iterator nb2hop_addr_iter = |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2061 |
linkMessage->neighborInterfaceAddresses.begin (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2062 |
nb2hop_addr_iter != linkMessage->neighborInterfaceAddresses.end (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2063 |
nb2hop_addr_iter++) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2064 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2065 |
Ipv4Address nb2hop_addr = GetMainAddress (*nb2hop_addr_iter); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2066 |
NS_LOG_DEBUG ("Looking at 2-hop neighbor address from HELLO message: " |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2067 |
<< *nb2hop_addr_iter |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2068 |
<< " (main address is " << nb2hop_addr << ")"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2069 |
if (neighborType == OLSR_SYM_NEIGH || neighborType == OLSR_MPR_NEIGH) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2070 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2071 |
// If the main address of the 2-hop neighbor address == main address |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2072 |
// of the receiving node, silently discard the 2-hop |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2073 |
// neighbor address. |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2074 |
if (nb2hop_addr == m_routingAgentAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2075 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2076 |
NS_LOG_LOGIC ("Ignoring 2-hop neighbor (it is the node itself)"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2077 |
continue; |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2078 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2079 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2080 |
// Otherwise, a 2-hop tuple is created |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2081 |
TwoHopNeighborTuple *nb2hop_tuple = |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2082 |
m_state.FindTwoHopNeighborTuple (msg.GetOriginatorAddress (), nb2hop_addr); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2083 |
NS_LOG_LOGIC ("Adding the 2-hop neighbor" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2084 |
<< (nb2hop_tuple? " (refreshing existing entry)" : "")); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2085 |
if (nb2hop_tuple == NULL) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2086 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2087 |
TwoHopNeighborTuple new_nb2hop_tuple; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2088 |
new_nb2hop_tuple.neighborMainAddr = msg.GetOriginatorAddress (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2089 |
new_nb2hop_tuple.twoHopNeighborAddr = nb2hop_addr; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2090 |
new_nb2hop_tuple.expirationTime = now + msg.GetVTime (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2091 |
AddTwoHopNeighborTuple (new_nb2hop_tuple); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2092 |
// Schedules nb2hop tuple deletion |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2093 |
m_events.Track (Simulator::Schedule (DELAY (new_nb2hop_tuple.expirationTime), |
4364 | 2094 |
&RoutingProtocol::Nb2hopTupleTimerExpire, this, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2095 |
new_nb2hop_tuple.neighborMainAddr, |
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2096 |
new_nb2hop_tuple.twoHopNeighborAddr)); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2097 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2098 |
else |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2099 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2100 |
nb2hop_tuple->expirationTime = now + msg.GetVTime (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2101 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2102 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2103 |
else if (neighborType == OLSR_NOT_NEIGH) |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2104 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2105 |
// For each 2-hop node listed in the HELLO message |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2106 |
// with Neighbor Type equal to NOT_NEIGH all 2-hop |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2107 |
// tuples where: N_neighbor_main_addr == Originator |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2108 |
// Address AND N_2hop_addr == main address of the |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2109 |
// 2-hop neighbor are deleted. |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2110 |
NS_LOG_LOGIC ("2-hop neighbor is NOT_NEIGH => deleting matching 2-hop neighbor state"); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2111 |
m_state.EraseTwoHopNeighborTuples (msg.GetOriginatorAddress (), nb2hop_addr); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2112 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2113 |
else |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2114 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2115 |
NS_LOG_LOGIC ("*** WARNING *** Ignoring link message (inside HELLO) with bad" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2116 |
" neighbor type value: " << neighborType); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2117 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2118 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2119 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2120 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2121 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2122 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress << ": PopulateTwoHopNeighborSet END"); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2123 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2124 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2125 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2126 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2127 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2128 |
/// \brief Updates the MPR Selector Set according to the information contained in a new |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2129 |
/// received HELLO message (following RFC 3626). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2130 |
void |
4364 | 2131 |
RoutingProtocol::PopulateMprSelectorSet (const olsr::MessageHeader &msg, |
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
2132 |
const olsr::MessageHeader::Hello &hello) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2133 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2134 |
NS_LOG_FUNCTION (this); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2135 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2136 |
Time now = Simulator::Now (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2137 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
2138 |
typedef std::vector<olsr::MessageHeader::Hello::LinkMessage> LinkMessageVec; |
1755
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
2139 |
for (LinkMessageVec::const_iterator linkMessage = hello.linkMessages.begin (); |
262febe2f1c9
Make the OLSR headers usable from the AciiTracing point of view
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1752
diff
changeset
|
2140 |
linkMessage != hello.linkMessages.end (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2141 |
linkMessage++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2142 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2143 |
int nt = linkMessage->linkCode >> 2; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2144 |
if (nt == OLSR_MPR_NEIGH) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2145 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2146 |
NS_LOG_DEBUG ("Processing a link message with neighbor type MPR_NEIGH"); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2147 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2148 |
for (std::vector<Ipv4Address>::const_iterator nb_iface_addr = |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2149 |
linkMessage->neighborInterfaceAddresses.begin (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2150 |
nb_iface_addr != linkMessage->neighborInterfaceAddresses.end (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2151 |
nb_iface_addr++) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2152 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2153 |
if (GetMainAddress (*nb_iface_addr) == m_mainAddress) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2154 |
{ |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2155 |
NS_LOG_DEBUG ("Adding entry to mpr selector set for neighbor " << *nb_iface_addr); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2156 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2157 |
// We must create a new entry into the mpr selector set |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2158 |
MprSelectorTuple *existing_mprsel_tuple = |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2159 |
m_state.FindMprSelectorTuple (msg.GetOriginatorAddress ()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2160 |
if (existing_mprsel_tuple == NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2161 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2162 |
MprSelectorTuple mprsel_tuple; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2163 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2164 |
mprsel_tuple.mainAddr = msg.GetOriginatorAddress (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2165 |
mprsel_tuple.expirationTime = now + msg.GetVTime (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2166 |
AddMprSelectorTuple (mprsel_tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2167 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2168 |
// Schedules mpr selector tuple deletion |
1768
1664a9db93b9
Make EventGarbageCollector private to the olsr module; adapt olsr to Timer API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1765
diff
changeset
|
2169 |
m_events.Track (Simulator::Schedule |
1664a9db93b9
Make EventGarbageCollector private to the olsr module; adapt olsr to Timer API changes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1765
diff
changeset
|
2170 |
(DELAY (mprsel_tuple.expirationTime), |
4364 | 2171 |
&RoutingProtocol::MprSelTupleTimerExpire, this, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2172 |
mprsel_tuple.mainAddr)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2173 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2174 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2175 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2176 |
existing_mprsel_tuple->expirationTime = now + msg.GetVTime (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2177 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2178 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2179 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2180 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2181 |
} |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2182 |
NS_LOG_DEBUG ("Computed MPR selector set for node " << m_mainAddress << ": " << m_state.PrintMprSelectorSet ()); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2183 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2184 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2185 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2186 |
#if 0 |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2187 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2188 |
/// \brief Drops a given packet because it couldn't be delivered to the corresponding |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2189 |
/// destination by the MAC layer. This may cause a neighbor loss, and appropiate |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2190 |
/// actions are then taken. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2191 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2192 |
/// \param p the packet which couldn't be delivered by the MAC layer. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2193 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2194 |
void |
1868
06027fd6a68c
olsr gets new packet
Craig Dowell <craigdo@ee.washington.edu>
parents:
1803
diff
changeset
|
2195 |
OLSR::mac_failed(Ptr<Packet> p) { |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2196 |
double now = Simulator::Now (); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2197 |
struct hdr_ip* ih = HDR_IP(p); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2198 |
struct hdr_cmn* ch = HDR_CMN(p); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2199 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2200 |
debug("%f: Node %d MAC Layer detects a breakage on link to %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2201 |
now, |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2202 |
OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2203 |
OLSR::node_id(ch->next_hop())); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2204 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2205 |
if ((u_int32_t)ih->daddr() == IP_BROADCAST) { |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2206 |
drop(p, DROP_RTR_MAC_CALLBACK); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2207 |
return; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2208 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2209 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2210 |
OLSR_link_tuple* link_tuple = state_.find_link_tuple(ch->next_hop()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2211 |
if (link_tuple != NULL) { |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2212 |
link_tuple->lost_time() = now + OLSR_NEIGHB_HOLD_TIME; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2213 |
link_tuple->time() = now + OLSR_NEIGHB_HOLD_TIME; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2214 |
nb_loss(link_tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2215 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2216 |
drop(p, DROP_RTR_MAC_CALLBACK); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2217 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2218 |
#endif |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2219 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2220 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2221 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2222 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2223 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2224 |
/// \brief Performs all actions needed when a neighbor loss occurs. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2225 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2226 |
/// Neighbor Set, 2-hop Neighbor Set, MPR Set and MPR Selector Set are updated. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2227 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2228 |
/// \param tuple link tuple with the information of the link to the neighbor which has been lost. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2229 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2230 |
void |
4364 | 2231 |
RoutingProtocol::NeighborLoss (const LinkTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2232 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2233 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2234 |
<< "s: OLSR Node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2235 |
<< " LinkTuple " << tuple.neighborIfaceAddr << " -> neighbor loss."); |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2236 |
LinkTupleUpdated (tuple, OLSR_WILL_DEFAULT); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2237 |
m_state.EraseTwoHopNeighborTuples (GetMainAddress (tuple.neighborIfaceAddr)); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2238 |
m_state.EraseMprSelectorTuples (GetMainAddress (tuple.neighborIfaceAddr)); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2239 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2240 |
MprComputation (); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2241 |
RoutingTableComputation (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2242 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2243 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2244 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2245 |
/// \brief Adds a duplicate tuple to the Duplicate Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2246 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2247 |
/// \param tuple the duplicate tuple to be added. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2248 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2249 |
void |
4364 | 2250 |
RoutingProtocol::AddDuplicateTuple (const DuplicateTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2251 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2252 |
/*debug("%f: Node %d adds dup tuple: addr = %d seq_num = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2253 |
Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2254 |
OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2255 |
OLSR::node_id(tuple->addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2256 |
tuple->seq_num());*/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2257 |
m_state.InsertDuplicateTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2258 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2259 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2260 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2261 |
/// \brief Removes a duplicate tuple from the Duplicate Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2262 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2263 |
/// \param tuple the duplicate tuple to be removed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2264 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2265 |
void |
4364 | 2266 |
RoutingProtocol::RemoveDuplicateTuple (const DuplicateTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2267 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2268 |
/*debug("%f: Node %d removes dup tuple: addr = %d seq_num = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2269 |
Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2270 |
OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2271 |
OLSR::node_id(tuple->addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2272 |
tuple->seq_num());*/ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2273 |
m_state.EraseDuplicateTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2274 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2275 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2276 |
void |
4364 | 2277 |
RoutingProtocol::LinkTupleAdded (const LinkTuple &tuple, uint8_t willingness) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2278 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2279 |
// Creates associated neighbor tuple |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2280 |
NeighborTuple nb_tuple; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2281 |
nb_tuple.neighborMainAddr = GetMainAddress (tuple.neighborIfaceAddr); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2282 |
nb_tuple.willingness = willingness; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2283 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2284 |
if (tuple.symTime >= Simulator::Now ()) |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2285 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2286 |
nb_tuple.status = NeighborTuple::STATUS_SYM; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2287 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2288 |
else |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2289 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2290 |
nb_tuple.status = NeighborTuple::STATUS_NOT_SYM; |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2291 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2292 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2293 |
AddNeighborTuple (nb_tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2294 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2295 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2296 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2297 |
/// \brief Removes a link tuple from the Link Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2298 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2299 |
/// \param tuple the link tuple to be removed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2300 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2301 |
void |
4364 | 2302 |
RoutingProtocol::RemoveLinkTuple (const LinkTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2303 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2304 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2305 |
<< "s: OLSR Node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2306 |
<< " LinkTuple " << tuple << " REMOVED."); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2307 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2308 |
m_state.EraseLinkTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2309 |
m_state.EraseNeighborTuple (GetMainAddress (tuple.neighborIfaceAddr)); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2310 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2311 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2312 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2313 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2314 |
/// \brief This function is invoked when a link tuple is updated. Its aim is to |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2315 |
/// also update the corresponding neighbor tuple if it is needed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2316 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2317 |
/// \param tuple the link tuple which has been updated. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2318 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2319 |
void |
4364 | 2320 |
RoutingProtocol::LinkTupleUpdated (const LinkTuple &tuple, uint8_t willingness) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2321 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2322 |
// Each time a link tuple changes, the associated neighbor tuple must be recomputed |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2323 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2324 |
NS_LOG_DEBUG (Simulator::Now ().GetSeconds () |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2325 |
<< "s: OLSR Node " << m_mainAddress |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2326 |
<< " LinkTuple " << tuple << " UPDATED."); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2327 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2328 |
NeighborTuple *nb_tuple = |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2329 |
m_state.FindNeighborTuple (GetMainAddress (tuple.neighborIfaceAddr)); |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2330 |
|
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2331 |
if (nb_tuple == NULL) |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2332 |
{ |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2333 |
LinkTupleAdded (tuple, willingness); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2334 |
nb_tuple = m_state.FindNeighborTuple (GetMainAddress (tuple.neighborIfaceAddr)); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2335 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2336 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2337 |
if (nb_tuple != NULL) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2338 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2339 |
#ifdef NS3_LOG_ENABLE |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2340 |
int statusBefore = nb_tuple->status; |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2341 |
#endif // NS3_LOG_ENABLE |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2342 |
if (tuple.symTime >= Simulator::Now ()) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2343 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2344 |
nb_tuple->status = NeighborTuple::STATUS_SYM; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2345 |
NS_LOG_DEBUG (*nb_tuple << "->status = STATUS_SYM; changed:" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2346 |
<< int (statusBefore != nb_tuple->status)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2347 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2348 |
else |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2349 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2350 |
nb_tuple->status = NeighborTuple::STATUS_NOT_SYM; |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2351 |
NS_LOG_DEBUG (*nb_tuple << "->status = STATUS_NOT_SYM; changed:" |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2352 |
<< int (statusBefore != nb_tuple->status)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2353 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2354 |
} |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2355 |
else |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2356 |
{ |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2357 |
NS_LOG_WARN ("ERROR! Wanted to update a NeighborTuple but none was found!"); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2358 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2359 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2360 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2361 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2362 |
/// \brief Adds a neighbor tuple to the Neighbor Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2363 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2364 |
/// \param tuple the neighbor tuple to be added. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2365 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2366 |
void |
4364 | 2367 |
RoutingProtocol::AddNeighborTuple (const NeighborTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2368 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2369 |
// debug("%f: Node %d adds neighbor tuple: nb_addr = %d status = %s\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2370 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2371 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2372 |
// OLSR::node_id(tuple->neighborMainAddr), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2373 |
// ((tuple->status() == OLSR_STATUS_SYM) ? "sym" : "not_sym")); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2374 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2375 |
m_state.InsertNeighborTuple (tuple); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2376 |
IncrementAnsn (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2377 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2378 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2379 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2380 |
/// \brief Removes a neighbor tuple from the Neighbor Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2381 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2382 |
/// \param tuple the neighbor tuple to be removed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2383 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2384 |
void |
4364 | 2385 |
RoutingProtocol::RemoveNeighborTuple (const NeighborTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2386 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2387 |
// debug("%f: Node %d removes neighbor tuple: nb_addr = %d status = %s\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2388 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2389 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2390 |
// OLSR::node_id(tuple->neighborMainAddr), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2391 |
// ((tuple->status() == OLSR_STATUS_SYM) ? "sym" : "not_sym")); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2392 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2393 |
m_state.EraseNeighborTuple (tuple); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2394 |
IncrementAnsn (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2395 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2396 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2397 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2398 |
/// \brief Adds a 2-hop neighbor tuple to the 2-hop Neighbor Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2399 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2400 |
/// \param tuple the 2-hop neighbor tuple to be added. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2401 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2402 |
void |
4364 | 2403 |
RoutingProtocol::AddTwoHopNeighborTuple (const TwoHopNeighborTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2404 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2405 |
// debug("%f: Node %d adds 2-hop neighbor tuple: nb_addr = %d nb2hop_addr = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2406 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2407 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2408 |
// OLSR::node_id(tuple->neighborMainAddr), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2409 |
// OLSR::node_id(tuple->twoHopNeighborAddr)); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2410 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2411 |
m_state.InsertTwoHopNeighborTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2412 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2413 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2414 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2415 |
/// \brief Removes a 2-hop neighbor tuple from the 2-hop Neighbor Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2416 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2417 |
/// \param tuple the 2-hop neighbor tuple to be removed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2418 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2419 |
void |
4364 | 2420 |
RoutingProtocol::RemoveTwoHopNeighborTuple (const TwoHopNeighborTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2421 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2422 |
// debug("%f: Node %d removes 2-hop neighbor tuple: nb_addr = %d nb2hop_addr = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2423 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2424 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2425 |
// OLSR::node_id(tuple->neighborMainAddr), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2426 |
// OLSR::node_id(tuple->twoHopNeighborAddr)); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2427 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2428 |
m_state.EraseTwoHopNeighborTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2429 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2430 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2431 |
void |
4364 | 2432 |
RoutingProtocol::IncrementAnsn () |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2433 |
{ |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2434 |
m_ansn = (m_ansn + 1) % (OLSR_MAX_SEQ_NUM + 1); |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2435 |
} |
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2436 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2437 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2438 |
/// \brief Adds an MPR selector tuple to the MPR Selector Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2439 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2440 |
/// Advertised Neighbor Sequence Number (ANSN) is also updated. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2441 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2442 |
/// \param tuple the MPR selector tuple to be added. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2443 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2444 |
void |
4364 | 2445 |
RoutingProtocol::AddMprSelectorTuple (const MprSelectorTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2446 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2447 |
// debug("%f: Node %d adds MPR selector tuple: nb_addr = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2448 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2449 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2450 |
// OLSR::node_id(tuple->main_addr())); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2451 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2452 |
m_state.InsertMprSelectorTuple (tuple); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2453 |
IncrementAnsn (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2454 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2455 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2456 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2457 |
/// \brief Removes an MPR selector tuple from the MPR Selector Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2458 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2459 |
/// Advertised Neighbor Sequence Number (ANSN) is also updated. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2460 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2461 |
/// \param tuple the MPR selector tuple to be removed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2462 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2463 |
void |
4364 | 2464 |
RoutingProtocol::RemoveMprSelectorTuple (const MprSelectorTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2465 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2466 |
// debug("%f: Node %d removes MPR selector tuple: nb_addr = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2467 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2468 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2469 |
// OLSR::node_id(tuple->main_addr())); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2470 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2471 |
m_state.EraseMprSelectorTuple (tuple); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2472 |
IncrementAnsn (); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2473 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2474 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2475 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2476 |
/// \brief Adds a topology tuple to the Topology Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2477 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2478 |
/// \param tuple the topology tuple to be added. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2479 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2480 |
void |
4364 | 2481 |
RoutingProtocol::AddTopologyTuple (const TopologyTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2482 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2483 |
// debug("%f: Node %d adds topology tuple: dest_addr = %d last_addr = %d seq = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2484 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2485 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2486 |
// OLSR::node_id(tuple->dest_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2487 |
// OLSR::node_id(tuple->last_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2488 |
// tuple->seq()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2489 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2490 |
m_state.InsertTopologyTuple(tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2491 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2492 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2493 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2494 |
/// \brief Removes a topology tuple from the Topology Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2495 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2496 |
/// \param tuple the topology tuple to be removed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2497 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2498 |
void |
4364 | 2499 |
RoutingProtocol::RemoveTopologyTuple (const TopologyTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2500 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2501 |
// debug("%f: Node %d removes topology tuple: dest_addr = %d last_addr = %d seq = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2502 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2503 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2504 |
// OLSR::node_id(tuple->dest_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2505 |
// OLSR::node_id(tuple->last_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2506 |
// tuple->seq()); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2507 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2508 |
m_state.EraseTopologyTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2509 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2510 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2511 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2512 |
/// \brief Adds an interface association tuple to the Interface Association Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2513 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2514 |
/// \param tuple the interface association tuple to be added. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2515 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2516 |
void |
4364 | 2517 |
RoutingProtocol::AddIfaceAssocTuple (const IfaceAssocTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2518 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2519 |
// debug("%f: Node %d adds iface association tuple: main_addr = %d iface_addr = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2520 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2521 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2522 |
// OLSR::node_id(tuple->main_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2523 |
// OLSR::node_id(tuple->iface_addr())); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2524 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2525 |
m_state.InsertIfaceAssocTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2526 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2527 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2528 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2529 |
/// \brief Removes an interface association tuple from the Interface Association Set. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2530 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2531 |
/// \param tuple the interface association tuple to be removed. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2532 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2533 |
void |
4364 | 2534 |
RoutingProtocol::RemoveIfaceAssocTuple (const IfaceAssocTuple &tuple) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2535 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2536 |
// debug("%f: Node %d removes iface association tuple: main_addr = %d iface_addr = %d\n", |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2537 |
// Simulator::Now (), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2538 |
// OLSR::node_id(ra_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2539 |
// OLSR::node_id(tuple->main_addr()), |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2540 |
// OLSR::node_id(tuple->iface_addr())); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2541 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2542 |
m_state.EraseIfaceAssocTuple (tuple); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2543 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2544 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2545 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2546 |
/// \brief Adds a host network association tuple to the Association Set. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2547 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2548 |
/// \param tuple the host network association tuple to be added. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2549 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2550 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2551 |
RoutingProtocol::AddAssociationTuple (const AssociationTuple &tuple) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2552 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2553 |
m_state.InsertAssociationTuple (tuple); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2554 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2555 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2556 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2557 |
/// \brief Removes a host network association tuple from the Association Set. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2558 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2559 |
/// \param tuple the host network association tuple to be removed. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2560 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2561 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2562 |
RoutingProtocol::RemoveAssociationTuple (const AssociationTuple &tuple) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2563 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2564 |
m_state.EraseAssociationTuple (tuple); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2565 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2566 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2567 |
|
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2568 |
|
4364 | 2569 |
uint16_t RoutingProtocol::GetPacketSequenceNumber () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2570 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2571 |
m_packetSequenceNumber = (m_packetSequenceNumber + 1) % (OLSR_MAX_SEQ_NUM + 1); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2572 |
return m_packetSequenceNumber; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2573 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2574 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2575 |
/// Increments message sequence number and returns the new value. |
4364 | 2576 |
uint16_t RoutingProtocol::GetMessageSequenceNumber () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2577 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2578 |
m_messageSequenceNumber = (m_messageSequenceNumber + 1) % (OLSR_MAX_SEQ_NUM + 1); |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2579 |
return m_messageSequenceNumber; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2580 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2581 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2582 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2583 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2584 |
/// \brief Sends a HELLO message and reschedules the HELLO timer. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2585 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2586 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2587 |
void |
4364 | 2588 |
RoutingProtocol::HelloTimerExpire () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2589 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2590 |
SendHello (); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2591 |
m_helloTimer.Schedule (m_helloInterval); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2592 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2593 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2594 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2595 |
/// \brief Sends a TC message (if there exists any MPR selector) and reschedules the TC timer. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2596 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2597 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2598 |
void |
4364 | 2599 |
RoutingProtocol::TcTimerExpire () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2600 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2601 |
if (m_state.GetMprSelectors ().size () > 0) |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2602 |
{ |
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2603 |
SendTc (); |
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2604 |
} |
3970
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2605 |
else |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2606 |
{ |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2607 |
NS_LOG_DEBUG ("Not sending any TC, no one selected me as MPR."); |
8658841e4782
Fix a couple of OLSR bugs (#415)
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3853
diff
changeset
|
2608 |
} |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2609 |
m_tcTimer.Schedule (m_tcInterval); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2610 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2611 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2612 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2613 |
/// \brief Sends a MID message (if the node has more than one interface) and resets the MID timer. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2614 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2615 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2616 |
void |
4364 | 2617 |
RoutingProtocol::MidTimerExpire () |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2618 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2619 |
SendMid (); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2620 |
m_midTimer.Schedule (m_midInterval); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2621 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2622 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2623 |
/// |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2624 |
/// \brief Sends an HNA message (if the node has associated hosts/networks) and reschedules the HNA timer. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2625 |
/// \param e The event which has expired. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2626 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2627 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2628 |
RoutingProtocol::HnaTimerExpire () |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2629 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2630 |
if (m_state.GetAssociations ().size () > 0 || m_routingTableAssociation !=0) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2631 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2632 |
SendHna (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2633 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2634 |
else |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2635 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2636 |
NS_LOG_DEBUG ("Not sending any HNA, no associations to advertise."); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2637 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2638 |
m_hnaTimer.Schedule (m_hnaInterval); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2639 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2640 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2641 |
/// |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2642 |
/// \brief Removes tuple if expired. Else timer is rescheduled to expire at tuple.expirationTime. |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2643 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2644 |
/// The task of actually removing the tuple is left to the OLSR agent. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2645 |
/// |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2646 |
/// \param tuple The tuple which has expired. |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2647 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2648 |
void |
4364 | 2649 |
RoutingProtocol::DupTupleTimerExpire (Ipv4Address address, uint16_t sequenceNumber) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2650 |
{ |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2651 |
DuplicateTuple *tuple = |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2652 |
m_state.FindDuplicateTuple (address, sequenceNumber); |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2653 |
if (tuple == NULL) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2654 |
{ |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2655 |
return; |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2656 |
} |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2657 |
if (tuple->expirationTime < Simulator::Now ()) |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2658 |
{ |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2659 |
RemoveDuplicateTuple (*tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2660 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2661 |
else |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2662 |
{ |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2663 |
m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime), |
4364 | 2664 |
&RoutingProtocol::DupTupleTimerExpire, this, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2665 |
address, sequenceNumber)); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2666 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2667 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2668 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2669 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2670 |
/// \brief Removes tuple_ if expired. Else if symmetric time |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2671 |
/// has expired then it is assumed a neighbor loss and agent_->nb_loss() |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2672 |
/// is called. In this case the timer is rescheduled to expire at |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2673 |
/// tuple_->time(). Otherwise the timer is rescheduled to expire at |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2674 |
/// the minimum between tuple_->time() and tuple_->sym_time(). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2675 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2676 |
/// The task of actually removing the tuple is left to the OLSR agent. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2677 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2678 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2679 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2680 |
void |
4364 | 2681 |
RoutingProtocol::LinkTupleTimerExpire (Ipv4Address neighborIfaceAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2682 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2683 |
Time now = Simulator::Now (); |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2684 |
|
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2685 |
// the tuple parameter may be a stale copy; get a newer version from m_state |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2686 |
LinkTuple *tuple = m_state.FindLinkTuple (neighborIfaceAddr); |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2687 |
if (tuple == NULL) |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2688 |
{ |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2689 |
return; |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2690 |
} |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2691 |
if (tuple->time < now) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2692 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2693 |
RemoveLinkTuple (*tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2694 |
} |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2695 |
else if (tuple->symTime < now) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2696 |
{ |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2697 |
if (m_linkTupleTimerFirstTime) |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2698 |
m_linkTupleTimerFirstTime = false; |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2699 |
else |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2700 |
NeighborLoss (*tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2701 |
|
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2702 |
m_events.Track (Simulator::Schedule (DELAY (tuple->time), |
4364 | 2703 |
&RoutingProtocol::LinkTupleTimerExpire, this, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2704 |
neighborIfaceAddr)); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2705 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2706 |
else |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2707 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2708 |
m_events.Track (Simulator::Schedule (DELAY (std::min (tuple->time, tuple->symTime)), |
4364 | 2709 |
&RoutingProtocol::LinkTupleTimerExpire, this, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2710 |
neighborIfaceAddr)); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2711 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2712 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2713 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2714 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2715 |
/// \brief Removes tuple_ if expired. Else the timer is rescheduled to expire at tuple_->time(). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2716 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2717 |
/// The task of actually removing the tuple is left to the OLSR agent. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2718 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2719 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2720 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2721 |
void |
4364 | 2722 |
RoutingProtocol::Nb2hopTupleTimerExpire (Ipv4Address neighborMainAddr, Ipv4Address twoHopNeighborAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2723 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2724 |
TwoHopNeighborTuple *tuple; |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2725 |
tuple = m_state.FindTwoHopNeighborTuple (neighborMainAddr, twoHopNeighborAddr); |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2726 |
if (tuple == NULL) |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2727 |
{ |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2728 |
return; |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2729 |
} |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2730 |
if (tuple->expirationTime < Simulator::Now ()) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2731 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2732 |
RemoveTwoHopNeighborTuple (*tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2733 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2734 |
else |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2735 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2736 |
m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime), |
4364 | 2737 |
&RoutingProtocol::Nb2hopTupleTimerExpire, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2738 |
this, neighborMainAddr, twoHopNeighborAddr)); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2739 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2740 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2741 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2742 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2743 |
/// \brief Removes tuple_ if expired. Else the timer is rescheduled to expire at tuple_->time(). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2744 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2745 |
/// The task of actually removing the tuple is left to the OLSR agent. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2746 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2747 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2748 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2749 |
void |
4364 | 2750 |
RoutingProtocol::MprSelTupleTimerExpire (Ipv4Address mainAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2751 |
{ |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2752 |
MprSelectorTuple *tuple = m_state.FindMprSelectorTuple (mainAddr); |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2753 |
if (tuple == NULL) |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2754 |
{ |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2755 |
return; |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2756 |
} |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2757 |
if (tuple->expirationTime < Simulator::Now ()) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2758 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2759 |
RemoveMprSelectorTuple (*tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2760 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2761 |
else |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2762 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2763 |
m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime), |
4364 | 2764 |
&RoutingProtocol::MprSelTupleTimerExpire, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2765 |
this, mainAddr)); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2766 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2767 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2768 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2769 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2770 |
/// \brief Removes tuple_ if expired. Else the timer is rescheduled to expire at tuple_->time(). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2771 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2772 |
/// The task of actually removing the tuple is left to the OLSR agent. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2773 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2774 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2775 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2776 |
void |
4364 | 2777 |
RoutingProtocol::TopologyTupleTimerExpire (Ipv4Address destAddr, Ipv4Address lastAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2778 |
{ |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2779 |
TopologyTuple *tuple = m_state.FindTopologyTuple (destAddr, lastAddr); |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2780 |
if (tuple == NULL) |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2781 |
{ |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2782 |
return; |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2783 |
} |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2784 |
if (tuple->expirationTime < Simulator::Now ()) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2785 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2786 |
RemoveTopologyTuple (*tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2787 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2788 |
else |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2789 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2790 |
m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime), |
4364 | 2791 |
&RoutingProtocol::TopologyTupleTimerExpire, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2792 |
this, tuple->destAddr, tuple->lastAddr)); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2793 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2794 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2795 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2796 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2797 |
/// \brief Removes tuple_ if expired. Else timer is rescheduled to expire at tuple_->time(). |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2798 |
/// \param e The event which has expired. |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2799 |
/// |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2800 |
void |
4364 | 2801 |
RoutingProtocol::IfaceAssocTupleTimerExpire (Ipv4Address ifaceAddr) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2802 |
{ |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2803 |
IfaceAssocTuple *tuple = m_state.FindIfaceAssocTuple (ifaceAddr); |
2329
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2804 |
if (tuple == NULL) |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2805 |
{ |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2806 |
return; |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2807 |
} |
eadca3b1de1a
A couple more OLSR bug fixes
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2328
diff
changeset
|
2808 |
if (tuple->time < Simulator::Now ()) |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2809 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2810 |
RemoveIfaceAssocTuple (*tuple); |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2811 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2812 |
else |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2813 |
{ |
2328
caa15068fb3b
OLSR: code cleanup, more extensive logging, many bug fixes. Should also handle multiple interfaces better, now.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2308
diff
changeset
|
2814 |
m_events.Track (Simulator::Schedule (DELAY (tuple->time), |
4364 | 2815 |
&RoutingProtocol::IfaceAssocTupleTimerExpire, |
2358
bf0230eba16e
Small OLSR memory optimisation.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
2334
diff
changeset
|
2816 |
this, ifaceAddr)); |
1765
763f8d1bb058
Adapt the OLSR agent code to use the new Timer class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1763
diff
changeset
|
2817 |
} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2818 |
} |
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
2819 |
|
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2820 |
/// \brief Removes tuple_ if expired. Else timer is rescheduled to expire at tuple_->time(). |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2821 |
/// \param e The event which has expired. |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2822 |
/// |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2823 |
void |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2824 |
RoutingProtocol::AssociationTupleTimerExpire (Ipv4Address gatewayAddr, Ipv4Address networkAddr, Ipv4Mask netmask) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2825 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2826 |
AssociationTuple *tuple = m_state.FindAssociationTuple (gatewayAddr, networkAddr, netmask); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2827 |
if (tuple == NULL) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2828 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2829 |
return; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2830 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2831 |
if (tuple->expirationTime < Simulator::Now ()) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2832 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2833 |
RemoveAssociationTuple (*tuple); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2834 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2835 |
else |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2836 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2837 |
m_events.Track (Simulator::Schedule (DELAY (tuple->expirationTime), |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2838 |
&RoutingProtocol::AssociationTupleTimerExpire, |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2839 |
this, gatewayAddr, networkAddr, netmask)); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2840 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2841 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2842 |
|
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2843 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2844 |
/// \brief Clears the routing table and frees the memory assigned to each one of its entries. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2845 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2846 |
void |
4364 | 2847 |
RoutingProtocol::Clear () |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2848 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2849 |
NS_LOG_FUNCTION_NOARGS (); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2850 |
m_table.clear (); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2851 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2852 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2853 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2854 |
/// \brief Deletes the entry whose destination address is given. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2855 |
/// \param dest address of the destination node. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2856 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2857 |
void |
4364 | 2858 |
RoutingProtocol::RemoveEntry (Ipv4Address const &dest) |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2859 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2860 |
m_table.erase (dest); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2861 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2862 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2863 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2864 |
/// \brief Looks up an entry for the specified destination address. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2865 |
/// \param dest destination address. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2866 |
/// \param outEntry output parameter to hold the routing entry result, if fuond |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2867 |
/// \return true if found, false if not found |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2868 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2869 |
bool |
4364 | 2870 |
RoutingProtocol::Lookup (Ipv4Address const &dest, |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2871 |
RoutingTableEntry &outEntry) const |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2872 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2873 |
// Get the iterator at "dest" position |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2874 |
std::map<Ipv4Address, RoutingTableEntry>::const_iterator it = |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2875 |
m_table.find (dest); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2876 |
// If there is no route to "dest", return NULL |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2877 |
if (it == m_table.end ()) |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2878 |
return false; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2879 |
outEntry = it->second; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2880 |
return true; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2881 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2882 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2883 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2884 |
/// \brief Finds the appropiate entry which must be used in order to forward |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2885 |
/// a data packet to a next hop (given a destination). |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2886 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2887 |
/// Imagine a routing table like this: [A,B] [B,C] [C,C]; being each pair of the |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2888 |
/// form [dest addr,next-hop addr]. In this case, if this function is invoked with |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2889 |
/// [A,B] then pair [C,C] is returned because C is the next hop that must be used |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2890 |
/// to forward a data packet destined to A. That is, C is a neighbor of this node, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2891 |
/// but B isn't. This function finds the appropiate neighbor for forwarding a packet. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2892 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2893 |
/// \param entry the routing table entry which indicates the destination node |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2894 |
/// we are interested in. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2895 |
/// \return the appropiate routing table entry which indicates the next |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2896 |
/// hop which must be used for forwarding a data packet, or NULL |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2897 |
/// if there is no such entry. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2898 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2899 |
bool |
4364 | 2900 |
RoutingProtocol::FindSendEntry (RoutingTableEntry const &entry, |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2901 |
RoutingTableEntry &outEntry) const |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2902 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2903 |
outEntry = entry; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2904 |
while (outEntry.destAddr != outEntry.nextAddr) |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2905 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2906 |
if (not Lookup(outEntry.nextAddr, outEntry)) |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2907 |
return false; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2908 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2909 |
return true; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2910 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2911 |
|
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2912 |
Ptr<Ipv4Route> |
5856
7fd20c798a7d
bug 742: Implementation of SO_BINDTODEVICE
Antti Mäkelä <zarhan@cc.hut.fi>
parents:
5772
diff
changeset
|
2913 |
RoutingProtocol::RouteOutput (Ptr<Packet> p, const Ipv4Header &header, Ptr<NetDevice> oif, Socket::SocketErrno &sockerr) |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2914 |
{ |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2915 |
NS_LOG_FUNCTION (this << " " << m_ipv4->GetObject<Node> ()->GetId() << " " << header.GetDestination () << " " << oif); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2916 |
Ptr<Ipv4Route> rtentry; |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2917 |
RoutingTableEntry entry1, entry2; |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2918 |
bool found = false; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2919 |
|
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2920 |
if (Lookup (header.GetDestination (), entry1) != 0) |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2921 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2922 |
bool foundSendEntry = FindSendEntry (entry1, entry2); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2923 |
if (!foundSendEntry) |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2924 |
{ |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2925 |
NS_FATAL_ERROR ("FindSendEntry failure"); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2926 |
} |
5946
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2927 |
uint32_t interfaceIdx = entry2.interface; |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2928 |
if (oif && m_ipv4->GetInterfaceForDevice (oif) != static_cast<int> (interfaceIdx)) |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2929 |
{ |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2930 |
// We do not attempt to perform a constrained routing search |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2931 |
// if the caller specifies the oif; we just enforce that |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2932 |
// that the found route matches the requested outbound interface |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2933 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2934 |
<< ": RouteOutput for dest=" << header.GetDestination () |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2935 |
<< " Route interface " << interfaceIdx |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2936 |
<< " does not match requested output interface " |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2937 |
<< m_ipv4->GetInterfaceForDevice (oif)); |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2938 |
sockerr = Socket::ERROR_NOROUTETOHOST; |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2939 |
return rtentry; |
4fef76630d66
Bug 778 - OLSR ignores specified outgoing interface in RouteOutput()
Tom Henderson <tomh@tomh.org>
parents:
5932
diff
changeset
|
2940 |
} |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2941 |
rtentry = Create<Ipv4Route> (); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2942 |
rtentry->SetDestination (header.GetDestination ()); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2943 |
// the source address is the interface address that matches |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2944 |
// the destination address (when multiple are present on the |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2945 |
// outgoing interface, one is selected via scoping rules) |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2946 |
NS_ASSERT (m_ipv4); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2947 |
uint32_t numOifAddresses = m_ipv4->GetNAddresses (interfaceIdx); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2948 |
NS_ASSERT (numOifAddresses > 0); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2949 |
Ipv4InterfaceAddress ifAddr; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2950 |
if (numOifAddresses == 1) { |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2951 |
ifAddr = m_ipv4->GetAddress (interfaceIdx, 0); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2952 |
} else { |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2953 |
NS_FATAL_ERROR ("XXX Not implemented yet: IP aliasing and OLSR"); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2954 |
} |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2955 |
rtentry->SetSource (ifAddr.GetLocal ()); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2956 |
rtentry->SetGateway (entry2.nextAddr); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2957 |
rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIdx)); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2958 |
sockerr = Socket::ERROR_NOTERROR; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2959 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress |
5867
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
2960 |
<< ": RouteOutput for dest=" << header.GetDestination () |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2961 |
<< " --> nextHop=" << entry2.nextAddr |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2962 |
<< " interface=" << entry2.interface); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2963 |
NS_LOG_DEBUG ("Found route to " << rtentry->GetDestination () << " via nh " << rtentry->GetGateway () << " with source addr " << rtentry->GetSource () << " and output dev " << rtentry->GetOutputDevice()); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2964 |
found = true; |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2965 |
} |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2966 |
else |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2967 |
{ |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2968 |
rtentry = m_hnaRoutingTable->RouteOutput (p, header, oif, sockerr); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2969 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2970 |
if (rtentry) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2971 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2972 |
found = true; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2973 |
NS_LOG_DEBUG ("Found route to " << rtentry->GetDestination () << " via nh " << rtentry->GetGateway () << " with source addr " << rtentry->GetSource () << " and output dev " << rtentry->GetOutputDevice()); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2974 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2975 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2976 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2977 |
if (!found) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
2978 |
{ |
5867
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
2979 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
2980 |
<< ": RouteOutput for dest=" << header.GetDestination () |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
2981 |
<< " No route to host"); |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2982 |
sockerr = Socket::ERROR_NOROUTETOHOST; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2983 |
} |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2984 |
return rtentry; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2985 |
} |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
2986 |
|
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2987 |
bool RoutingProtocol::RouteInput (Ptr<const Packet> p, |
5761
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2988 |
const Ipv4Header &header, Ptr<const NetDevice> idev, |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2989 |
UnicastForwardCallback ucb, MulticastForwardCallback mcb, |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2990 |
LocalDeliverCallback lcb, ErrorCallback ecb) |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2991 |
{ |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2992 |
NS_LOG_FUNCTION (this << " " << m_ipv4->GetObject<Node> ()->GetId() << " " << header.GetDestination ()); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
2993 |
|
5761
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2994 |
Ipv4Address dst = header.GetDestination (); |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2995 |
Ipv4Address origin = header.GetSource (); |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2996 |
|
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2997 |
// Consume self-originated packets |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2998 |
if (IsMyOwnAddress (origin) == true) |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
2999 |
{ |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3000 |
return true; |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3001 |
} |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3002 |
|
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3003 |
// Local delivery |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3004 |
NS_ASSERT (m_ipv4->GetInterfaceForDevice (idev) >= 0); |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3005 |
uint32_t iif = m_ipv4->GetInterfaceForDevice (idev); |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3006 |
if (m_ipv4->IsDestinationAddress (dst, iif)) |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3007 |
{ |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3008 |
NS_LOG_LOGIC ("Local delivery to " << dst); |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3009 |
lcb (p, header, iif); |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3010 |
return true; |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3011 |
} |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3012 |
|
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3013 |
// Forwarding |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3014 |
Ptr<Ipv4Route> rtentry; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3015 |
RoutingTableEntry entry1, entry2; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3016 |
if (Lookup (header.GetDestination (), entry1)) |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3017 |
{ |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3018 |
bool foundSendEntry = FindSendEntry (entry1, entry2); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3019 |
if (!foundSendEntry) |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3020 |
NS_FATAL_ERROR ("FindSendEntry failure"); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3021 |
rtentry = Create<Ipv4Route> (); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3022 |
rtentry->SetDestination (header.GetDestination ()); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3023 |
uint32_t interfaceIdx = entry2.interface; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3024 |
// the source address is the interface address that matches |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3025 |
// the destination address (when multiple are present on the |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3026 |
// outgoing interface, one is selected via scoping rules) |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3027 |
NS_ASSERT (m_ipv4); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3028 |
uint32_t numOifAddresses = m_ipv4->GetNAddresses (interfaceIdx); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3029 |
NS_ASSERT (numOifAddresses > 0); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3030 |
Ipv4InterfaceAddress ifAddr; |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3031 |
if (numOifAddresses == 1) { |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3032 |
ifAddr = m_ipv4->GetAddress (interfaceIdx, 0); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3033 |
} else { |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3034 |
NS_FATAL_ERROR ("XXX Not implemented yet: IP aliasing and OLSR"); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3035 |
} |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3036 |
rtentry->SetSource (ifAddr.GetLocal ()); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3037 |
rtentry->SetGateway (entry2.nextAddr); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3038 |
rtentry->SetOutputDevice (m_ipv4->GetNetDevice (interfaceIdx)); |
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3039 |
|
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3040 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress |
5867
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3041 |
<< ": RouteInput for dest=" << header.GetDestination () |
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3042 |
<< " --> nextHop=" << entry2.nextAddr |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3043 |
<< " interface=" << entry2.interface); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3044 |
|
4472
e20a31541404
src/ and utils/ changes for IPv4 routing rework
Tom Henderson <tomh@tomh.org>
parents:
4452
diff
changeset
|
3045 |
ucb (rtentry, p, header); |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3046 |
return true; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3047 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3048 |
else |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3049 |
{ |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3050 |
if(m_hnaRoutingTable->RouteInput (p, header, idev, ucb, mcb, lcb, ecb)) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3051 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3052 |
return true; |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3053 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3054 |
else |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3055 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3056 |
|
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3057 |
#ifdef NS3_LOG_ENABLE |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3058 |
NS_LOG_DEBUG ("Olsr node " << m_mainAddress |
5867
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3059 |
<< ": RouteInput for dest=" << header.GetDestination () |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3060 |
<< " --> NOT FOUND; ** Dumping routing table..."); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3061 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3062 |
for (std::map<Ipv4Address, RoutingTableEntry>::const_iterator iter = m_table.begin (); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3063 |
iter != m_table.end (); iter++) |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3064 |
{ |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3065 |
NS_LOG_DEBUG ("dest=" << iter->first << " --> next=" << iter->second.nextAddr |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3066 |
<< " via interface " << iter->second.interface); |
6140
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3067 |
} |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3068 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3069 |
NS_LOG_DEBUG ("** Routing table dump end."); |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3070 |
#endif // NS3_LOG_ENABLE |
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3071 |
|
12bb87242796
Bug 407 - OLSR is missing HNA support
Lalith Suresh <suresh.lalith@gmail.com>
parents:
5985
diff
changeset
|
3072 |
return false; |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3073 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3074 |
} |
3853
f04e7f61b1ed
Make olsr::RoutingTable public, add a method GetEntries to it, and add a method GetRoutingTable to OlsrAgent. This way it is possible to read the actual routing table that OLSR has discovered, for debugging/visualization purposes.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
3487
diff
changeset
|
3075 |
} |
4560
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3076 |
void |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3077 |
RoutingProtocol::NotifyInterfaceUp (uint32_t i) |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3078 |
{} |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3079 |
void |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3080 |
RoutingProtocol::NotifyInterfaceDown (uint32_t i) |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3081 |
{} |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3082 |
void |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3083 |
RoutingProtocol::NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address) |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3084 |
{} |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3085 |
void |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3086 |
RoutingProtocol::NotifyRemoveAddress (uint32_t interface, Ipv4InterfaceAddress address) |
2f106fd728ab
Remove static routing dependencies in code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4472
diff
changeset
|
3087 |
{} |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
3088 |
|
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3089 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3090 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3091 |
/// \brief Adds a new entry into the routing table. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3092 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3093 |
/// If an entry for the given destination existed, it is deleted and freed. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3094 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3095 |
/// \param dest address of the destination node. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3096 |
/// \param next address of the next hop node. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3097 |
/// \param iface address of the local interface. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3098 |
/// \param dist distance to the destination node. |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3099 |
/// |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3100 |
void |
4364 | 3101 |
RoutingProtocol::AddEntry (Ipv4Address const &dest, |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3102 |
Ipv4Address const &next, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3103 |
uint32_t interface, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3104 |
uint32_t distance) |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3105 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3106 |
NS_LOG_FUNCTION (this << dest << next << interface << distance << m_mainAddress); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3107 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3108 |
NS_ASSERT (distance > 0); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3109 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3110 |
// Creates a new rt entry with specified values |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3111 |
RoutingTableEntry &entry = m_table[dest]; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3112 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3113 |
entry.destAddr = dest; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3114 |
entry.nextAddr = next; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3115 |
entry.interface = interface; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3116 |
entry.distance = distance; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3117 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3118 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3119 |
void |
4364 | 3120 |
RoutingProtocol::AddEntry (Ipv4Address const &dest, |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3121 |
Ipv4Address const &next, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3122 |
Ipv4Address const &interfaceAddress, |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3123 |
uint32_t distance) |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3124 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3125 |
NS_LOG_FUNCTION (this << dest << next << interfaceAddress << distance << m_mainAddress); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3126 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3127 |
NS_ASSERT (distance > 0); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3128 |
NS_ASSERT (m_ipv4); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3129 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3130 |
RoutingTableEntry entry; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3131 |
for (uint32_t i = 0; i < m_ipv4->GetNInterfaces (); i++) |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3132 |
{ |
4380 | 3133 |
for (uint32_t j = 0; j < m_ipv4->GetNAddresses (i); j++) |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3134 |
{ |
4380 | 3135 |
if (m_ipv4->GetAddress (i,j).GetLocal () == interfaceAddress) |
3136 |
{ |
|
3137 |
AddEntry (dest, next, i, distance); |
|
3138 |
return; |
|
3139 |
} |
|
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3140 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3141 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3142 |
NS_ASSERT (false); // should not be reached |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3143 |
AddEntry (dest, next, 0, distance); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3144 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3145 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3146 |
|
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3147 |
std::vector<RoutingTableEntry> |
5985
42d6f24bd0f4
New API olsr::RoutingProtocol::GetRoutingTableEntries ()
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5946
diff
changeset
|
3148 |
RoutingProtocol::GetRoutingTableEntries () const |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3149 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3150 |
std::vector<RoutingTableEntry> retval; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3151 |
for (std::map<Ipv4Address, RoutingTableEntry>::const_iterator iter = m_table.begin (); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3152 |
iter != m_table.end (); iter++) |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3153 |
{ |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3154 |
retval.push_back (iter->second); |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3155 |
} |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3156 |
return retval; |
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3157 |
} |
5509
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3158 |
OlsrMprTestCase::OlsrMprTestCase () |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3159 |
: TestCase ("Check OLSR MPR computing mechanism") |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3160 |
{ |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3161 |
} |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3162 |
OlsrMprTestCase::~OlsrMprTestCase () |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3163 |
{ |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3164 |
} |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3165 |
bool |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3166 |
OlsrMprTestCase::DoRun () |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3167 |
{ |
5757
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3168 |
Ptr<RoutingProtocol> protocol = CreateObject<RoutingProtocol> (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3169 |
protocol->m_mainAddress = Ipv4Address ("10.0.0.1"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3170 |
OlsrState & state = protocol->m_state; |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3171 |
|
5509
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3172 |
/* |
5757
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3173 |
* 1 -- 2 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3174 |
* | | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3175 |
* 3 -- 4 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3176 |
* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3177 |
* Node 1 must select only one MPR (2 or 3, doesn't matter) |
5510 | 3178 |
*/ |
5509
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3179 |
NeighborTuple neigbor; |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3180 |
neigbor.status = NeighborTuple::STATUS_SYM; |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3181 |
neigbor.willingness = OLSR_WILL_DEFAULT; |
5757
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3182 |
neigbor.neighborMainAddr = Ipv4Address ("10.0.0.2"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3183 |
protocol->m_state.InsertNeighborTuple (neigbor); |
5509
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3184 |
neigbor.neighborMainAddr = Ipv4Address ("10.0.0.3"); |
5757
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3185 |
protocol->m_state.InsertNeighborTuple (neigbor); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3186 |
TwoHopNeighborTuple tuple; |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3187 |
tuple.expirationTime = Seconds (3600); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3188 |
tuple.neighborMainAddr = Ipv4Address ("10.0.0.2"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3189 |
tuple.twoHopNeighborAddr = Ipv4Address ("10.0.0.4"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3190 |
protocol->m_state.InsertTwoHopNeighborTuple (tuple); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3191 |
tuple.neighborMainAddr = Ipv4Address ("10.0.0.3"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3192 |
tuple.twoHopNeighborAddr = Ipv4Address ("10.0.0.4"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3193 |
protocol->m_state.InsertTwoHopNeighborTuple (tuple); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3194 |
|
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3195 |
protocol->MprComputation (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3196 |
NS_TEST_EXPECT_MSG_EQ (state.GetMprSet ().size (), 1 , "An only address must be chosen."); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3197 |
/* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3198 |
* 1 -- 2 -- 5 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3199 |
* | | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3200 |
* 3 -- 4 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3201 |
* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3202 |
* Node 1 must select node 2 as MPR. |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3203 |
*/ |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3204 |
tuple.neighborMainAddr = Ipv4Address ("10.0.0.2"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3205 |
tuple.twoHopNeighborAddr = Ipv4Address ("10.0.0.5"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3206 |
protocol->m_state.InsertTwoHopNeighborTuple (tuple); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3207 |
|
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3208 |
protocol->MprComputation (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3209 |
MprSet mpr = state.GetMprSet (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3210 |
NS_TEST_EXPECT_MSG_EQ (mpr.size (), 1 , "An only address must be chosen."); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3211 |
NS_TEST_EXPECT_MSG_EQ ((mpr.find ("10.0.0.2") != mpr.end ()), true, "Node 1 must select node 2 as MPR"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3212 |
/* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3213 |
* 1 -- 2 -- 5 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3214 |
* | | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3215 |
* 3 -- 4 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3216 |
* | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3217 |
* 6 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3218 |
* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3219 |
* Node 1 must select nodes 2 and 3 as MPRs. |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3220 |
*/ |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3221 |
tuple.neighborMainAddr = Ipv4Address ("10.0.0.3"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3222 |
tuple.twoHopNeighborAddr = Ipv4Address ("10.0.0.6"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3223 |
protocol->m_state.InsertTwoHopNeighborTuple (tuple); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3224 |
|
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3225 |
protocol->MprComputation (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3226 |
mpr = state.GetMprSet (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3227 |
NS_TEST_EXPECT_MSG_EQ (mpr.size (), 2 , "An only address must be chosen."); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3228 |
NS_TEST_EXPECT_MSG_EQ ((mpr.find ("10.0.0.2") != mpr.end ()), true, "Node 1 must select node 2 as MPR"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3229 |
NS_TEST_EXPECT_MSG_EQ ((mpr.find ("10.0.0.3") != mpr.end ()), true, "Node 1 must select node 3 as MPR"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3230 |
/* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3231 |
* 7 (OLSR_WILL_ALWAYS) |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3232 |
* | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3233 |
* 1 -- 2 -- 5 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3234 |
* | | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3235 |
* 3 -- 4 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3236 |
* | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3237 |
* 6 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3238 |
* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3239 |
* Node 1 must select nodes 2, 3 and 7 (since it is WILL_ALWAYS) as MPRs. |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3240 |
*/ |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3241 |
neigbor.willingness = OLSR_WILL_ALWAYS; |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3242 |
neigbor.neighborMainAddr = Ipv4Address ("10.0.0.7"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3243 |
protocol->m_state.InsertNeighborTuple (neigbor); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3244 |
|
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3245 |
protocol->MprComputation (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3246 |
mpr = state.GetMprSet (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3247 |
NS_TEST_EXPECT_MSG_EQ (mpr.size (), 3 , "An only address must be chosen."); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3248 |
NS_TEST_EXPECT_MSG_EQ ((mpr.find ("10.0.0.7") != mpr.end ()), true, "Node 1 must select node 7 as MPR"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3249 |
/* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3250 |
* 7 <- WILL_ALWAYS |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3251 |
* | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3252 |
* 9 -- 8 -- 1 -- 2 -- 5 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3253 |
* | | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3254 |
* ^ 3 -- 4 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3255 |
* | | |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3256 |
* WILL_NEVER 6 |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3257 |
* |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3258 |
* Node 1 must select nodes 2, 3 and 7 (since it is WILL_ALWAYS) as MPRs. |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3259 |
* Node 1 must NOT select node 8 as MPR since it is WILL_NEVER |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3260 |
*/ |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3261 |
neigbor.willingness = OLSR_WILL_NEVER; |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3262 |
neigbor.neighborMainAddr = Ipv4Address ("10.0.0.8"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3263 |
protocol->m_state.InsertNeighborTuple (neigbor); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3264 |
tuple.neighborMainAddr = Ipv4Address ("10.0.0.8"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3265 |
tuple.twoHopNeighborAddr = Ipv4Address ("10.0.0.9"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3266 |
protocol->m_state.InsertTwoHopNeighborTuple (tuple); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3267 |
|
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3268 |
protocol->MprComputation (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3269 |
mpr = state.GetMprSet (); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3270 |
NS_TEST_EXPECT_MSG_EQ (mpr.size (), 3 , "An only address must be chosen."); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3271 |
NS_TEST_EXPECT_MSG_EQ ((mpr.find ("10.0.0.9") == mpr.end ()), true, "Node 1 must NOT select node 8 as MPR"); |
c2dc9d69d547
[olsr] MPR selection unit tests updated
Pavel Boyko <boyko@iitp.ru>
parents:
5756
diff
changeset
|
3272 |
|
5509
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3273 |
return false; |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3274 |
} |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3275 |
|
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3276 |
static class OlsrProtocolTestSuite : public TestSuite |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3277 |
{ |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3278 |
public: |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3279 |
OlsrProtocolTestSuite (); |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3280 |
} g_olsrProtocolTestSuite; |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3281 |
|
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3282 |
OlsrProtocolTestSuite::OlsrProtocolTestSuite() |
5510 | 3283 |
: TestSuite("routing-olsr", UNIT) |
5509
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3284 |
{ |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3285 |
AddTestCase (new OlsrMprTestCase ()); |
33d52e78605a
[Bug 740] OLSR MprCompute () works wrong: fixed
Kirill Andreev <andreev@iitp.ru>
parents:
5471
diff
changeset
|
3286 |
} |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3287 |
|
5761
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3288 |
bool |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3289 |
RoutingProtocol::IsMyOwnAddress (const Ipv4Address & a) const |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3290 |
{ |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3291 |
for (std::map<Ptr<Socket> , Ipv4InterfaceAddress>::const_iterator j = |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3292 |
m_socketAddresses.begin (); j != m_socketAddresses.end (); ++j) |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3293 |
{ |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3294 |
Ipv4InterfaceAddress iface = j->second; |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3295 |
if (a == iface.GetLocal ()) |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3296 |
{ |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3297 |
return true; |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3298 |
} |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3299 |
} |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3300 |
return false; |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3301 |
} |
55f21c521021
(Bug 735) Update Olsr for local delivery
Tom Henderson <tomh@tomh.org>
parents:
5757
diff
changeset
|
3302 |
|
5867
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3303 |
void |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3304 |
RoutingProtocol::Dump (void) |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3305 |
{ |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3306 |
Time now = Simulator::Now (); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3307 |
|
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3308 |
#ifdef NS3_LOG_ENABLE |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3309 |
NS_LOG_DEBUG ("Dumping for node with main address " << m_mainAddress); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3310 |
NS_LOG_DEBUG (" Neighbor set"); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3311 |
for (NeighborSet::const_iterator iter = m_state.GetNeighbors ().begin (); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3312 |
iter != m_state.GetNeighbors ().end (); iter++) |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3313 |
{ |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3314 |
NS_LOG_DEBUG (" " << *iter); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3315 |
} |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3316 |
NS_LOG_DEBUG (" Two-hop neighbor set"); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3317 |
for (TwoHopNeighborSet::const_iterator iter = m_state.GetTwoHopNeighbors ().begin (); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3318 |
iter != m_state.GetTwoHopNeighbors ().end (); iter++) |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3319 |
{ |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3320 |
if (now < iter->expirationTime) |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3321 |
{ |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3322 |
NS_LOG_DEBUG (" " << *iter); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3323 |
} |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3324 |
} |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3325 |
NS_LOG_DEBUG (" Routing table"); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3326 |
for (std::map<Ipv4Address, RoutingTableEntry>::const_iterator iter = m_table.begin (); iter != m_table.end (); iter++) |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3327 |
{ |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3328 |
NS_LOG_DEBUG (" dest=" << iter->first << " --> next=" << iter->second.nextAddr << " via interface " << iter->second.interface); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3329 |
} |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3330 |
NS_LOG_DEBUG (""); |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3331 |
#endif //NS3_LOG_ENABLE |
8c65da328ae9
Fix Bug 780 (problem in RoutingTableComputation with asymetric links), while adding debugging methods to OLSR. Thanks Abdul Jabbar, Pavel Boyko, and Tom Henderson for test case and debug code.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
5856
diff
changeset
|
3332 |
} |
4358
e63305078fe5
rework olsr
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4218
diff
changeset
|
3333 |
|
1801
522029e3b8a6
Put everything OLSR into the 'olsr' C++ namespace, for consistency.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
1799
diff
changeset
|
3334 |
}} // namespace olsr, ns3 |
1716
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
3335 |
|
9757633a85da
Add OLSR routing support, (loosely) based on Francisco J. Ros's NS-2 code (University of Murcia).
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff
changeset
|
3336 |