tools: display EndpointId in 'nfdc fib list'
Refs: #4816
Change-Id: Id656939d9595adbd8c96a78e9aedfdd8dda2a555
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 << "}";