blob: d2015b191793524770f7bc6ee9b235ca58102dbe [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>
Ju Pan7570e772018-10-27 03:33:58 +0000115 <th>Satisfied Interests</th>
116 <th>Unsatisfied Interests</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700117 </tr>
118 </thead>
119 <tbody>
120 <tr class="center">
Hila Ben Abraham2ef99572014-12-02 02:45:51 -0600121 <td><xsl:value-of select="nfd:version"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700122 <td><xsl:call-template name="formatDate"><xsl:with-param name="date" select="nfd:startTime" /></xsl:call-template></td>
123 <td><xsl:call-template name="formatDate"><xsl:with-param name="date" select="nfd:currentTime" /></xsl:call-template></td>
124 <td><xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:uptime" /></xsl:call-template></td>
125 <td><xsl:value-of select="nfd:nNameTreeEntries"/></td>
126 <td><xsl:value-of select="nfd:nFibEntries"/></td>
127 <td><xsl:value-of select="nfd:nPitEntries"/></td>
128 <td><xsl:value-of select="nfd:nMeasurementsEntries"/></td>
129 <td><xsl:value-of select="nfd:nCsEntries"/></td>
130 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nInterests"/></td>
131 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000132 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nData"/></td>
133 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700134 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nNacks"/></td>
135 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nNacks"/></td>
Davide Pesaventoc6a65ad2019-03-27 18:28:12 -0400136 <td><xsl:value-of select="nfd:nSatisfiedInterests"/></td>
137 <td><xsl:value-of select="nfd:nUnsatisfiedInterests"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700138 </tr>
139 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600140 </table>
141</xsl:template>
142
143<xsl:template match="nfd:channels">
144 <h2>Channels</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500145 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700146 <thead>
147 <tr>
148 <th>Channel URI</th>
149 </tr>
150 </thead>
151 <tbody>
152 <xsl:for-each select="nfd:channel">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500153 <tr>
154 <td><xsl:value-of select="nfd:localUri"/></td>
155 </tr>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700156 </xsl:for-each>
157 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600158 </table>
159</xsl:template>
160
161<xsl:template match="nfd:faces">
162 <h2>Faces</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500163 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700164 <thead>
165 <tr>
166 <th>Face ID</th>
167 <th>Remote URI</th>
168 <th>Local URI</th>
Chengyu Fan27d570a2014-10-09 11:52:17 -0600169 <th>Scope</th>
170 <th>Persistency</th>
171 <th>LinkType</th>
Eric Newberry4f8dd962018-06-17 21:32:07 -0700172 <th>MTU</th>
Eric Newberry6d932e82016-11-24 05:05:43 +0000173 <th>Flags</th>
Chengyu Fan67179642014-08-15 16:00:43 -0600174 <th>Expires in</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700175 <th>In Interests</th>
176 <th>In Data</th>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700177 <th>In Nacks</th>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600178 <th>In Bytes</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700179 <th>Out Interests</th>
180 <th>Out Data</th>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700181 <th>Out Nacks</th>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600182 <th>Out Bytes</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700183 </tr>
184 </thead>
185 <tbody>
186 <xsl:for-each select="nfd:face">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500187 <tr>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700188 <td><xsl:value-of select="nfd:faceId"/></td>
189 <td><xsl:value-of select="nfd:remoteUri"/></td>
190 <td><xsl:value-of select="nfd:localUri"/></td>
Chengyu Fan27d570a2014-10-09 11:52:17 -0600191 <td><xsl:value-of select="nfd:faceScope"/></td>
192 <td><xsl:value-of select="nfd:facePersistency"/></td>
193 <td><xsl:value-of select="nfd:linkType"/></td>
Chengyu Fan67179642014-08-15 16:00:43 -0600194 <td>
Eric Newberry4f8dd962018-06-17 21:32:07 -0700195 <xsl:choose>
196 <xsl:when test="nfd:mtu">
197 <xsl:value-of select="nfd:mtu"/>
198 </xsl:when>
199 <xsl:otherwise>
200 n/a
201 </xsl:otherwise>
202 </xsl:choose>
203 </td>
204 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500205 <xsl:if test="nfd:flags/nfd:localFieldsEnabled">local-fields </xsl:if>
206 <xsl:if test="nfd:flags/nfd:lpReliabilityEnabled">reliability </xsl:if>
207 <xsl:if test="nfd:flags/nfd:congestionMarkingEnabled">congestion-marking </xsl:if>
Eric Newberry6d932e82016-11-24 05:05:43 +0000208 </td>
209 <td>
210 <xsl:choose>
Chengyu Fan67179642014-08-15 16:00:43 -0600211 <xsl:when test="nfd:expirationPeriod">
212 <xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:expirationPeriod" /></xsl:call-template>
213 </xsl:when>
214 <xsl:otherwise>
215 Never
216 </xsl:otherwise>
217 </xsl:choose>
218 </td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700219 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000220 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700221 <td><xsl:value-of select="nfd:packetCounters/nfd:incomingPackets/nfd:nNacks"/></td>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600222 <td><xsl:value-of select="nfd:byteCounters/nfd:incomingBytes"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700223 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nInterests"/></td>
Junxiao Shif03d4792017-04-06 16:41:22 +0000224 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nData"/></td>
Weiwei Liuace83ac2016-04-25 10:16:37 -0700225 <td><xsl:value-of select="nfd:packetCounters/nfd:outgoingPackets/nfd:nNacks"/></td>
Chengyu Fan3331cfa2014-07-25 17:36:31 -0600226 <td><xsl:value-of select="nfd:byteCounters/nfd:outgoingBytes"/></td>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700227 </tr>
228 </xsl:for-each>
229 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600230 </table>
231</xsl:template>
232
233<xsl:template match="nfd:fib">
234 <h2>FIB</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500235 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700236 <thead>
237 <tr>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500238 <th class="name-prefix">Prefix</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700239 <th>NextHops</th>
240 </tr>
241 </thead>
242 <tbody>
243 <xsl:for-each select="nfd:fibEntry">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500244 <tr>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700245 <td style="text-align:left;vertical-align:top;padding:0"><xsl:value-of select="nfd:prefix"/></td>
246 <td>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600247 <table class="item-sublist">
248 <tr>
249 <th>FaceId</th>
250 <xsl:for-each select="nfd:nextHops/nfd:nextHop">
251 <td><xsl:value-of select="nfd:faceId"/></td>
252 </xsl:for-each>
253 </tr>
254 <tr>
255 <th>Cost</th>
256 <xsl:for-each select="nfd:nextHops/nfd:nextHop">
257 <td><xsl:value-of select="nfd:cost"/></td>
258 </xsl:for-each>
259 </tr>
260 </table>
261 </td>
262 </tr>
263 </xsl:for-each>
264 </tbody>
265 </table>
266</xsl:template>
267
268<xsl:template match="nfd:rib">
269 <h2>RIB</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500270 <table class="item-list alt-row-colors">
Chengyu Fan30aa2072014-07-20 13:52:32 -0600271 <thead>
272 <tr>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500273 <th class="name-prefix">Prefix</th>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600274 <th>Routes</th>
275 </tr>
276 </thead>
277 <tbody>
278 <xsl:for-each select="nfd:ribEntry">
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500279 <tr>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600280 <td style="text-align:left;vertical-align:top;padding:0"><xsl:value-of select="nfd:prefix"/></td>
281 <td>
282 <table class="item-sublist">
283 <tr>
284 <th>FaceId</th>
285 <xsl:for-each select="nfd:routes/nfd:route">
286 <td><xsl:value-of select="nfd:faceId"/></td>
287 </xsl:for-each>
288 </tr>
289 <tr>
290 <th>Origin</th>
291 <xsl:for-each select="nfd:routes/nfd:route">
292 <td><xsl:value-of select="nfd:origin"/></td>
293 </xsl:for-each>
294 </tr>
295 <tr>
296 <th>Cost</th>
297 <xsl:for-each select="nfd:routes/nfd:route">
298 <td><xsl:value-of select="nfd:cost"/></td>
299 </xsl:for-each>
300 </tr>
301 <tr>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500302 <th>ChildInherit</th>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600303 <xsl:for-each select="nfd:routes/nfd:route">
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500304 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500305 <xsl:if test="nfd:flags/nfd:childInherit">Y</xsl:if>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500306 </td>
307 </xsl:for-each>
308 </tr>
309 <tr>
310 <th>RibCapture</th>
311 <xsl:for-each select="nfd:routes/nfd:route">
312 <td>
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500313 <xsl:if test="nfd:flags/nfd:ribCapture">Y</xsl:if>
Chengyu Fan1c630ba2014-08-20 13:27:58 -0500314 </td>
Chengyu Fan30aa2072014-07-20 13:52:32 -0600315 </xsl:for-each>
316 </tr>
317 <tr>
318 <th>Expires in</th>
319 <xsl:for-each select="nfd:routes/nfd:route">
320 <td>
321 <xsl:choose>
322 <xsl:when test="nfd:expirationPeriod">
323 <xsl:call-template name="formatDuration"><xsl:with-param name="duration" select="nfd:expirationPeriod" /></xsl:call-template>
324 </xsl:when>
325 <xsl:otherwise>
326 Never
327 </xsl:otherwise>
328 </xsl:choose>
329 </td>
330 </xsl:for-each>
331 </tr>
332 </table>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700333 </td>
334 </tr>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600335 </xsl:for-each>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700336 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600337 </table>
338</xsl:template>
339
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000340<xsl:template match="nfd:cs">
Davide Pesaventod9c520b2018-02-24 14:49:14 -0500341 <h2>Content Store</h2>
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000342 <table class="item-list">
343 <thead>
344 <tr>
Junxiao Shi7a36ac72018-03-21 15:23:22 +0000345 <th>Enablement Flags</th>
346 <th>Capacity</th>
347 <th>Entries</th>
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000348 <th>Hits</th>
349 <th>Misses</th>
350 </tr>
351 </thead>
352 <tbody>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500353 <tr>
Junxiao Shi7a36ac72018-03-21 15:23:22 +0000354 <td>
355 <xsl:choose>
356 <xsl:when test="nfd:admitEnabled">admit</xsl:when>
357 <xsl:otherwise>no-admit</xsl:otherwise>
358 </xsl:choose>
359 ,
360 <xsl:choose>
361 <xsl:when test="nfd:serveEnabled">serve</xsl:when>
362 <xsl:otherwise>no-serve</xsl:otherwise>
363 </xsl:choose>
364 </td>
365 <td><xsl:value-of select="nfd:capacity"/></td>
366 <td><xsl:value-of select="nfd:nEntries"/></td>
Junxiao Shi3160a3f2018-01-09 21:25:15 +0000367 <td><xsl:value-of select="nfd:nHits"/></td>
368 <td><xsl:value-of select="nfd:nMisses"/></td>
369 </tr>
370 </tbody>
371 </table>
372</xsl:template>
373
Chengyu Fan45d1a762014-07-08 14:21:32 -0600374<xsl:template match="nfd:strategyChoices">
375 <h2>Strategy Choices</h2>
Davide Pesavento6a88b5f2018-02-24 16:50:46 -0500376 <table class="item-list alt-row-colors">
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700377 <thead>
378 <tr>
Davide Pesavento9e5b8af2018-02-24 22:03:02 -0500379 <th class="name-prefix">Namespace</th>
Alexander Afanasyev8a093762014-07-16 18:43:09 -0700380 <th>Strategy Name</th>
381 </tr>
382 </thead>
383 <tbody>
384 <xsl:for-each select="nfd:strategyChoice">
385 <tr>
386 <td><xsl:value-of select="nfd:namespace"/></td>
387 <td><xsl:value-of select="nfd:strategy/nfd:name"/></td>
388 </tr>
389 </xsl:for-each>
390 </tbody>
Chengyu Fan45d1a762014-07-08 14:21:32 -0600391 </table>
392</xsl:template>
393
394</xsl:stylesheet>