[olsr-dev] neighbors' olsrd dies when an interfaces goes down
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.
> olsr-dev mailing list
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