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