[Olsr-dev] olsrd-0.5.4 LinkQualityLevel 2, TcRedundancy 0
Joe Gio
(spam-protected)
Fri Dec 21 16:53:04 CET 2007
Hannes Gredler wrote:
>
>
> Joe Gio wrote:
>> Hi,
>>
>> I have been working with olsrd-0.5.4 and have noticed with
>> LinkQualityLevel set to 2 and TcRedundancy set to 0 that in an all
>> informed network no routes are added to the routing table.
>>
>> In lq_route.c the nodes are not added to the candidate tree in
>> olsr_spf_relax since there only a forward edge and no inverse edge
>> for the 1 hop neighbors. This also effects the A --- B --- C
>> scenario where "B" the mpr will send out an lq_tc message including
>> "A" and "C" but neither "A" or "C" will have an inverse edge for the
>> other.
>>
>> Looking back at olsrd-0.5.3 it looks that when a forward edge is
>> created an inverse edge is also created without receiving an lq_tc
>> message.
>
> this is undesired, i.e. a bug ... - /hannes
>
I've add the following to olsr_calculate_routing_table to help with the
all informed scenario but still need to run with TcRedundancy set to 1
for multihop.
#if 1
for (i = 0; i < HASHSIZE; i++)
for (neigh = neighbortable[i].next; neigh != &neighbortable[i];
neigh = neigh->next) {
if (neigh->status == SYM) {
struct tc_entry *tc_neighbor =
olsr_lookup_tc_entry(&neigh->neighbor_main_addr);
struct tc_edge_entry *tc_edge_neighbor;
// add vertex
if (!tc_neighbor) {
tc_neighbor = olsr_add_tc_entry(&neigh->neighbor_main_addr);
}
tc_edge_neighbor = olsr_lookup_tc_edge(tc_neighbor,
&olsr_cnf->main_addr);
link = get_best_link_to_neighbor(&neigh->neighbor_main_addr);
if (!link) {
if (tc_edge_neighbor) {
olsr_delete_tc_edge_entry(tc_edge_neighbor);
}
continue;
}
// add edge from neighbor to us
if (!tc_edge_neighbor) {
tc_edge_neighbor = olsr_add_tc_edge_entry(tc_neighbor,
&olsr_cnf->main_addr,
0, OLSR_TC_EDGE_GC_TIME / 1000.0,
link->loss_link_quality,
link->neigh_link_quality);
} else {
tc_edge_neighbor->link_quality = link->loss_link_quality;
tc_edge_neighbor->inverse_link_quality =
link->neigh_link_quality;
olsr_calc_tc_edge_entry_etx(tc_edge_neighbor);
olsr_set_tc_edge_timer(tc_edge_neighbor, OLSR_TC_EDGE_GC_TIME);
}
}
}
#endif
Regards
JoeGio
More information about the Olsr-dev
mailing list