Hello,
On Tue, 18 Dec 2001 kuznet@xxxxxxxxxxxxx wrote:
> Hello!
>
> > 1. fib_inetaddr_event deletes all routes when the last address is
> > deleted which is wrong,
>
> When the last address is deleted, IP is disabled on the device,
> and it is pretty strange to say about some routes after this they
> have no object to refer to.
I can have routes through this device with preferred source IP
from another device. They are removed from this forced deletion.
Now I can't add route through one device without using addresses
attached to it. Such example is host route through different device. It
is enough to use fib_del_ifaddr for the last address (any address
that is deleted), why to disable IP (and remove the other routes) if
we assume that the address is not used anymore on any device as
prefsrc?
2.2 leaks routes, the link routes remain after the last
address is deleted, in 2.4 they are deleted with fib_del_ifaddr before the
check for ifa_list==NULL but why this fib_disable_ip(...dev, 1) ...
> > 2. FIB never detects NETDEV_UNREGISTER because ip_ptr is already NULL
>
> See above.
unreachable code ...
> > 3. We better to clear nh->nh_dev on NETDEV_UNREGISTER, fatal for
> > multipath routes in 2.4 (problem known from some time ago)
>
> Oh, damn, I forgot about this our finding.
>
> Are you sure that the last chunk is enough to fix this?
Yes, nh_dev will be valid until dev->ifindex is valid.
The tests weeks ago show that it is enough. force=1 is the moment
when the device disappears (unregistered) but not if the above
problems remain. If not, I really don't know what will be the fix
for nh_dev, it should be separate function called only for
NETDEV_UNREGISTER which is not reachable for FIB ... deadlock :)
> Alexey
Regards
--
Julian Anastasov <ja@xxxxxx>
|