[olsr-dev] neighbors' olsrd dies when an interfaces goes down

Acinonyx (spam-protected)
Tue Oct 17 20:30:41 CEST 2006


O/H Acinonyx έγραψε:
> Found the problem!
>
> In olsr_ioctl_del_route(struct rt_entry *destination) 
> destination->rt_if->int_name seems to get NULL when interface goes 
> down but OLSR_PRINTF(1, "(ioctl)Deleting route with metric %d to %s/%s 
> via %s/%s.\n", destination->rt_metric, dst_str, mask_str, router_str, 
> destination->rt_if->int_name) tries to print it.
>
> I patched it but I don't know if this is an indication of any other 
> more serious problem.
>
> Vasilis
>
>
> _______________________________________________
> olsr-dev mailing list
> (spam-protected)
> https://www.olsr.org/mailman/listinfo/olsr-dev
>
>
As i suspected there is a more serious problem. I noticed that in 
general OLSRd doesn't respond well on interface state changes.

I have found a way to break olsrd/kernel route table consistensy. If the 
interface remains down for HelloValidityTime, olsrd tries to delete 
these routes but kernel answer "No such proccess!". Despite the error, 
no harm is done in this case. When interface comes up again, olsrd 
routes are going to be passed to kernel. But if interface goes down and 
comes up before HelloValidityTime elapses, olsrd routes are not passed 
to the kernel.

This is caused because olsrd isn't exclusively responsible for deleting 
kernel routes. There is a case where the kernel itself will 
automatically deletes routes from interfaces which go down.





More information about the Olsr-dev mailing list