commit 6c51ea42e1c2e68cf83385e9f2665c3941d98657
Author: Sergey Popovich <popovich_sergei@mail.ru>
Date:   Fri Oct 4 11:45:31 2013 +0300

    Remove special handling of KRT_SRC_KERNEL routes
    
    BIRD mark routes with RTPROTO_KERNEL ("proto kernel" in ip-route(8)
    terms) on Linux with KRT_SRC_KERNEL flag and any route marked as
    such should be ignored by kernel syncer as described with
    comment in sysdep/unix/krt.h and done in krt_got_route() at
    sysdep/unix/krt.c.
    
    Therefore prior to this patch it is not possible to learn
    routes with RTPROT_KERNEL on Linux even with "learn on" and
    "device routes yes" configuration options.

diff --git a/sysdep/linux/netlink.c b/sysdep/linux/netlink.c
index b6c2a75..9af6f0e 100644
--- a/sysdep/linux/netlink.c
+++ b/sysdep/linux/netlink.c
@@ -786,16 +786,13 @@ nl_parse_route(struct nlmsghdr *h, int scan)
       src = KRT_SRC_REDIRECT;
       break;
 
-    case RTPROT_KERNEL:
-      src = KRT_SRC_KERNEL;
-      return;
-
     case RTPROT_BIRD:
       if (!scan)
 	SKIP("echo\n");
       src = KRT_SRC_BIRD;
       break;
 
+    case RTPROT_KERNEL:
     case RTPROT_BOOT:
     default:
       src = KRT_SRC_ALIEN;
