Apply by doing:
	cd /usr/src
	patch -p0 < 007_kroute.patch

Then build and install ospfd and ripd.

	cd /usr/src/usr.sbin/ospfd
	make obj
	make cleandir
	make depend
	make
	make install
	cd /usr/src/usr.sbin/ripd
	make obj
	make cleandir
	make depend
	make
	make install

Index: usr.sbin/ospfd/kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/ospfd/kroute.c,v
retrieving revision 1.42
retrieving revision 1.42.2.1
diff -u -p -r1.42 -r1.42.2.1
--- usr.sbin/ospfd/kroute.c	25 Feb 2007 18:10:47 -0000	1.42
+++ usr.sbin/ospfd/kroute.c	30 Apr 2007 20:45:01 -0000	1.42.2.1
@@ -1,4 +1,4 @@
-/*	$OpenBSD: kroute.c,v 1.42 2007/02/25 18:10:47 deraadt Exp $ */
+/*	$OpenBSD: kroute.c,v 1.42.2.1 2007/04/30 20:45:01 ckuethe Exp $ */
 
 /*
  * Copyright (c) 2004 Esben Norby <norby@openbsd.org>
@@ -1089,13 +1089,13 @@ dispatch_rtmsg(void)
 		flags = F_KERNEL;
 		nexthop.s_addr = 0;
 
-		if (rtm->rtm_tableid != 0)
-			continue;
-
 		if (rtm->rtm_type == RTM_ADD || rtm->rtm_type == RTM_CHANGE ||
 		    rtm->rtm_type == RTM_DELETE) {
 			sa = (struct sockaddr *)(rtm + 1);
 			get_rtaddrs(rtm->rtm_addrs, sa, rti_info);
+
+			if (rtm->rtm_tableid != 0)
+				continue;
 
 			if (rtm->rtm_pid == kr_state.pid)	/* cause by us */
 				continue;
Index: usr.sbin/ripd/kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/ripd/kroute.c,v
retrieving revision 1.5
retrieving revision 1.5.2.1
diff -u -p -r1.5 -r1.5.2.1
--- usr.sbin/ripd/kroute.c	28 Nov 2006 19:21:15 -0000	1.5
+++ usr.sbin/ripd/kroute.c	30 Apr 2007 20:45:01 -0000	1.5.2.1
@@ -1,4 +1,4 @@
-/*	$OpenBSD: kroute.c,v 1.5 2006/11/28 19:21:15 reyk Exp $ */
+/*	$OpenBSD: kroute.c,v 1.5.2.1 2007/04/30 20:45:01 ckuethe Exp $ */
 
 /*
  * Copyright (c) 2004 Esben Norby <norby@openbsd.org>
@@ -997,13 +997,13 @@ dispatch_rtmsg(void)
 		flags = F_KERNEL;
 		nexthop.s_addr = 0;
 
-		if (rtm->rtm_tableid != 0)
-			continue;
-
 		if (rtm->rtm_type == RTM_ADD || rtm->rtm_type == RTM_CHANGE ||
 		    rtm->rtm_type == RTM_DELETE) {
 			sa = (struct sockaddr *)(rtm + 1);
 			get_rtaddrs(rtm->rtm_addrs, sa, rti_info);
+
+			if (rtm->rtm_tableid != 0)
+				continue;
 
 			if (rtm->rtm_pid == kr_state.pid)	/* cause by us */
 				continue;
