blob: 984674a310e08650855bb31744e08b4abdfcac2b [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">
Joao Pereira4e274ac2015-07-23 11:54:20 -04004<xsl:output method="html" encoding="utf-8" indent="yes" 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">
96 <h2>General NFD 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>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700141 <table class="item-list">
142 <thead>
143 <tr>
144 <th>Channel URI</th>
145 </tr>
146 </thead>
147 <tbody>
148 <xsl:for-each select="nfd:channel">
149 <xsl:variable name="style">
150 <xsl:choose>
151 <xsl:when test="position() mod 2 = 1">
152 <xsl:text>odd</xsl:text>
153 </xsl:when>
154 <xsl:otherwise>even</xsl:otherwise>
155 </xsl:choose>
156 </xsl:variable>
157 <tr class="{$style}">
158 <td><xsl:value-of select="nfd:localUri"/></td>
159 </tr>
160 </xsl:for-each>
161 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600162 </table>
163</xsl:template>
164
165<xsl:template match="nfd:faces">
166 <h2>Faces</h2>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700167 <table class="item-list">
168 <thead>
169 <tr>
170 <th>Face ID</th>
171 <th>Remote URI</th>
172 <th>Local URI</th>
Chengyu Fan27d570a2014-10-09 11:52:17 -0600173 <th>Scope</th>
174 <th>Persistency</th>
175 <th>LinkType</th>
Eric Newberry6d932e82016-11-24 05:05:43 +0000176 <th>Flags</th>
Chengyu Fan67179642014-08-15 16:00:43 -0600177 <th>Expires in</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700178 <th>In Interests</th>
179 <th>In Data</th>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700180 <th>In Nacks</th>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600181 <th>In Bytes</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700182 <th>Out Interests</th>
183 <th>Out Data</th>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700184 <th>Out Nacks</th>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600185 <th>Out Bytes</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700186 </tr>
187 </thead>
188 <tbody>
189 <xsl:for-each select="nfd:face">
190 <xsl:variable name="style">
191 <xsl:choose>
192 <xsl:when test="position() mod 2 = 1">
193 <xsl:text>odd</xsl:text>
194 </xsl:when>
195 <xsl:otherwise>even</xsl:otherwise>
196 </xsl:choose>
197 </xsl:variable>
198 <tr class="{$style}">
199 <td><xsl:value-of select="nfd:faceId"/></td>
200 <td><xsl:value-of select="nfd:remoteUri"/></td>
201 <td><xsl:value-of select="nfd:localUri"/></td>
Chengyu Fan27d570a2014-10-09 11:52:17 -0600202 <td><xsl:value-of select="nfd:faceScope"/></td>
203 <td><xsl:value-of select="nfd:facePersistency"/></td>
204 <td><xsl:value-of select="nfd:linkType"/></td>
Chengyu Fan67179642014-08-15 16:00:43 -0600205 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500206 <xsl:if test="nfd:flags/nfd:localFieldsEnabled">local-fields </xsl:if>
207 <xsl:if test="nfd:flags/nfd:lpReliabilityEnabled">reliability </xsl:if>
208 <xsl:if test="nfd:flags/nfd:congestionMarkingEnabled">congestion-marking </xsl:if>
Eric Newberry6d932e82016-11-24 05:05:43 +0000209 </td>
210 <td>
211 <xsl:choose>
Chengyu Fan67179642014-08-15 16:00:43 -0600212 <xsl:when test="nfd:expirationPeriod">
213 <xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:expirationPeriod" /></xsl:call-template>
214 </xsl:when>
215 <xsl:otherwise>
216 Never
217 </xsl:otherwise>
218 </xsl:choose>
219 </td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700220 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000221 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700222 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nNacks"/></td>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600223 <td><xsl:value-of select="nfd:byteCounters/nfd:incomingBytes"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700224 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000225 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700226 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nNacks"/></td>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600227 <td><xsl:value-of select="nfd:byteCounters/nfd:outgoingBytes"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700228 </tr>
229 </xsl:for-each>
230 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600231 </table>
232</xsl:template>
233
234<xsl:template match="nfd:fib">
235 <h2>FIB</h2>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700236 <table class="item-list">
237 <thead>
238 <tr>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600239 <th width="20%">Prefix</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700240 <th>NextHops</th>
241 </tr>
242 </thead>
243 <tbody>
244 <xsl:for-each select="nfd:fibEntry">
245 <xsl:variable name="style">
246 <xsl:choose>
247 <xsl:when test="position() mod 2 = 1">
248 <xsl:text>odd</xsl:text>
249 </xsl:when>
250 <xsl:otherwise>even</xsl:otherwise>
251 </xsl:choose>
252 </xsl:variable>
253 <tr class="{$style}">
254 <td style="text-align:left;vertical-align:top;padding:0"><xsl:value-of select="nfd:prefix"/></td>
255 <td>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600256 <table class="item-sublist">
257 <tr>
258 <th>FaceId</th>
259 <xsl:for-each select="nfd:nextHops/nfd:nextHop">
260 <td><xsl:value-of select="nfd:faceId"/></td>
261 </xsl:for-each>
262 </tr>
263 <tr>
264 <th>Cost</th>
265 <xsl:for-each select="nfd:nextHops/nfd:nextHop">
266 <td><xsl:value-of select="nfd:cost"/></td>
267 </xsl:for-each>
268 </tr>
269 </table>
270 </td>
271 </tr>
272 </xsl:for-each>
273 </tbody>
274 </table>
275</xsl:template>
276
277<xsl:template match="nfd:rib">
278 <h2>RIB</h2>
279 <table class="item-list">
280 <thead>
281 <tr>
282 <th width="20%">Prefix</th>
283 <th>Routes</th>
284 </tr>
285 </thead>
286 <tbody>
287 <xsl:for-each select="nfd:ribEntry">
288 <xsl:variable name="style">
289 <xsl:choose>
290 <xsl:when test="position() mod 2 = 1">
291 <xsl:text>odd</xsl:text>
292 </xsl:when>
293 <xsl:otherwise>even</xsl:otherwise>
294 </xsl:choose>
295 </xsl:variable>
296 <tr class="{$style}">
297 <td style="text-align:left;vertical-align:top;padding:0"><xsl:value-of select="nfd:prefix"/></td>
298 <td>
299 <table class="item-sublist">
300 <tr>
301 <th>FaceId</th>
302 <xsl:for-each select="nfd:routes/nfd:route">
303 <td><xsl:value-of select="nfd:faceId"/></td>
304 </xsl:for-each>
305 </tr>
306 <tr>
307 <th>Origin</th>
308 <xsl:for-each select="nfd:routes/nfd:route">
309 <td><xsl:value-of select="nfd:origin"/></td>
310 </xsl:for-each>
311 </tr>
312 <tr>
313 <th>Cost</th>
314 <xsl:for-each select="nfd:routes/nfd:route">
315 <td><xsl:value-of select="nfd:cost"/></td>
316 </xsl:for-each>
317 </tr>
318 <tr>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500319 <th>ChildInherit</th>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600320 <xsl:for-each select="nfd:routes/nfd:route">
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500321 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500322 <xsl:if test="nfd:flags/nfd:childInherit">Y</xsl:if>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500323 </td>
324 </xsl:for-each>
325 </tr>
326 <tr>
327 <th>RibCapture</th>
328 <xsl:for-each select="nfd:routes/nfd:route">
329 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500330 <xsl:if test="nfd:flags/nfd:ribCapture">Y</xsl:if>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500331 </td>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600332 </xsl:for-each>
333 </tr>
334 <tr>
335 <th>Expires in</th>
336 <xsl:for-each select="nfd:routes/nfd:route">
337 <td>
338 <xsl:choose>
339 <xsl:when test="nfd:expirationPeriod">
340 <xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:expirationPeriod" /></xsl:call-template>
341 </xsl:when>
342 <xsl:otherwise>
343 Never
344 </xsl:otherwise>
345 </xsl:choose>
346 </td>
347 </xsl:for-each>
348 </tr>
349 </table>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700350 </td>
351 </tr>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600352 </xsl:for-each>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700353 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600354 </table>
355</xsl:template>
356
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000357<xsl:template match="nfd:cs">
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500358 <h2>Content Store</h2>
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000359 <table class="item-list">
360 <thead>
361 <tr>
362 <th>Hits</th>
363 <th>Misses</th>
364 </tr>
365 </thead>
366 <tbody>
367 <tr class="center">
368 <td><xsl:value-of select="nfd:nHits"/></td>
369 <td><xsl:value-of select="nfd:nMisses"/></td>
370 </tr>
371 </tbody>
372 </table>
373</xsl:template>
374
Chengyu Fan45d1a762014-07-08 14:21:32 -0600375<xsl:template match="nfd:strategyChoices">
376 <h2>Strategy Choices</h2>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700377 <table class="item-list">
378 <thead>
379 <tr>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600380 <th width="20%">Namespace</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700381 <th>Strategy Name</th>
382 </tr>
383 </thead>
384 <tbody>
385 <xsl:for-each select="nfd:strategyChoice">
386 <tr>
387 <td><xsl:value-of select="nfd:namespace"/></td>
388 <td><xsl:value-of select="nfd:strategy/nfd:name"/></td>
389 </tr>
390 </xsl:for-each>
391 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600392 </table>
393</xsl:template>
394
395</xsl:stylesheet>