[Olsr-dev] inconsistency in MID handling

Hannes Gredler (spam-protected)
Thu May 7 13:23:09 CEST 2009


On Thu, May 07, 2009 at 09:49:13AM +0200, Peter Tarjan wrote:
| Hi,
| 
| I think there is something wrong with the MID handling.
| If a host with multiple interfaces becomes unreachable, after a while
| all of its rt_paths are deleted (void olsr_delete_rt_path(struct
| rt_path *rtp) called).
| Unfortunately the MID entry is not removed from MID table.
| So when the mentioned host is again available, its MID's route is not
| reinserted to the routing table, because only the presence of the MID
| entry is checked (by mid_lookup_main_addr(&tmp_adr->alias_addr)). If
| there is an existing entry for this MID, insert_mid_alias is not
| called, nor insert_mid_tuple which would call
| olsr_insert_routing_table.
| 
| I see two approach to fix this problem:
| - if MID entry exists, the code should check the data structures for
| routing, too
| - when removing a routing entry belonging to MID alias, also removing
| the MID entry.
| 
| I'd suppose the first one, because at HNA handling something similar happens.

hi peter,

yes, you are right - the MID route handling is broken.
i'd be more in favour of cleaning up the house when the TC entry
is expiring - see: http://gredler.at/hg/olsrd/rev/85de989ea1d6
such that we do not have stale MID entries hanging around.
(since the TC hookup point is deleted there is no way we
can locate those MID entries any longer (ultimately they will
expire, since they have a running MID timer)

what do you think ?

/hannes




More information about the Olsr-dev mailing list