magic routes: final fix

A.N.Kuznetsov (kuznet@ms2.inr.ac.ru)
Wed, 22 May 1996 20:55:21 +0400 (MSD)


Hello!

I hope this patch will resolve the problems with magic
routes, that were present since 1.3.99.
Note that my previous fix (Subj: "route+arp FAQ..."),
integrated into 1.99.7 was not complete.

I'd like ask for people who suffered from magic routes
apply this fix to 1.99.7 (or 5,6) and test it.

Alexey Kuznetsov.

--- ../../../linux/net/ipv4/route.c Sat May 18 20:06:56 1996
+++ route.c Wed May 22 20:36:38 1996
@@ -604,7 +604,8 @@
* but less metric. We'll delete it
* after instantiation of new route.
*/
- if (f1->fib_info->fib_gateway == gw)
+ if (f1->fib_info->fib_gateway == gw &&
+ (gw || f1->fib_info->fib_dev == dev))
dup_fp = fp;
fp = &f1->fib_next;
}
@@ -643,7 +644,8 @@

while ((f1 = *fp) != NULL && f1->fib_dst == dst)
{
- if (f1->fib_info->fib_gateway == gw)
+ if (f1->fib_info->fib_gateway == gw &&
+ (gw || f1->fib_info->fib_dev == dev))
{
cli();
*fp = f1->fib_next;
@@ -1712,13 +1714,8 @@

void ip_rt_update(int event, struct device *dev)
{
-/*
- * This causes too much grief to do now.
- */
-#ifdef COMING_IN_2_1
if (event == NETDEV_UP)
rt_add(RTF_HOST|RTF_UP, dev->pa_addr, ~0, 0, dev, 0, 0, 0, 0);
else if (event == NETDEV_DOWN)
rt_del(dev->pa_addr, ~0, dev, 0, RTF_HOST|RTF_UP, 0);
-#endif
}