blob: ada37d0f8c2df95d28bb7c0502e23607f89a43c7 [file] [log] [blame]
Chengyu Fan45d1a762014-07-08 14:21:32 -06001<xsl:stylesheet version="1.0"
Davide Pesaventod9c520b2018-02-24 14:49:14 -05002 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:nfd="ndn:/localhost/nfd/status/1">
Davide Pesavento9e5b8af2018-02-24 22:03:02 -05004<xsl:output method="html" encoding="UTF-8" doctype-system="about:legacy-compat"/>
Chengyu Fan45d1a762014-07-08 14:21:32 -06005
6<xsl:template match="/">
7 <html>
8 <head>
Davide Pesaventod9c520b2018-02-24 14:49:14 -05009 <title>NFD Status</title>
10 <link rel="stylesheet" type="text/css" href="style.css" />
Chengyu Fan45d1a762014-07-08 14:21:32 -060011 </head>
12 <body>
Alexander Afanasyev8a093762014-07-16 18:43:09 -070013 <header>
14 <h1>NFD Status</h1>
15 </header>
16 <article>
17 <div id="content">
18 <xsl:apply-templates/>
19 </div>
20 </article>
21 <footer>
22 <xsl:variable name="version">
23 <xsl:apply-templates select="nfd:nfdStatus/nfd:generalStatus/nfd:version"/>
24 </xsl:variable>
Alexander Afanasyev01bbd092017-08-14 23:56:19 +000025 <span class="grey">Powered by </span><a target="_blank" href="https://named-data.net/doc/NFD/"><span class="green">NFD version <xsl:value-of select="$version"/></span></a><span class="grey">.</span>
Alexander Afanasyev8a093762014-07-16 18:43:09 -070026 </footer>
Chengyu Fan45d1a762014-07-08 14:21:32 -060027 </body>
28 </html>
29</xsl:template>
30
Alexander Afanasyev8a093762014-07-16 18:43:09 -070031<xsl:template name="formatDate">
32 <xsl:param name="date" />
33 <xsl:value-of select="substring($date, 0, 11)"/>&#160;<xsl:value-of select="substring($date, 12, 8)"/>
34</xsl:template>
35
36<xsl:template name="formatDuration">
37 <xsl:param name="duration" />
Eric Newberryde332452018-01-30 11:45:32 -070038 <xsl:variable name="milliseconds">
39 <xsl:choose>
40 <xsl:when test="contains($duration, '.')">
41 <xsl:value-of select="substring($duration, string-length($duration)-4, 3)" />
42 </xsl:when>
43 <xsl:otherwise>
44 0
45 </xsl:otherwise>
46 </xsl:choose>
47 </xsl:variable>
48 <xsl:variable name="seconds">
49 <xsl:choose>
50 <xsl:when test="contains($duration, '.')">
51 <xsl:value-of select="substring($duration, 3, string-length($duration)-7)" />
52 </xsl:when>
53 <xsl:otherwise>
54 <xsl:value-of select="substring($duration, 3, string-length($duration)-3)" />
55 </xsl:otherwise>
56 </xsl:choose>
57 </xsl:variable>
Chengyu Fana55663d2014-08-13 20:31:03 -060058 <xsl:variable name="days"><xsl:value-of select="floor($seconds div 86400)" /></xsl:variable>
59 <xsl:variable name="hours"><xsl:value-of select="floor($seconds div 3600)" /></xsl:variable>
60 <xsl:variable name="minutes"><xsl:value-of select="floor($seconds div 60)" /></xsl:variable>
Alexander Afanasyev8a093762014-07-16 18:43:09 -070061 <xsl:choose>
Chengyu Fana55663d2014-08-13 20:31:03 -060062 <xsl:when test="$days = 1">
63 <xsl:value-of select="$days"/> day
64 </xsl:when>
65 <xsl:when test="$days > 1">
Alexander Afanasyev8a093762014-07-16 18:43:09 -070066 <xsl:value-of select="$days"/> days
67 </xsl:when>
Chengyu Fana55663d2014-08-13 20:31:03 -060068 <xsl:when test="$hours = 1">
69 <xsl:value-of select="$hours"/> hour
70 </xsl:when>
71 <xsl:when test="$hours > 1">
Alexander Afanasyev8a093762014-07-16 18:43:09 -070072 <xsl:value-of select="$hours"/> hours
73 </xsl:when>
Chengyu Fana55663d2014-08-13 20:31:03 -060074 <xsl:when test="$minutes = 1">
75 <xsl:value-of select="$minutes"/> minute
76 </xsl:when>
77 <xsl:when test="$minutes > 1">
Alexander Afanasyev8a093762014-07-16 18:43:09 -070078 <xsl:value-of select="$minutes"/> minutes
79 </xsl:when>
Chengyu Fana55663d2014-08-13 20:31:03 -060080 <xsl:when test="$seconds = 1">
81 <xsl:value-of select="$seconds"/> second
82 </xsl:when>
Alexander Afanasyev8a093762014-07-16 18:43:09 -070083 <xsl:otherwise>
84 <xsl:value-of select="$seconds"/> seconds
85 </xsl:otherwise>
Eric Newberryde332452018-01-30 11:45:32 -070086 <xsl:when test="$milliseconds > 1">
87 <xsl:value-of select="$milliseconds"/> milliseconds
88 </xsl:when>
89 <xsl:when test="$milliseconds = 1">
90 <xsl:value-of select="$milliseconds"/> millisecond
91 </xsl:when>
Alexander Afanasyev8a093762014-07-16 18:43:09 -070092 </xsl:choose>
Alexander Afanasyev8a093762014-07-16 18:43:09 -070093</xsl:template>
94
Chengyu Fan45d1a762014-07-08 14:21:32 -060095<xsl:template match="nfd:generalStatus">
Davide Pesavento9e5b8af2018-02-24 22:03:02 -050096 <h2>General Status</h2>
Alexander Afanasyev8a093762014-07-16 18:43:09 -070097 <table class="item-list">
98 <thead>
99 <tr>
100 <th>Version</th>
101 <th>Start time</th>
102 <th>Current time</th>
103 <th>Uptime</th>
104 <th>NameTree Entries</th>
105 <th>FIB entries</th>
106 <th>PIT entries</th>
107 <th>Measurements entries</th>
108 <th>CS entries</th>
109 <th>In Interests</th>
110 <th>Out Interests</th>
111 <th>In Data</th>
112 <th>Out Data</th>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700113 <th>In Nacks</th>
114 <th>Out Nacks</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700115 </tr>
116 </thead>
117 <tbody>
118 <tr class="center">
Hila Ben Abraham2ef99572014-12-02 02:45:51 -0600119 <td><xsl:value-of select="nfd:version"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700120 <td><xsl:call-template name="formatDate"><xsl:with-param name="date" select="nfd:startTime" /></xsl:call-template></td>
121 <td><xsl:call-template name="formatDate"><xsl:with-param name="date" select="nfd:currentTime" /></xsl:call-template></td>
122 <td><xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:uptime" /></xsl:call-template></td>
123 <td><xsl:value-of select="nfd:nNameTreeEntries"/></td>
124 <td><xsl:value-of select="nfd:nFibEntries"/></td>
125 <td><xsl:value-of select="nfd:nPitEntries"/></td>
126 <td><xsl:value-of select="nfd:nMeasurementsEntries"/></td>
127 <td><xsl:value-of select="nfd:nCsEntries"/></td>
128 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nInterests"/></td>
129 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000130 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nData"/></td>
131 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700132 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nNacks"/></td>
133 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nNacks"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700134 </tr>
135 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600136 </table>
137</xsl:template>
138
139<xsl:template match="nfd:channels">
140 <h2>Channels</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500141 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700142 <thead>
143 <tr>
144 <th>Channel URI</th>
145 </tr>
146 </thead>
147 <tbody>
148 <xsl:for-each select="nfd:channel">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500149 <tr>
150 <td><xsl:value-of select="nfd:localUri"/></td>
151 </tr>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700152 </xsl:for-each>
153 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600154 </table>
155</xsl:template>
156
157<xsl:template match="nfd:faces">
158 <h2>Faces</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500159 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700160 <thead>
161 <tr>
162 <th>Face ID</th>
163 <th>Remote URI</th>
164 <th>Local URI</th>
Chengyu Fan27d570a2014-10-09 11:52:17 -0600165 <th>Scope</th>
166 <th>Persistency</th>
167 <th>LinkType</th>
Eric Newberry6d932e82016-11-24 05:05:43 +0000168 <th>Flags</th>
Chengyu Fan67179642014-08-15 16:00:43 -0600169 <th>Expires in</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700170 <th>In Interests</th>
171 <th>In Data</th>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700172 <th>In Nacks</th>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600173 <th>In Bytes</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700174 <th>Out Interests</th>
175 <th>Out Data</th>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700176 <th>Out Nacks</th>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600177 <th>Out Bytes</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700178 </tr>
179 </thead>
180 <tbody>
181 <xsl:for-each select="nfd:face">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500182 <tr>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700183 <td><xsl:value-of select="nfd:faceId"/></td>
184 <td><xsl:value-of select="nfd:remoteUri"/></td>
185 <td><xsl:value-of select="nfd:localUri"/></td>
Chengyu Fan27d570a2014-10-09 11:52:17 -0600186 <td><xsl:value-of select="nfd:faceScope"/></td>
187 <td><xsl:value-of select="nfd:facePersistency"/></td>
188 <td><xsl:value-of select="nfd:linkType"/></td>
Chengyu Fan67179642014-08-15 16:00:43 -0600189 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500190 <xsl:if test="nfd:flags/nfd:localFieldsEnabled">local-fields </xsl:if>
191 <xsl:if test="nfd:flags/nfd:lpReliabilityEnabled">reliability </xsl:if>
192 <xsl:if test="nfd:flags/nfd:congestionMarkingEnabled">congestion-marking </xsl:if>
Eric Newberry6d932e82016-11-24 05:05:43 +0000193 </td>
194 <td>
195 <xsl:choose>
Chengyu Fan67179642014-08-15 16:00:43 -0600196 <xsl:when test="nfd:expirationPeriod">
197 <xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:expirationPeriod" /></xsl:call-template>
198 </xsl:when>
199 <xsl:otherwise>
200 Never
201 </xsl:otherwise>
202 </xsl:choose>
203 </td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700204 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000205 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700206 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nNacks"/></td>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600207 <td><xsl:value-of select="nfd:byteCounters/nfd:incomingBytes"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700208 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000209 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700210 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nNacks"/></td>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600211 <td><xsl:value-of select="nfd:byteCounters/nfd:outgoingBytes"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700212 </tr>
213 </xsl:for-each>
214 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600215 </table>
216</xsl:template>
217
218<xsl:template match="nfd:fib">
219 <h2>FIB</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500220 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700221 <thead>
222 <tr>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500223 <th class="name-prefix">Prefix</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700224 <th>NextHops</th>
225 </tr>
226 </thead>
227 <tbody>
228 <xsl:for-each select="nfd:fibEntry">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500229 <tr>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700230 <td style="text-align:left;vertical-align:top;padding:0"><xsl:value-of select="nfd:prefix"/></td>
231 <td>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600232 <table class="item-sublist">
233 <tr>
234 <th>FaceId</th>
235 <xsl:for-each select="nfd:nextHops/nfd:nextHop">
236 <td><xsl:value-of select="nfd:faceId"/></td>
237 </xsl:for-each>
238 </tr>
239 <tr>
240 <th>Cost</th>
241 <xsl:for-each select="nfd:nextHops/nfd:nextHop">
242 <td><xsl:value-of select="nfd:cost"/></td>
243 </xsl:for-each>
244 </tr>
245 </table>
246 </td>
247 </tr>
248 </xsl:for-each>
249 </tbody>
250 </table>
251</xsl:template>
252
253<xsl:template match="nfd:rib">
254 <h2>RIB</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500255 <table class="item-list alt-row-colors">
Chengyu Fan30aa2072014-07-20 13:52:32 -0600256 <thead>
257 <tr>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500258 <th class="name-prefix">Prefix</th>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600259 <th>Routes</th>
260 </tr>
261 </thead>
262 <tbody>
263 <xsl:for-each select="nfd:ribEntry">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500264 <tr>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600265 <td style="text-align:left;vertical-align:top;padding:0"><xsl:value-of select="nfd:prefix"/></td>
266 <td>
267 <table class="item-sublist">
268 <tr>
269 <th>FaceId</th>
270 <xsl:for-each select="nfd:routes/nfd:route">
271 <td><xsl:value-of select="nfd:faceId"/></td>
272 </xsl:for-each>
273 </tr>
274 <tr>
275 <th>Origin</th>
276 <xsl:for-each select="nfd:routes/nfd:route">
277 <td><xsl:value-of select="nfd:origin"/></td>
278 </xsl:for-each>
279 </tr>
280 <tr>
281 <th>Cost</th>
282 <xsl:for-each select="nfd:routes/nfd:route">
283 <td><xsl:value-of select="nfd:cost"/></td>
284 </xsl:for-each>
285 </tr>
286 <tr>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500287 <th>ChildInherit</th>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600288 <xsl:for-each select="nfd:routes/nfd:route">
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500289 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500290 <xsl:if test="nfd:flags/nfd:childInherit">Y</xsl:if>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500291 </td>
292 </xsl:for-each>
293 </tr>
294 <tr>
295 <th>RibCapture</th>
296 <xsl:for-each select="nfd:routes/nfd:route">
297 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500298 <xsl:if test="nfd:flags/nfd:ribCapture">Y</xsl:if>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500299 </td>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600300 </xsl:for-each>
301 </tr>
302 <tr>
303 <th>Expires in</th>
304 <xsl:for-each select="nfd:routes/nfd:route">
305 <td>
306 <xsl:choose>
307 <xsl:when test="nfd:expirationPeriod">
308 <xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:expirationPeriod" /></xsl:call-template>
309 </xsl:when>
310 <xsl:otherwise>
311 Never
312 </xsl:otherwise>
313 </xsl:choose>
314 </td>
315 </xsl:for-each>
316 </tr>
317 </table>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700318 </td>
319 </tr>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600320 </xsl:for-each>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700321 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600322 </table>
323</xsl:template>
324
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000325<xsl:template match="nfd:cs">
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500326 <h2>Content Store</h2>
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000327 <table class="item-list">
328 <thead>
329 <tr>
330 <th>Hits</th>
331 <th>Misses</th>
332 </tr>
333 </thead>
334 <tbody>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500335 <tr>
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000336 <td><xsl:value-of select="nfd:nHits"/></td>
337 <td><xsl:value-of select="nfd:nMisses"/></td>
338 </tr>
339 </tbody>
340 </table>
341</xsl:template>
342
Chengyu Fan45d1a762014-07-08 14:21:32 -0600343<xsl:template match="nfd:strategyChoices">
344 <h2>Strategy Choices</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500345 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700346 <thead>
347 <tr>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500348 <th class="name-prefix">Namespace</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700349 <th>Strategy Name</th>
350 </tr>
351 </thead>
352 <tbody>
353 <xsl:for-each select="nfd:strategyChoice">
354 <tr>
355 <td><xsl:value-of select="nfd:namespace"/></td>
356 <td><xsl:value-of select="nfd:strategy/nfd:name"/></td>
357 </tr>
358 </xsl:for-each>
359 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600360 </table>
361</xsl:template>
362
363</xsl:stylesheet>