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);
}