diff --git a/babeld/kernel.h b/babeld/kernel.h
index d9d650d..e8c8f9b 100644
--- a/babeld/kernel.h
+++ b/babeld/kernel.h
@@ -55,28 +55,15 @@
 #define ROUTE_ADD 1
 #define ROUTE_MODIFY 2
 
-#define CHANGE_LINK  (1 << 0)
-#define CHANGE_ROUTE (1 << 1)
-#define CHANGE_ADDR  (1 << 2)
-
 extern int export_table, import_table;
 
-int kernel_setup(int setup);
-int kernel_setup_socket(int setup);
-int kernel_setup_interface(int setup, struct interface *interface);
 int kernel_interface_operational(struct interface *interface);
-int kernel_interface_ipv4(struct interface *interface,
-                          unsigned char *addr_r);
 int kernel_interface_mtu(struct interface *interface);
 int kernel_interface_wireless(struct interface *interface);
 int kernel_route(int operation, const unsigned char *dest, unsigned short plen,
                  const unsigned char *gate, int ifindex, unsigned int metric,
                  const unsigned char *newgate, int newifindex,
                  unsigned int newmetric);
-int kernel_routes(struct kernel_route *routes, int maxroutes);
-int kernel_callback(int (*fn)(int, void*), void *closure);
-int kernel_addresses(struct interface *interface, int ll,
-                     struct kernel_route *routes, int maxroutes);
 int if_eui64(char *ifname, int ifindex, unsigned char *eui);
 int gettime(struct timeval *tv);
 int read_random_bytes(void *buf, size_t len);
diff --git a/babeld/kernel_zebra.c b/babeld/kernel_zebra.c
index 0fecb52..82f03e4 100644
--- a/babeld/kernel_zebra.c
+++ b/babeld/kernel_zebra.c
@@ -80,28 +80,6 @@
                        const unsigned char *newgate, int newifindex,
                        unsigned int newmetric);
 
-
-int export_table = -1, import_table = -1; /* just for compatibility */
-
-int
-kernel_setup(int setup)
-{
-    return 0;
-}
-
-/* get a connection with zebra client, at all costs */
-int
-kernel_setup_socket(int setup)
-{
-    return -1;
-}
-
-int
-kernel_setup_interface(int setup, struct interface *interface)
-{
-    return 1;
-}
-
 int
 kernel_interface_operational(struct interface *interface)
 {
@@ -109,13 +87,6 @@
 }
 
 int
-kernel_interface_ipv4(struct interface *interface, unsigned char *addr_r)
-{
-    assert(0); /* function not used */
-    return -1;
-}
-
-int
 kernel_interface_mtu(struct interface *interface)
 {
     return MIN(interface->mtu, interface->mtu6);
@@ -127,10 +98,6 @@
     return 0;
 }
 
-extern int
-zapi_ipv6_route (u_char cmd, struct zclient *zclient,
-                 struct prefix_ipv6 *p, struct zapi_ipv6 *api);
-
 int
 kernel_route(int operation, const unsigned char *pref, unsigned short plen,
              const unsigned char *gate, int ifindex, unsigned int metric,
@@ -401,33 +368,6 @@
 }
 
 int
-kernel_routes(struct kernel_route *routes, int maxroutes)
-{
-    fprintf(stderr, "\tkernel_routes  --- not implemented\n");
-    return 0;
-}
-
-int
-kernel_callback(int (*fn)(int, void*), void *closure)
-{
-    struct thread thread;
-    fprintf(stderr, "\tkernel_callback\n");
-    /* do a little work on threads */
-    if (thread_fetch(master, &thread) != NULL) {
-        thread_call (&thread);
-    }
-    return 0;
-}
-
-int
-kernel_addresses(struct interface *interface, int ll,
-                 struct kernel_route *routes, int maxroutes)
-{
-    fprintf(stderr, "\tkernel_addresses  --- not implemented\n");
-    return 0;
-}
-
-int
 if_eui64(char *ifname, int ifindex, unsigned char *eui)
 {
     struct interface *ifp = if_lookup_by_index(ifindex);
