[Olsr-dev] Some problems found in olsrd code
Hannes Gredler
(spam-protected)
Tue Feb 17 14:19:55 CET 2009
Krzysztof,
what version of olsrd code have you been using ?
/hannes
Krzysztof Szuster wrote:
> Hello all,
> I;m working on a medium-distance IP-radio project. Having done some tests on 5-10 node networks I met some problems that may be errors in code or my misunderstending of how it should wark. My configuration is with ETX (LwLevel=2), I use "float" or "fpm" module to calculate ETX (I believe, both are functionally equal). My router has one radio interface with variable link speed.
>
> 1. It seems to me, that the LinkQualityMult parameter in config file is wrongly used. I modified the set_loss_link_multiplier() function as follows:
> /*
> * use the default multiplier only if there isn't any entry that
> * has a matching IP address.
> */
> if ((ipequal(&mult->addr, &null_addr) && val == 0) || //KS was: < 0.0
> ipequal(&mult->addr, &entry->neighbor_iface_addr)) {
> val = mult->value;
> I changed the condition (... < 0.0) to (...==0). Maybe (...<=0.0) is better?
>
> 2. Program crashes when the radio interface disappears. I cured the problem by adding a few lines into olsr_calculate_routing_table(). I'm not sure if this is sufficient but so far it works:
>
> #endif
> continue;
> }
> + if (! link->inter) {
> + #ifdef DEBUG
> + OLSR_PRINTF(2, "Interface %s disappeared\n",
> + link->if_name ? link->if_name : inet_ntoa (link->local_iface_addr.v4));
> + #endif
> + continue;
> + }
>
> /*
> * Now walk all prefixes advertised by that node.
>
> 3.There is a problem with timers. Once a few minutes a timer callback is not fired (delayed?). I detected it observing Lq's and found out, that Lq drops ocasionally. The reason was, that Hello was not sent. I don't understand the timer code well, but found a quick-and-dirty solution: set TIMER_WHEEL_SLOTS to 1 and all timers are fired as expected.
>
> I hope it will be easy for authors to fix the problems.
> Krzysztof Szuster
>
More information about the Olsr-dev
mailing list