diff --git a/zebra/rib.h b/zebra/rib.h
index 97a20af..d3a83c6 100644
--- a/zebra/rib.h
+++ b/zebra/rib.h
@@ -386,7 +386,9 @@
 extern int nexthop_has_fib_child(struct nexthop *);
 extern void rib_lookup_and_dump (struct prefix_ipv4 *);
 extern void rib_lookup_and_pushup (struct prefix_ipv4 *);
-extern void rib_dump (const char *, const struct prefix *, const struct rib *);
+#define rib_dump(prefix ,rib) _rib_dump(__func__, prefix, rib)
+extern void _rib_dump (const char *,
+		       union prefix46constptr, const struct rib *);
 extern int rib_lookup_ipv4_route (struct prefix_ipv4 *, union sockunion *);
 #define ZEBRA_RIB_LOOKUP_ERROR -1
 #define ZEBRA_RIB_FOUND_EXACT 0
diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c
index 5d175d8..90ed73d 100644
--- a/zebra/rt_socket.c
+++ b/zebra/rt_socket.c
@@ -160,7 +160,7 @@
              {
                zlog_debug ("%s: %s/%d: attention! gate not found for rib %p",
                  __func__, prefix_buf, p->prefixlen, rib);
-               rib_dump (__func__, (struct prefix_ipv4 *)p, rib);
+               rib_dump (p, rib);
              }
              else
                inet_ntop (AF_INET, &sin_gate.sin_addr, gate_buf, INET_ADDRSTRLEN);
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 6616f9a..8835ef3 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -1912,8 +1912,10 @@
  * question are passed as 1st and 2nd arguments.
  */
 
-void rib_dump (const char * func, const struct prefix * p, const struct rib * rib)
+void _rib_dump (const char * func,
+		union prefix46constptr pp, const struct rib * rib)
 {
+  const struct prefix *p = pp.p;
   char straddr[INET6_ADDRSTRLEN];
   struct nexthop *nexthop, *tnexthop;
   int recursing;
@@ -2009,7 +2011,7 @@
       (CHECK_FLAG (rib->status, RIB_ENTRY_REMOVED) ? "removed" : "NOT removed"),
       (CHECK_FLAG (rib->flags, ZEBRA_FLAG_SELECTED) ? "selected" : "NOT selected")
     );
-    rib_dump (__func__, (struct prefix *) p, rib);
+    rib_dump (p, rib);
   }
 }
 
@@ -2056,7 +2058,7 @@
         char buf[INET_ADDRSTRLEN];
         inet_ntop (rn->p.family, &p->prefix, buf, INET_ADDRSTRLEN);
         zlog_debug ("%s: freeing way for connected prefix %s/%d", __func__, buf, p->prefixlen);
-        rib_dump (__func__, &rn->p, rib);
+        rib_dump (&rn->p, rib);
       }
       rib_uninstall (rn, rib);
     }
@@ -2118,7 +2120,7 @@
   {
     zlog_debug ("%s: called rib_addnode (%p, %p) on new RIB entry",
       __func__, rn, rib);
-    rib_dump (__func__, (struct prefix *) p, rib);
+    rib_dump (p, rib);
   }
 
   /* Free implicit route.*/
@@ -2128,7 +2130,7 @@
     {
       zlog_debug ("%s: calling rib_delnode (%p, %p) on existing RIB entry",
         __func__, rn, same);
-      rib_dump (__func__, (struct prefix *) p, same);
+      rib_dump (p, same);
     }
     rib_delnode (rn, same);
   }
@@ -2706,7 +2708,7 @@
   {
     zlog_debug ("%s: called rib_addnode (%p, %p) on new RIB entry",
       __func__, rn, rib);
-    rib_dump (__func__, (struct prefix *) p, rib);
+    rib_dump (p, rib);
   }
 
   /* Free implicit route.*/
@@ -2716,7 +2718,7 @@
     {
       zlog_debug ("%s: calling rib_delnode (%p, %p) on existing RIB entry",
         __func__, rn, same);
-      rib_dump (__func__, (struct prefix *) p, same);
+      rib_dump (p, same);
     }
     rib_delnode (rn, same);
   }
