Hello,<br><br>I've downloaded, compiled and tested the recently released OLSRd version 0<span id=":sy" class="hP">.5.6-r4.<br>In most situations it worked perfeclty, but olsrd behaved not as I expected in the following scenario:<br>
- two computers (A and B) having 1 and 2 network cards (respectively) involved in routing algorithm;<br>- the packets from A to B arriving on B's 1st interface are dropped (asymmetric link emulation), while packets received on B's 2nd interface are accepted and processed.<br>
<br>A -> B/1 dropped<br>A -> B/2, B/1 -> A, B/2 -> A - OK.<br><br>In this situation A measures two perfect links (ETX=1), even from B/1, so the </span><span id=":sy" class="hP">A -> B/1 neighbor link quality is considered flawless.<br>
I think I found its cause: we got link quality information from our neighbours, but we memorize it even if it is marked as UNSPECIFIED.<br><br>The unexpected behaviour can be fixed by the following patch: <br><br>--- a/src/process_package.c 2009-03-31 16:12:14.215112467 +0200<br>
+++ b/src/process_package.c 2009-03-31 16:13:05.643112066 +0200<br>@@ -424,7 +424,9 @@<br><br>@@ -424,7 +424,9 @@<br> <br> /* find the input interface in the list of neighbor interfaces */<br> for (walker = message->neighbors; walker != NULL; walker = walker->next)<br>
- if (ipequal(&walker->address, &in_if->ip_addr))<br>+ if (ipequal(&walker->address, &in_if->ip_addr) &&<br>+ walker->link != UNSPEC_LINK)<br>+<br> break;<br>
<br> // memorize our neighbour's idea of the link quality, so that we<br><br><br>-----------------------------------------------------------------------<br>Péter Tarján<br><br></span>