Hello,<br><br><div class="gmail_quote">2009/4/2 Henning Rogge <span dir="ltr"><<a href="mailto:hrogge@googlemail.com">hrogge@googlemail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="h5">On Dienstag 31 März 2009 16:43:44 Peter Tarjan wrote:<br>
</div></div></blockquote><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div class="h5">> --- 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>
> /* find the input interface in the list of neighbor interfaces */<br>
> for (walker = message->neighbors; walker != NULL; walker =<br>
> 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>
</div></div>Hmm... I'm not sure about this patch... shouldn't we set the LQ value to zero<br>
for an unspecified link at another place ?<br>
<br>
With your patch we might just ignore the value measured by the UNSPEC-link<br>
(correct) and keep the old LQ value !<br>
</blockquote></div><br>I decided to ignore the link quality information, because UNSPEC_LINK type message is created by the following in lq_packet.c file:<br>---------------------------------------------------------------------------------------------------------<br>
static void<br>create_lq_hello(struct lq_hello_message *lq_hello, struct interface *outif)<br>...<br> OLSR_FOR_ALL_LINK_ENTRIES(walker) {<br><br> // allocate a neighbour entry<br> struct lq_hello_neighbor *neigh = olsr_malloc_lq_hello_neighbor("Build LQ_HELLO");<br>
<br> // a) this neighbor interface IS NOT visible via the output interface<br> if (!ipequal(&walker->local_iface_addr, &outif->ip_addr))<br> neigh->link_type = UNSPEC_LINK;<br>---------------------------------------------------------------------------------------------------------<br>
I wondered when I looked into the code, why this information was even included in a HELLO packet.<br><br>In my network scenario B sends HELLO packets from both interfaces. Every HELLO packet lists all the links regardless which interface it is broadcast on.<br>
When these packets are processed, A is considering the first information that can be found in the packet about the LQ information of the link directed to it. So if there is an UNSPEC link first and later a SYM_NEIGH to A, UNSPEC link information is considered.<br>
<br>--<br><span>Péter Tarján<br></span><br>