diff --git a/docs/_static/nfd-status.xsd b/docs/_static/nfd-status.xsd
index 0052162..8407a86 100644
--- a/docs/_static/nfd-status.xsd
+++ b/docs/_static/nfd-status.xsd
@@ -100,6 +100,7 @@
 <xs:complexType name="nextHopType">
   <xs:sequence>
     <xs:element type="xs:nonNegativeInteger" name="faceId"/>
+    <xs:element type="xs:nonNegativeInteger" name="endpointId"/>
     <xs:element type="xs:nonNegativeInteger" name="cost"/>
   </xs:sequence>
 </xs:complexType>
diff --git a/tests/tools/nfdc/fib-module.t.cpp b/tests/tools/nfdc/fib-module.t.cpp
index 812c32c..0897c01 100644
--- a/tests/tools/nfdc/fib-module.t.cpp
+++ b/tests/tools/nfdc/fib-module.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -42,16 +42,24 @@
       <nextHops>
         <nextHop>
           <faceId>262</faceId>
+          <endpointId>1</endpointId>
           <cost>9</cost>
         </nextHop>
         <nextHop>
           <faceId>272</faceId>
+          <endpointId>2</endpointId>
           <cost>50</cost>
         </nextHop>
         <nextHop>
           <faceId>274</faceId>
+          <endpointId>3</endpointId>
           <cost>78</cost>
         </nextHop>
+        <nextHop>
+          <faceId>275</faceId>
+          <endpointId>0</endpointId>
+          <cost>80</cost>
+        </nextHop>
       </nextHops>
     </fibEntry>
     <fibEntry>
@@ -59,10 +67,12 @@
       <nextHops>
         <nextHop>
           <faceId>1</faceId>
+          <endpointId>0</endpointId>
           <cost>0</cost>
         </nextHop>
         <nextHop>
           <faceId>274</faceId>
+          <endpointId>5</endpointId>
           <cost>0</cost>
         </nextHop>
       </nextHops>
@@ -72,8 +82,8 @@
 
 const std::string STATUS_TEXT = std::string(R"TEXT(
 FIB:
-  / nexthops={faceid=262 (cost=9), faceid=272 (cost=50), faceid=274 (cost=78)}
-  /localhost/nfd nexthops={faceid=1 (cost=0), faceid=274 (cost=0)}
+  / nexthops={face=262:1 (cost=9), face=272:2 (cost=50), face=274:3 (cost=78), face=275 (cost=80)}
+  /localhost/nfd nexthops={face=1 (cost=0), face=274:5 (cost=0)}
 )TEXT").substr(1);
 
 BOOST_AUTO_TEST_CASE(Status)
@@ -81,16 +91,16 @@
   this->fetchStatus();
   FibEntry payload1;
   payload1.setPrefix("/")
-          .addNextHopRecord(NextHopRecord().setFaceId(262).setCost(9))
-          .addNextHopRecord(NextHopRecord().setFaceId(272).setCost(50))
-          .addNextHopRecord(NextHopRecord().setFaceId(274).setCost(78));
+          .addNextHopRecord(NextHopRecord().setFaceId(262).setEndpointId(1).setCost(9))
+          .addNextHopRecord(NextHopRecord().setFaceId(272).setEndpointId(2).setCost(50))
+          .addNextHopRecord(NextHopRecord().setFaceId(274).setEndpointId(3).setCost(78))
+          .addNextHopRecord(NextHopRecord().setFaceId(275).setCost(80));
   FibEntry payload2;
   payload2.setPrefix("/localhost/nfd")
           .addNextHopRecord(NextHopRecord().setFaceId(1).setCost(0))
-          .addNextHopRecord(NextHopRecord().setFaceId(274).setCost(0));
+          .addNextHopRecord(NextHopRecord().setFaceId(274).setEndpointId(5).setCost(0));
   this->sendDataset("/localhost/nfd/fib/list", payload1, payload2);
   this->prepareStatusOutput();
-
   BOOST_CHECK(statusXml.is_equal(STATUS_XML));
   BOOST_CHECK(statusText.is_equal(STATUS_TEXT));
 }
diff --git a/tools/nfd-status-http-server-files/nfd-status.xsl b/tools/nfd-status-http-server-files/nfd-status.xsl
index d2015b1..f6cc338 100644
--- a/tools/nfd-status-http-server-files/nfd-status.xsl
+++ b/tools/nfd-status-http-server-files/nfd-status.xsl
@@ -252,6 +252,12 @@
               </xsl:for-each>
             </tr>
             <tr>
+              <th>EndpointId</th>
+              <xsl:for-each select="nfd:nextHops/nfd:nextHop">
+                <td><xsl:value-of select="nfd:endpointId"/></td>
+              </xsl:for-each>
+            </tr>
+            <tr>
               <th>Cost</th>
               <xsl:for-each select="nfd:nextHops/nfd:nextHop">
                 <td><xsl:value-of select="nfd:cost"/></td>
diff --git a/tools/nfdc/fib-module.cpp b/tools/nfdc/fib-module.cpp
index ef2841e..76af0aa 100644
--- a/tools/nfdc/fib-module.cpp
+++ b/tools/nfdc/fib-module.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2018,  Regents of the University of California,
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -65,6 +65,7 @@
   for (const NextHopRecord& nh : item.getNextHopRecords()) {
     os << "<nextHop>"
        << "<faceId>" << nh.getFaceId() << "</faceId>"
+       << "<endpointId>" << (nh.hasEndpointId() ? nh.getEndpointId() : 0) << "</endpointId>"
        << "<cost>" << nh.getCost() << "</cost>"
        << "</nextHop>";
   }
@@ -90,8 +91,13 @@
   text::Separator sep(", ");
   for (const NextHopRecord& nh : item.getNextHopRecords()) {
     os << sep
-       << "faceid=" << nh.getFaceId()
-       << " (cost=" << nh.getCost() << ")";
+       << "face=" << nh.getFaceId();
+
+    if (nh.hasEndpointId() && nh.getEndpointId() != 0) {
+      os << ":" << nh.getEndpointId();
+    }
+
+    os << " (cost=" << nh.getCost() << ")";
   }
 
   os << "}";
