<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
<br>
Henning Rogge wrote:
<blockquote cite="mid:200903232056.08338.hrogge@googlemail.com"
type="cite">
<pre wrap="">On Montag 23 März 2009 19:44:08 Andres Medina wrote:
</pre>
<blockquote type="cite">
<pre wrap="">This mail is to report 2 bugs we found it the code of olsrd. As we don't
use the source control utilities that you have and we are not involved
in the development of the code, I'm going to do my best to describe the
two bugs here:
Bug #1:
Navigate to line 175 of mpr.c of the olsrd-0.5.6-r3 code or look for the
following piece of code in your current source:
--
if (second_hop_entries->neighbor_2->mpr_covered_count >=
olsr_cnf->mpr_coverage)
count++;
--
The count variable holds the number of nodes that are reached by the
current MPR set. The variable mpr_coverage is set to 1 and never
changes. The condition of the "if" is satisfied every time the node is
reached by an MPR. Thus, when a node is reached by two MPRs, then this
count is incremented by two, which should not be the case. The solution
is very simple: the condition should be changed to == insted of >=.
</pre>
</blockquote>
<pre wrap=""><!---->I have to look at the code, the MPR stuff is a little bit older...
</pre>
<blockquote type="cite">
<pre wrap="">Bug #2:
Navigate to line 319 of olsr.c of the olsrd-0.5.6-r3 code or look for
the following piece of code in your current source:
--
/* Check MPR */
if (olsr_lookup_mprs_set(src) == NULL) {
#ifdef DEBUG
struct ipaddr_str buf;
OLSR_PRINTF(5, "Forward - sender %s not MPR selector\n",
olsr_ip_to_string(&buf, src));
#endif
return 0;
}
if (olsr_message_is_duplicate(m)) {
return 0;
}
--
The code olsr_message_is_duplicate(m), should be executed even if the
node processing the packets is not an MPR of the src node. This is also
very easy to correct.
</pre>
</blockquote>
<pre wrap=""><!---->No, I think you are wrong.
olsr_message_is_duplicate() checks and maintains the OLSR duplicate database.
So if you first call this function and then throw the package away because it
was no MPR then you would drop it if you get it from an MPR later, which would
be wrong in my oppinion. What do you think ?
</pre>
</blockquote>
No, it's not wrong. It can be shown that if you forward packets only if
you get the packet for the first time from an MPR, all the nodes are
still reached by the flood. This is the forwarding algorithm that is
described in the RFC. <br>
<blockquote cite="mid:200903232056.08338.hrogge@googlemail.com"
type="cite">
<pre wrap="">
Henning
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Andres Medina
Department of Electrical and Computer Engineering
University Of Delaware
<a class="moz-txt-link-abbreviated" href="mailto:medina@ece.udel.edu">medina@ece.udel.edu</a></pre>
</body>
</html>