1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 - Copyright (C) 2006-2009  Internet Systems Consortium, Inc. ("ISC")
4 -
5 - Permission to use, copy, modify, and/or distribute this software for any
6 - purpose with or without fee is hereby granted, provided that the above
7 - copyright notice and this permission notice appear in all copies.
8 -
9 - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10 - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11 - AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12 - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14 - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 - PERFORMANCE OF THIS SOFTWARE.
16-->
17
18<!-- $Id: bind9.xsl,v 1.21 2009/01/27 23:47:54 tbox Exp $ -->
19
20<xsl:stylesheet version="1.0"
21   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
22   xmlns="http://www.w3.org/1999/xhtml">
23  <xsl:template match="isc/bind/statistics">
24    <html>
25      <head>
26        <style type="text/css">
27body {
28	font-family: sans-serif;
29	background-color: #ffffff;
30	color: #000000;
31}
32
33table {
34	border-collapse: collapse;
35}
36
37tr.rowh {
38	text-align: center;
39	border: 1px solid #000000;
40	background-color: #8080ff;
41	color: #ffffff;
42}
43
44tr.row {
45	text-align: right;
46	border: 1px solid #000000;
47	background-color: teal;
48	color: #ffffff;
49}
50
51tr.lrow {
52	text-align: left;
53	border: 1px solid #000000;
54	background-color: teal;
55	color: #ffffff;
56}
57
58td, th {
59	padding-right: 5px;
60	padding-left: 5px;
61}
62
63.header h1 {
64	background-color: teal;
65	color: #ffffff;
66	padding: 4px;
67}
68
69.content {
70	background-color: #ffffff;
71	color: #000000;
72	padding: 4px;
73}
74
75.item {
76	padding: 4px;
77	align: right;
78}
79
80.value {
81	padding: 4px;
82	font-weight: bold;
83}
84
85div.statcounter h2 {
86	text-align: center;
87	font-size: large;
88	border: 1px solid #000000;
89	background-color: #8080ff;
90	color: #ffffff;
91}
92
93div.statcounter dl {
94	float: left;
95	margin-top: 0;
96	margin-bottom: 0;
97	margin-left: 0;
98	margin-right: 0;
99}
100
101div.statcounter dt {
102	width: 200px;
103	text-align: center;
104	font-weight: bold;
105	border: 0.5px solid #000000;
106	background-color: #8080ff;
107	color: #ffffff;
108}
109
110div.statcounter dd {
111	width: 200px;
112	text-align: right;
113	border: 0.5px solid #000000;
114	background-color: teal;
115	color: #ffffff;
116	margin-left: 0;
117	margin-right: 0;
118}
119
120div.statcounter br {
121	clear: left;
122}
123        </style>
124        <title>BIND 9 Statistics</title>
125      </head>
126      <body>
127	<div class="header">
128	  <h1>Bind 9 Configuration and Statistics</h1>
129	</div>
130
131	<br/>
132
133	<table>
134	  <tr class="rowh"><th colspan="2">Times</th></tr>
135	  <tr class="lrow">
136	    <td>boot-time</td>
137	    <td><xsl:value-of select="server/boot-time"/></td>
138	  </tr>
139	  <tr class="lrow">
140	    <td>current-time</td>
141	    <td><xsl:value-of select="server/current-time"/></td>
142	  </tr>
143	</table>
144
145	<br/>
146
147	<table>
148	  <tr class="rowh"><th colspan="2">Incoming Requests</th></tr>
149	  <xsl:for-each select="server/requests/opcode">
150	    <tr class="lrow">
151	      <td><xsl:value-of select="name"/></td>
152	      <td><xsl:value-of select="counter"/></td>
153	    </tr>
154	  </xsl:for-each>
155	</table>
156
157	<br/>
158
159	<table>
160	  <tr class="rowh"><th colspan="2">Incoming Queries</th></tr>
161	  <xsl:for-each select="server/queries-in/rdtype">
162	    <tr class="lrow">
163	      <td><xsl:value-of select="name"/></td>
164	      <td><xsl:value-of select="counter"/></td>
165	    </tr>
166	  </xsl:for-each>
167	</table>
168
169	<br/>
170
171	<xsl:for-each select="views/view">
172	  <table>
173	    <tr class="rowh">
174	      <th colspan="2">Outgoing Queries from View <xsl:value-of select="name"/></th>
175	    </tr>
176	    <xsl:for-each select="rdtype">
177	      <tr class="lrow">
178		<td><xsl:value-of select="name"/></td>
179		<td><xsl:value-of select="counter"/></td>
180	      </tr>
181	    </xsl:for-each>
182	  </table>
183	  <br/>
184	</xsl:for-each>
185
186	<br/>
187
188	<div class="statcounter">
189	  <h2>Server Statistics</h2>
190	  <xsl:for-each select="server/nsstat">
191	    <dl>
192	      <dt><xsl:value-of select="name"/></dt>
193	      <dd><xsl:value-of select="counter"/></dd>
194	    </dl>
195	  </xsl:for-each>
196	  <br/>
197	</div>
198
199	<div class="statcounter">
200	  <h2>Zone Maintenance Statistics</h2>
201	  <xsl:for-each select="server/zonestat">
202	    <dl>
203	      <dt><xsl:value-of select="name"/></dt>
204	      <dd><xsl:value-of select="counter"/></dd>
205	    </dl>
206	  </xsl:for-each>
207	  <br />
208	</div>
209
210	<div class="statcounter">
211	  <h2>Resolver Statistics (Common)</h2>
212	  <xsl:for-each select="server/resstat">
213	    <dl>
214	      <dt><xsl:value-of select="name"/></dt>
215	      <dd><xsl:value-of select="counter"/></dd>
216	    </dl>
217	  </xsl:for-each>
218	  <br />
219	</div>
220
221	<xsl:for-each select="views/view">
222	  <div class="statcounter">
223	    <h2>Resolver Statistics for View <xsl:value-of select="name"/></h2>
224	    <xsl:for-each select="resstat">
225	      <dl>
226		<dt><xsl:value-of select="name"/></dt>
227		<dd><xsl:value-of select="counter"/></dd>
228	      </dl>
229	    </xsl:for-each>
230	    <br />
231	  </div>
232	</xsl:for-each>
233
234	<br />
235
236	<xsl:for-each select="views/view">
237	  <table>
238	    <tr class="rowh">
239	      <th colspan="2">Cache DB RRsets for View <xsl:value-of select="name"/></th>
240	    </tr>
241	    <xsl:for-each select="cache/rrset">
242	      <tr class="lrow">
243		<td><xsl:value-of select="name"/></td>
244		<td><xsl:value-of select="counter"/></td>
245	      </tr>
246	    </xsl:for-each>
247	  </table>
248	  <br/>
249	</xsl:for-each>
250
251	<div class="statcounter">
252	  <h2>Socket I/O Statistics</h2>
253	  <xsl:for-each select="server/sockstat">
254	    <dl>
255	      <dt><xsl:value-of select="name"/></dt>
256	      <dd><xsl:value-of select="counter"/></dd>
257	    </dl>
258	  </xsl:for-each>
259	  <br/>
260	</div>
261
262	<br/>
263
264        <xsl:for-each select="views/view">
265          <table>
266            <tr class="rowh">
267              <th colspan="10">Zones for View <xsl:value-of select="name"/></th>
268            </tr>
269            <tr class="rowh">
270              <th>Name</th>
271              <th>Class</th>
272              <th>Serial</th>
273              <th>Success</th>
274              <th>Referral</th>
275              <th>NXRRSET</th>
276              <th>NXDOMAIN</th>
277              <th>Failure</th>
278	      <th>XfrReqDone</th>
279	      <th>XfrRej</th>
280            </tr>
281            <xsl:for-each select="zones/zone">
282              <tr class="lrow">
283                <td>
284                  <xsl:value-of select="name"/>
285                </td>
286                <td>
287                  <xsl:value-of select="rdataclass"/>
288                </td>
289                <td>
290                  <xsl:value-of select="serial"/>
291                </td>
292                <td>
293                  <xsl:value-of select="counters/QrySuccess"/>
294                </td>
295                <td>
296                  <xsl:value-of select="counters/QryReferral"/>
297                </td>
298                <td>
299                  <xsl:value-of select="counters/QryNxrrset"/>
300                </td>
301                <td>
302                  <xsl:value-of select="counters/QryNXDOMAIN"/>
303                </td>
304                <td>
305                  <xsl:value-of select="counters/QryFailure"/>
306                </td>
307                <td>
308                  <xsl:value-of select="counters/XfrReqDone"/>
309                </td>
310                <td>
311                  <xsl:value-of select="counters/XfrRej"/>
312                </td>
313              </tr>
314            </xsl:for-each>
315          </table>
316          <br/>
317        </xsl:for-each>
318
319        <br/>
320
321        <table>
322          <tr class="rowh">
323            <th colspan="7">Network Status</th>
324          </tr>
325          <tr class="rowh">
326            <th>ID</th>
327	    <th>Name</th>
328            <th>Type</th>
329            <th>References</th>
330            <th>LocalAddress</th>
331            <th>PeerAddress</th>
332            <th>State</th>
333          </tr>
334          <xsl:for-each select="socketmgr/sockets/socket">
335            <tr class="lrow">
336              <td>
337                <xsl:value-of select="id"/>
338              </td>
339              <td>
340                <xsl:value-of select="name"/>
341              </td>
342              <td>
343                <xsl:value-of select="type"/>
344              </td>
345              <td>
346                <xsl:value-of select="references"/>
347              </td>
348              <td>
349                <xsl:value-of select="local-address"/>
350              </td>
351              <td>
352                <xsl:value-of select="peer-address"/>
353              </td>
354              <td>
355                <xsl:for-each select="states">
356                  <xsl:value-of select="."/>
357                </xsl:for-each>
358              </td>
359            </tr>
360          </xsl:for-each>
361        </table>
362        <br/>
363        <table>
364          <tr class="rowh">
365            <th colspan="2">Task Manager Configuration</th>
366          </tr>
367          <tr class="lrow">
368            <td>Thread-Model</td>
369            <td>
370              <xsl:value-of select="taskmgr/thread-model/type"/>
371            </td>
372          </tr>
373          <tr class="lrow">
374            <td>Worker Threads</td>
375            <td>
376              <xsl:value-of select="taskmgr/thread-model/worker-threads"/>
377            </td>
378          </tr>
379          <tr class="lrow">
380            <td>Default Quantum</td>
381            <td>
382              <xsl:value-of select="taskmgr/thread-model/default-quantum"/>
383            </td>
384          </tr>
385          <tr class="lrow">
386            <td>Tasks Running</td>
387            <td>
388              <xsl:value-of select="taskmgr/thread-model/tasks-running"/>
389            </td>
390          </tr>
391        </table>
392        <br/>
393        <table>
394          <tr class="rowh">
395            <th colspan="5">Tasks</th>
396          </tr>
397          <tr class="rowh">
398            <th>ID</th>
399            <th>Name</th>
400            <th>References</th>
401            <th>State</th>
402            <th>Quantum</th>
403          </tr>
404          <xsl:for-each select="taskmgr/tasks/task">
405            <tr class="lrow">
406              <td>
407                <xsl:value-of select="id"/>
408              </td>
409              <td>
410                <xsl:value-of select="name"/>
411              </td>
412              <td>
413                <xsl:value-of select="references"/>
414              </td>
415              <td>
416                <xsl:value-of select="state"/>
417              </td>
418              <td>
419                <xsl:value-of select="quantum"/>
420              </td>
421            </tr>
422          </xsl:for-each>
423        </table>
424	<br />
425	<table>
426          <tr class="rowh">
427            <th colspan="4">Memory Usage Summary</th>
428          </tr>
429	  <xsl:for-each select="memory/summary/*">
430	    <tr class="lrow">
431	      <td><xsl:value-of select="name()"/></td>
432	      <td><xsl:value-of select="."/></td>
433	    </tr>
434	  </xsl:for-each>
435	</table>
436	<br />
437	<table>
438          <tr class="rowh">
439            <th colspan="10">Memory Contexts</th>
440          </tr>
441	  <tr class="rowh">
442	    <th>ID</th>
443	    <th>Name</th>
444	    <th>References</th>
445	    <th>TotalUse</th>
446	    <th>InUse</th>
447	    <th>MaxUse</th>
448	    <th>BlockSize</th>
449	    <th>Pools</th>
450	    <th>HiWater</th>
451	    <th>LoWater</th>
452	  </tr>
453	  <xsl:for-each select="memory/contexts/context">
454	    <tr class="lrow">
455	      <td>
456		<xsl:value-of select="id"/>
457	      </td>
458              <td>
459                <xsl:value-of select="name"/>
460              </td>
461	      <td>
462		<xsl:value-of select="references"/>
463	      </td>
464	      <td>
465		<xsl:value-of select="total"/>
466	      </td>
467	      <td>
468		<xsl:value-of select="inuse"/>
469	      </td>
470	      <td>
471		<xsl:value-of select="maxinuse"/>
472	      </td>
473	      <td>
474		<xsl:value-of select="blocksize"/>
475	      </td>
476	      <td>
477		<xsl:value-of select="pools"/>
478	      </td>
479	      <td>
480		<xsl:value-of select="hiwater"/>
481	      </td>
482	      <td>
483		<xsl:value-of select="lowater"/>
484	      </td>
485	    </tr>
486	  </xsl:for-each>
487	</table>
488
489      </body>
490    </html>
491  </xsl:template>
492</xsl:stylesheet>
493