Apply by doing:
	cd /usr/src
	patch -p0 < 004_route.patch

And then rebuild your kernel.

Index: sys/net/route.c
===================================================================
RCS file: /cvs/src/sys/net/route.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- sys/net/route.c	2000/03/23 16:37:52	1.18
+++ sys/net/route.c	2000/05/21 22:19:07	1.19
@@ -1,4 +1,4 @@
-/*	$OpenBSD: route.c,v 1.18 2000/03/23 16:37:52 art Exp $	*/
+/*	$OpenBSD: route.c,v 1.19 2000/05/21 22:19:07 provos Exp $	*/
 /*	$NetBSD: route.c,v 1.14 1996/02/13 22:00:46 christos Exp $	*/
 
 /*
@@ -343,7 +343,7 @@
 		goto done;
 	/*
 	 * Create a new entry if we just got back a wildcard entry
-	 * or the the lookup failed.  This is necessary for hosts
+	 * or the lookup failed.  This is necessary for hosts
 	 * which use routing redirects generated by smart gateways
 	 * to dynamically build the routing tables.
 	 */
@@ -498,11 +498,11 @@
 		if (rn->rn_flags & (RNF_ACTIVE | RNF_ROOT))
 			panic ("rtrequest delete");
 		rt = (struct rtentry *)rn;
-		rt->rt_flags &= ~RTF_UP;
 		if (rt->rt_gwroute) {
 			rt = rt->rt_gwroute; RTFREE(rt);
 			(rt = (struct rtentry *)rn)->rt_gwroute = NULL;
 		}
+		rt->rt_flags &= ~RTF_UP;
 		if ((ifa = rt->rt_ifa) && ifa->ifa_rtrequest)
 			ifa->ifa_rtrequest(RTM_DELETE, rt, SA(NULL));
 		rttrash++;
