Hi,

In ip_slowtimo() we flush the ipforward_rt cache every 500 ms.  For
IPv6 we have similar code but it is #if 0.  In our test environment,
where we only communicate with single machines, this resulted in
wrong local address checks and packet forwarding.  I see no reason
for this useful route cache flush to be an IPv4 only feature.

ok to remove the #if 0?

bluhm


Index: netinet6/frag6.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/frag6.c,v
retrieving revision 1.38
diff -u -p -r1.38 frag6.c
--- netinet6/frag6.c    9 Jan 2012 14:47:53 -0000       1.38
+++ netinet6/frag6.c    9 Jan 2012 23:01:48 -0000
@@ -620,6 +620,7 @@ frag6_slowtimo(void)
 {
        struct ip6q *q6, *nq6;
        int s = splsoftnet();
+       extern struct route_in6 ip6_forward_rt;
 
        IP6Q_LOCK();
        TAILQ_FOREACH_SAFE(q6, &frag6_queue, ip6q_queue, nq6)
@@ -642,7 +643,6 @@ frag6_slowtimo(void)
        }
        IP6Q_UNLOCK();
 
-#if 0
        /*
         * Routing changes might produce a better route than we last used;
         * make sure we notice eventually, even if forwarding only for one
@@ -652,7 +652,6 @@ frag6_slowtimo(void)
                RTFREE(ip6_forward_rt.ro_rt);
                ip6_forward_rt.ro_rt = 0;
        }
-#endif
 
        splx(s);
 }

Reply via email to