diff --git a/babeld/message.c b/babeld/message.c
index bfb1762..57d875f 100644
--- a/babeld/message.c
+++ b/babeld/message.c
@@ -854,7 +854,7 @@
 {
     babel_interface_nfo *babel_ifp = NULL;
     struct xroute *xroute;
-    struct route *route;
+    struct babel_route *route;
     const unsigned char *last_prefix = NULL;
     unsigned char last_plen = 0xFF;
     int i;
@@ -1004,7 +1004,7 @@
     if(ifp == NULL) {
       struct interface *ifp_aux;
       struct listnode *linklist_node = NULL;
-        struct route *route;
+        struct babel_route *route;
         FOR_ALL_INTERFACES(ifp_aux, linklist_node)
             send_update(ifp_aux, urgent, prefix, plen);
         if(prefix) {
@@ -1392,7 +1392,7 @@
                unsigned short seqno, const unsigned char *id)
 {
     struct xroute *xroute;
-    struct route *route;
+    struct babel_route *route;
     struct neighbour *successor = NULL;
 
     xroute = find_xroute(prefix, plen);
@@ -1438,7 +1438,7 @@
     if(!successor || successor == neigh) {
         /* We were about to forward a request to its requestor.  Try to
            find a different neighbour to forward the request to. */
-        struct route *other_route;
+        struct babel_route *other_route;
 
         other_route = find_best_route(prefix, plen, 0, neigh);
         if(other_route && route_metric(other_route) < INFINITY)
diff --git a/babeld/route.c b/babeld/route.c
index e0c9d04..a92018f 100644
--- a/babeld/route.c
+++ b/babeld/route.c
@@ -58,14 +58,14 @@
 #include "message.h"
 #include "resend.h"
 
-static void consider_route(struct route *route);
+static void consider_route(struct babel_route *route);
 
-struct route *routes = NULL;
+struct babel_route *routes = NULL;
 int numroutes = 0, maxroutes = 0;
 int kernel_metric = 0;
 int allow_duplicates = -1;
 
-struct route *
+struct babel_route *
 find_route(const unsigned char *prefix, unsigned char plen,
            struct neighbour *neigh, const unsigned char *nexthop)
 {
@@ -79,7 +79,7 @@
     return NULL;
 }
 
-struct route *
+struct babel_route *
 find_installed_route(const unsigned char *prefix, unsigned char plen)
 {
     int i;
@@ -91,7 +91,7 @@
 }
 
 void
-flush_route(struct route *route)
+flush_route(struct babel_route *route)
 {
     int i;
     struct source *src;
@@ -111,18 +111,18 @@
     src = route->src;
 
     if(i != numroutes - 1)
-        memcpy(routes + i, routes + numroutes - 1, sizeof(struct route));
+        memcpy(routes + i, routes + numroutes - 1, sizeof(struct babel_route));
     numroutes--;
-    VALGRIND_MAKE_MEM_UNDEFINED(routes + numroutes, sizeof(struct route));
+    VALGRIND_MAKE_MEM_UNDEFINED(routes + numroutes, sizeof(struct babel_route));
 
     if(numroutes == 0) {
         free(routes);
         routes = NULL;
         maxroutes = 0;
     } else if(maxroutes > 8 && numroutes < maxroutes / 4) {
-        struct route *new_routes;
+        struct babel_route *new_routes;
         int n = maxroutes / 2;
-        new_routes = realloc(routes, n * sizeof(struct route));
+        new_routes = realloc(routes, n * sizeof(struct babel_route));
         if(new_routes != NULL) {
             routes = new_routes;
             maxroutes = n;
@@ -171,7 +171,7 @@
 }
 
 void
-install_route(struct route *route)
+install_route(struct babel_route *route)
 {
     int rc;
 
@@ -196,7 +196,7 @@
 }
 
 void
-uninstall_route(struct route *route)
+uninstall_route(struct babel_route *route)
 {
     int rc;
 
@@ -218,7 +218,7 @@
    must be the same. */
 
 static void
-switch_routes(struct route *old, struct route *new)
+switch_routes(struct babel_route *old, struct babel_route *new)
 {
     int rc;
 
@@ -249,7 +249,7 @@
 }
 
 static void
-change_route_metric(struct route *route, unsigned newmetric)
+change_route_metric(struct babel_route *route, unsigned newmetric)
 {
     int old, new;
 
@@ -276,26 +276,26 @@
 }
 
 static void
-retract_route(struct route *route)
+retract_route(struct babel_route *route)
 {
     route->refmetric = INFINITY;
     change_route_metric(route, INFINITY);
 }
 
 int
-route_feasible(struct route *route)
+route_feasible(struct babel_route *route)
 {
     return update_feasible(route->src, route->seqno, route->refmetric);
 }
 
 int
-route_old(struct route *route)
+route_old(struct babel_route *route)
 {
     return route->time < babel_now.tv_sec - route->hold_time * 7 / 8;
 }
 
 int
-route_expired(struct route *route)
+route_expired(struct babel_route *route)
 {
     return route->time < babel_now.tv_sec - route->hold_time;
 }
@@ -320,11 +320,11 @@
 }
 
 /* This returns the feasible route with the smallest metric. */
-struct route *
+struct babel_route *
 find_best_route(const unsigned char *prefix, unsigned char plen, int feasible,
                 struct neighbour *exclude)
 {
-    struct route *route = NULL;
+    struct babel_route *route = NULL;
     int i;
 
     for(i = 0; i < numroutes; i++) {
@@ -344,7 +344,7 @@
 }
 
 void
-update_route_metric(struct route *route)
+update_route_metric(struct babel_route *route)
 {
     int oldmetric = route_metric(route);
 
@@ -404,14 +404,14 @@
 }
 
 /* This is called whenever we receive an update. */
-struct route *
+struct babel_route *
 update_route(const unsigned char *router_id,
              const unsigned char *prefix, unsigned char plen,
              unsigned short seqno, unsigned short refmetric,
              unsigned short interval,
              struct neighbour *neigh, const unsigned char *nexthop)
 {
-    struct route *route;
+    struct babel_route *route;
     struct source *src;
     int metric, feasible;
     int add_metric;
@@ -488,11 +488,11 @@
             return NULL;
         }
         if(numroutes >= maxroutes) {
-            struct route *new_routes;
+            struct babel_route *new_routes;
             int n = maxroutes < 1 ? 8 : 2 * maxroutes;
             new_routes = routes == NULL ?
-                malloc(n * sizeof(struct route)) :
-                realloc(routes, n * sizeof(struct route));
+                malloc(n * sizeof(struct babel_route)) :
+                realloc(routes, n * sizeof(struct babel_route));
             if(new_routes == NULL)
                 return NULL;
             maxroutes = n;
@@ -521,7 +521,7 @@
                         unsigned short seqno, unsigned short metric,
                         struct source *src)
 {
-    struct route *route = find_installed_route(src->prefix, src->plen);
+    struct babel_route *route = find_installed_route(src->prefix, src->plen);
 
     if(seqno_minus(src->seqno, seqno) > 100) {
         /* Probably a source that lost its seqno.  Let it time-out. */
@@ -539,9 +539,9 @@
 
 /* This takes a feasible route and decides whether to install it. */
 static void
-consider_route(struct route *route)
+consider_route(struct babel_route *route)
 {
-    struct route *installed;
+    struct babel_route *installed;
     struct xroute *xroute;
 
     if(route->installed)
@@ -606,7 +606,7 @@
 }
 
 void
-send_triggered_update(struct route *route, struct source *oldsrc,
+send_triggered_update(struct babel_route *route, struct source *oldsrc,
                       unsigned oldmetric)
 {
     unsigned newmetric, diff;
@@ -665,12 +665,12 @@
 /* A route has just changed.  Decide whether to switch to a different route or
    send an update. */
 void
-route_changed(struct route *route,
+route_changed(struct babel_route *route,
               struct source *oldsrc, unsigned short oldmetric)
 {
     if(route->installed) {
         if(route_metric(route) > oldmetric) {
-            struct route *better_route;
+            struct babel_route *better_route;
             better_route =
                 find_best_route(route->src->prefix, route->src->plen, 1, NULL);
             if(better_route &&
@@ -692,7 +692,7 @@
 void
 route_lost(struct source *src, unsigned oldmetric)
 {
-    struct route *new_route;
+    struct babel_route *new_route;
     new_route = find_best_route(src->prefix, src->plen, 1, NULL);
     if(new_route) {
         consider_route(new_route);
@@ -715,7 +715,7 @@
 
     i = 0;
     while(i < numroutes) {
-        struct route *route = &routes[i];
+        struct babel_route *route = &routes[i];
 
         if(route->time > babel_now.tv_sec || /* clock stepped */
            route_old(route)) {
@@ -744,7 +744,7 @@
     }
 }
 
-struct route *
+struct babel_route *
 babel_route_get_by_source(struct source *src)
 {
     int i;
diff --git a/babeld/route.h b/babeld/route.h
index e36f6c3..dbb205d 100644
--- a/babeld/route.h
+++ b/babeld/route.h
@@ -40,7 +40,7 @@
 #include "babel_interface.h"
 #include "source.h"
 
-struct route {
+struct babel_route {
     struct source *src;
     unsigned short metric;
     unsigned short refmetric;
@@ -53,38 +53,38 @@
 };
 
 static inline int
-route_metric(const struct route *route)
+route_metric(const struct babel_route *route)
 {
     return route->metric;
 }
 
-extern struct route *routes;
+extern struct babel_route *routes;
 extern int numroutes, maxroutes;
 extern int kernel_metric, allow_duplicates;
 
-struct route *find_route(const unsigned char *prefix, unsigned char plen,
+struct babel_route *find_route(const unsigned char *prefix, unsigned char plen,
                          struct neighbour *neigh, const unsigned char *nexthop);
-struct route *find_installed_route(const unsigned char *prefix,
+struct babel_route *find_installed_route(const unsigned char *prefix,
                                    unsigned char plen);
-void flush_route(struct route *route);
+void flush_route(struct babel_route *route);
 void flush_neighbour_routes(struct neighbour *neigh);
 void flush_interface_routes(struct interface *ifp, int v4only);
-void install_route(struct route *route);
-void uninstall_route(struct route *route);
-void switch_route(struct route *old, struct route *new);
-int route_feasible(struct route *route);
-int route_old(struct route *route);
-int route_expired(struct route *route);
+void install_route(struct babel_route *route);
+void uninstall_route(struct babel_route *route);
+void switch_route(struct babel_route *old, struct babel_route *new);
+int route_feasible(struct babel_route *route);
+int route_old(struct babel_route *route);
+int route_expired(struct babel_route *route);
 int update_feasible(struct source *src,
                     unsigned short seqno, unsigned short refmetric);
-struct route *find_best_route(const unsigned char *prefix, unsigned char plen,
+struct babel_route *find_best_route(const unsigned char *prefix, unsigned char plen,
                               int feasible, struct neighbour *exclude);
-struct route *install_best_route(const unsigned char prefix[16],
+struct babel_route *install_best_route(const unsigned char prefix[16],
                                  unsigned char plen);
 void update_neighbour_metric(struct neighbour *neigh, int change);
 void update_interface_metric(struct interface *ifp);
-void update_route_metric(struct route *route);
-struct route *update_route(const unsigned char *a,
+void update_route_metric(struct babel_route *route);
+struct babel_route *update_route(const unsigned char *a,
                            const unsigned char *p, unsigned char plen,
                            unsigned short seqno, unsigned short refmetric,
                            unsigned short interval, struct neighbour *neigh,
@@ -93,12 +93,12 @@
 void send_unfeasible_request(struct neighbour *neigh, int force,
                              unsigned short seqno, unsigned short metric,
                              struct source *src);
-void send_triggered_update(struct route *route,
+void send_triggered_update(struct babel_route *route,
                            struct source *oldsrc, unsigned oldmetric);
-void route_changed(struct route *route,
+void route_changed(struct babel_route *route,
                    struct source *oldsrc, unsigned short oldmetric);
 void route_lost(struct source *src, unsigned oldmetric);
 void expire_routes(void);
 
 void babel_uninstall_all_routes(void);
-struct route *babel_route_get_by_source(struct source *src);
+struct babel_route *babel_route_get_by_source(struct source *src);
diff --git a/babeld/xroute.c b/babeld/xroute.c
index 42f83d0..7b09cb8 100644
--- a/babeld/xroute.c
+++ b/babeld/xroute.c
@@ -210,7 +210,7 @@
     if(metric < INFINITY) {
         rc = add_xroute(prefix, plen, metric, ifindex, proto);
         if(rc > 0) {
-            struct route *route;
+            struct babel_route *route;
             route = find_installed_route(prefix, plen);
             if(route) {
                 if(allow_duplicates < 0 ||
