[Olsr-dev] process unspec. link quality information

Peter Tarjan (spam-protected)
Fri Apr 3 11:54:48 CEST 2009


Hello,

2009/4/2 Henning Rogge <(spam-protected)>

> On Dienstag 31 März 2009 16:43:44 Peter Tarjan wrote:
>


> > --- a/src/process_package.c    2009-03-31 16:12:14.215112467 +0200
> > +++ b/src/process_package.c    2009-03-31 16:13:05.643112066 +0200
> > @@ -424,7 +424,9 @@
> >
> >      /* find the input interface in the list of neighbor interfaces */
> >      for (walker = message->neighbors; walker != NULL; walker =
> > walker->next)
> > -      if (ipequal(&walker->address, &in_if->ip_addr))
> > +      if (ipequal(&walker->address, &in_if->ip_addr)  &&
> > +            walker->link != UNSPEC_LINK)
> > +
> >          break;
> >
> >      // memorize our neighbour's idea of the link quality, so that we
>
> Hmm... I'm not sure about this patch... shouldn't we set the LQ value to
> zero
> for an unspecified link at another place ?
>
> With your patch we might just ignore the value measured by the UNSPEC-link
> (correct) and keep the old LQ value !
>

I decided to ignore the link quality information, because UNSPEC_LINK type
message is created by the following in lq_packet.c file:
---------------------------------------------------------------------------------------------------------
static void
create_lq_hello(struct lq_hello_message *lq_hello, struct interface *outif)
...
  OLSR_FOR_ALL_LINK_ENTRIES(walker) {

    // allocate a neighbour entry
    struct lq_hello_neighbor *neigh = olsr_malloc_lq_hello_neighbor("Build
LQ_HELLO");

    // a) this neighbor interface IS NOT visible via the output interface
    if (!ipequal(&walker->local_iface_addr, &outif->ip_addr))
      neigh->link_type = UNSPEC_LINK;
---------------------------------------------------------------------------------------------------------
I wondered when I looked into the code, why this information was even
included in a HELLO packet.

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.
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.

--
Péter Tarján
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.olsr.org/pipermail/olsr-dev/attachments/20090403/16d6248b/attachment.html>


More information about the Olsr-dev mailing list