diff --git a/lib/zclient.c b/lib/zclient.c
index ebf685a..bb7747f 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -317,18 +317,24 @@
   /* Nexthop, ifindex, distance and metric information. */
   if (CHECK_FLAG (api->message, ZAPI_MESSAGE_NEXTHOP))
     {
-	stream_putc (s, api->nexthop_num + api->ifindex_num);
-
+      if (CHECK_FLAG (api->flags, ZEBRA_FLAG_BLACKHOLE))
+        {
+          stream_putc (s, 1);
+          stream_putc (s, ZEBRA_NEXTHOP_BLACKHOLE);
+        }
+      else
+        stream_putc (s, api->nexthop_num + api->ifindex_num);
+        
       for (i = 0; i < api->nexthop_num; i++)
-	{
-	  stream_putc (s, ZEBRA_NEXTHOP_IPV4);
-	  stream_put_in_addr (s, api->nexthop[i]);
-	}
+        {
+          stream_putc (s, ZEBRA_NEXTHOP_IPV4);
+          stream_put_in_addr (s, api->nexthop[i]);
+        }
       for (i = 0; i < api->ifindex_num; i++)
-	{
-	  stream_putc (s, ZEBRA_NEXTHOP_IFINDEX);
-	  stream_putl (s, api->ifindex[i]);
-	}
+        {
+          stream_putc (s, ZEBRA_NEXTHOP_IFINDEX);
+          stream_putl (s, api->ifindex[i]);
+        }
     }
 
   if (CHECK_FLAG (api->message, ZAPI_MESSAGE_DISTANCE))
@@ -371,18 +377,24 @@
   /* Nexthop, ifindex, distance and metric information. */
   if (CHECK_FLAG (api->message, ZAPI_MESSAGE_NEXTHOP))
     {
-	stream_putc (s, api->nexthop_num + api->ifindex_num);
+      if (CHECK_FLAG (api->flags, ZEBRA_FLAG_BLACKHOLE))
+        {
+          stream_putc (s, 1);
+          stream_putc (s, ZEBRA_NEXTHOP_BLACKHOLE);
+        }
+      else
+        stream_putc (s, api->nexthop_num + api->ifindex_num);
 
       for (i = 0; i < api->nexthop_num; i++)
-	{
-	  stream_putc (s, ZEBRA_NEXTHOP_IPV4);
-	  stream_put_in_addr (s, api->nexthop[i]);
-	}
+        {
+          stream_putc (s, ZEBRA_NEXTHOP_IPV4);
+          stream_put_in_addr (s, api->nexthop[i]);
+        }
       for (i = 0; i < api->ifindex_num; i++)
-	{
-	  stream_putc (s, ZEBRA_NEXTHOP_IFINDEX);
-	  stream_putl (s, api->ifindex[i]);
-	}
+        {
+          stream_putc (s, ZEBRA_NEXTHOP_IFINDEX);
+          stream_putl (s, api->ifindex[i]);
+        }
     }
 
   if (CHECK_FLAG (api->message, ZAPI_MESSAGE_DISTANCE))
diff --git a/lib/zebra.h b/lib/zebra.h
index baad6d6..7b1e801 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -271,6 +271,7 @@
 #define ZEBRA_NEXTHOP_IPV6               6
 #define ZEBRA_NEXTHOP_IPV6_IFINDEX       7
 #define ZEBRA_NEXTHOP_IPV6_IFNAME        8
+#define ZEBRA_NEXTHOP_BLACKHOLE          9
 
 #ifndef INADDR_LOOPBACK
 #define	INADDR_LOOPBACK	0x7f000001	/* Internet address 127.0.0.1.  */
