ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/qtoclstneighbortbl.htm

836 lines
23 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>List Neighbor Cache Table (QtocLstNeighborTbl) API</title>
<!-- Begin Header Records ========================================= -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Created for V5R2 -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- Tagging validation completed Jan 2002 by v2cdijab -->
<!-- End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<a name="Top_Of_Page"></a>
<!-- Java sync-link -->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<h2>List Neighbor Cache Table (QtocLstNeighborTbl) API</h2>
<div class="box" style="width: 60%;">
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="50%">Qualified user space name</td>
<td align="left" valign="top" width="20%">Input</td>
<td align="left" valign="top" width="20%">Char(20)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Format name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(8)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Line name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Error Code</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Service Program: QTOCNETSTS<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The List Neighbor Cache Table (QtocLstNeighborTbl) API returns a list of all
entries in the IPv6 Neighbor Cache table for a specified line or for all
lines.</p>
<p>TCP/IP must be active on this system; otherwise, error message TCP84C0 will
be issued.</p>
<br>
<h3>Authorities and Locks</h3>
<dl>
<dt><em>User Space Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>User Space Authority</em></dt>
<dd>*CHANGE</dd>
<dt><em>User Space Lock</em></dt>
<dd>*SHRNUP</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Qualified user space name</strong></dt>
<dd>INPUT; CHAR(20)
<p>The user space that receives the information, and the library in which it is
located. The first 10 characters contain the user space name, and the second 10
characters contain the library name. You can use these special values for the
library name:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*CURLIB</em></td>
<td align="left" valign="top">The job's current library.</td>
</tr>
<tr>
<td align="left" valign="top"><em>*LIBL</em></td>
<td align="left" valign="top">The library list.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Format name</strong></dt>
<dd>INPUT; CHAR(8)
<p>The format of the space information to be returned. The format names
supported are:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>NNCT0100</em></td>
<td align="left" valign="top">List of Neighbor Cache table entries for a
specified line. Refer to <a href="#NNCT0100">NNCT0100 Format</a> for details on
the format.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Line name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of the IPv6 enabled physical interface for which to retrieve
Neighbor Cache table entries. The following special value may be used:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>*ALL</em></td>
<td align="left" valign="top">Request all Neighbor Cache entries for all IPv6
enabled lines in the system.</td>
</tr>
</table>
<br>
</dd>
<dt><strong>Error Code</strong></dt>
<dd>I/O; CHAR(*)
<p>The structure in which to return error information. For the format of the
structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
</dd>
</dl>
<br>
<h3>Format of Neighbor Cache Table Lists</h3>
<p>To request a list of Neighbor Cache table entries for a line, use format
NNCT0100.</p>
<p>The Neighbor Cache table list consists of:</p>
<ul>
<li>A user area</li>
<li>A generic header</li>
<li>An input parameter section</li>
<li>A header section</li>
<li>A list data section:
<ul>
<li>NNCT0100 format.</li>
</ul>
</li>
</ul>
<p>For details about the user area and generic header, see <a href=
"../apiref/usf.htm">User Space Format for List APIs</a>. For details about the remaining
items, see the following sections.</p>
<p>When you retrieve list entry information from a user space, you must use the
entry size returned in the generic header. The size of each entry may be padded
at the end. If you do not use the entry size, the result may not be valid. For
examples of how to process lists, see API <a href=
"../apiref/apiexmp.htm">Examples</a>.</p>
<br>
<h3>Input Parameter Section</h3>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">CHAR(10)</td>
<td align="left" valign="top" width="60%">User space name specified</td>
</tr>
<tr>
<td align="center" valign="top">10</td>
<td align="center" valign="top">A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">User space library name specified</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Format name specified</td>
</tr>
<tr>
<td align="center" valign="top">28</td>
<td align="center" valign="top">1C</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Line name specified</td>
</tr>
</table>
<br>
<br>
<h3>Header Section</h3>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">CHAR(10)</td>
<td align="left" valign="top" width="60%">User space name</td>
</tr>
<tr>
<td align="center" valign="top">10</td>
<td align="center" valign="top">A</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">User space library name used</td>
</tr>
<tr>
<td align="center" valign="top">20</td>
<td align="center" valign="top">14</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Line name used</td>
</tr>
</table>
<br>
<br>
<h3><a name="NNCT0100">NNCT0100 Format</a></h3>
<p>The following information about an entry in the Neighbor Cache table is
returned for the NNCT0100 format. For detailed descriptions of the fields in
the table, see <a href="#NNCT0100_FIELD">Field Descriptions</a>.</p>
<table border width="80%">
<tr>
<th align="center" valign="bottom" colspan="2">Offset</th>
<th align="left" valign="bottom" rowspan="2">Type</th>
<th align="left" valign="bottom" rowspan="2">Field</th>
</tr>
<tr>
<th align="center" valign="bottom">Dec</th>
<th align="center" valign="bottom">Hex</th>
</tr>
<tr>
<td align="center" valign="top" width="10%">0</td>
<td align="center" valign="top" width="10%">0</td>
<td align="left" valign="top" width="20%">CHAR(45)</td>
<td align="left" valign="top" width="60%">Internet IPv6 address</td>
</tr>
<tr>
<td align="center" valign="top">45</td>
<td align="center" valign="top">2D</td>
<td align="left" valign="top">CHAR(3)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">48</td>
<td align="center" valign="top">30</td>
<td align="left" valign="top">CHAR(16)</td>
<td align="left" valign="top">Internet IPv6 address binary</td>
</tr>
<tr>
<td align="center" valign="top">64</td>
<td align="center" valign="top">40</td>
<td align="left" valign="top">CHAR(17)</td>
<td align="left" valign="top">Link layer address</td>
</tr>
<tr>
<td align="center" valign="top">81</td>
<td align="center" valign="top">51</td>
<td align="left" valign="top">CHAR(7)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">88</td>
<td align="center" valign="top">58</td>
<td align="left" valign="top">BINARY(8)</td>
<td align="left" valign="top">Link layer address binary</td>
</tr>
<tr>
<td align="center" valign="top">96</td>
<td align="center" valign="top">60</td>
<td align="left" valign="top">CHAR(10)</td>
<td align="left" valign="top">Line name</td>
</tr>
<tr>
<td align="center" valign="top">106</td>
<td align="center" valign="top">6A</td>
<td align="left" valign="top">CHAR(2)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">108</td>
<td align="center" valign="top">6C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reachability state</td>
</tr>
<tr>
<td align="center" valign="top">112</td>
<td align="center" valign="top">70</td>
<td align="left" valign="top">CHAR(8)</td>
<td align="left" valign="top">Reachability state change - date</td>
</tr>
<tr>
<td align="center" valign="top">120</td>
<td align="center" valign="top">78</td>
<td align="left" valign="top">CHAR(9)</td>
<td align="left" valign="top">Reachability state change - time</td>
</tr>
<tr>
<td align="center" valign="top">129</td>
<td align="center" valign="top">81</td>
<td align="left" valign="top">CHAR(3)</td>
<td align="left" valign="top">Reserved</td>
</tr>
<tr>
<td align="center" valign="top">132</td>
<td align="center" valign="top">84</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Reachability state error information</td>
</tr>
<tr>
<td align="center" valign="top">136</td>
<td align="center" valign="top">88</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Time in reachable state</td>
</tr>
<tr>
<td align="center" valign="top">140</td>
<td align="center" valign="top">8C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Is router</td>
</tr>
<tr>
<td align="center" valign="top">144</td>
<td align="center" valign="top">90</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of unicast neighbor solicitation packets
sent</td>
</tr>
<tr>
<td align="center" valign="top">148</td>
<td align="center" valign="top">94</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Number of multicast neighbor solicitation packets
sent</td>
</tr>
<tr>
<td align="center" valign="top">152</td>
<td align="center" valign="top">98</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Delay first probe time</td>
</tr>
<tr>
<td align="center" valign="top">156</td>
<td align="center" valign="top">9C</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Max unicast solicits</td>
</tr>
<tr>
<td align="center" valign="top">160</td>
<td align="center" valign="top">A0</td>
<td align="left" valign="top">BINARY(4)</td>
<td align="left" valign="top">Max multicast solicits</td>
</tr>
</table>
<br>
<br>
<h3><a name="NNCT0100_FIELD">Field Descriptions</a></h3>
<p><strong>Delay first probe time.</strong> The current value of the configured
stack attribute named Neighbor solicitation delay first probe time. This
attribute controls how long a Neighbor Cache entry will stay in the DELAY state
before the stack will send another Neighbor Solicitation and move this Neighbor
Cache entry's Reachability state to PROBE if reachability still has not been
confirmed. Valid values range from 3 through 10 seconds.</p>
<p><strong>Internet IPv6 address.</strong> The IPv6 address of the neighbor in
IPv6 address format notation. This field is NULL padded.</p>
<p><strong>Internet IPv6 address binary.</strong> The binary representation of
the neighbor's IPv6 address. Even though this field is defined as a character
field, binary data will be returned in it.</p>
<p><strong>Is router.</strong> Whether this neighbor is a router. Possible
values are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No, this neighbor is not a router.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Yes, this neighbor is a router.</td>
</tr>
</table>
<p><strong>Line name.</strong> The name of the communications line description
that identifies the physical interface which is directly connected to this
neighbor.</p>
<p><strong>Link layer address.</strong> The MAC address of the neighbor's
network interface. Format: XX:XX:XX:XX:XX:XX, where each 'X' is a hexadecimal
digit.</p>
<p><strong>Link layer address binary.</strong> The binary representation of the
neighbor's six byte link layer address.</p>
<p><strong>Max multicast solicits.</strong> The current value of the configured
Neighbor solicitation max multicast solicits stack attribute. This attribute
controls the maximum number of multicast Neighbor Solicitations which will be
sent out when the system is performing link-layer address resolution for
another host (neighbor). If no Neighbor Advertisement is received after the
maximum number of Neighbor Solicitations have been sent out, address resolution
has failed, and an ICMPv6 error message will be returned to the application.
Valid values range from 1 through 5 transmissions.</p>
<p><strong>Max unicast solicits.</strong> The current value of the configured
Neighbor solicitation max unicast solicits stack attribute. This attribute
controls the maximum number of unicast Neighbor Solicitations which will be
sent out when the system is performing link-layer address resolution for
another host with unicast Neighbor Solicitations. Multicast is the normal way
to perform Neighbor Discovery, but unicast Neighbor Solicitations will be used
if the local physical interface is not multicast-capable. If no Neighbor
Advertisement is received after the maximum number of Neighbor Solicitations
have been sent out, address resolution has failed, and an ICMPv6 error message
will be returned to the application. Valid values range from 1 through 5
transmissions.</p>
<p><strong>Number of multicast neighbor solicitation packets sent.</strong> The
total number of multicast Neighbor Solicitations which have been sent from the
local system to this neighbor.</p>
<p><strong>Number of unicast neighbor solicitation packets sent.</strong> The
total number of unicast Neighbor Solicitations which have been sent from the
local system to this neighbor.</p>
<p><strong>Reserved.</strong> An ignored field.</p>
<p><strong>Reachability state.</strong> The reachability state of this neighbor
cache entry. Possible values are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">ERROR - An error has occured while verifying the
reachability of this neighbor. Use the returned Reachability state error
information field value for more information about this error.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">INCOMPLETE - Address resolution is being
performed on the entry. Specifically, a Neighbor Solicitation has been sent to
the solicited-node multicast address of the target, but the corresponding
Neighbor Advertisement has not yet been received.</td>
</tr>
<tr>
<td align="left" valign="top"><em>2</em></td>
<td align="left" valign="top">REACHABLE - Positive confirmation was received
that the forward path to the neighbor was functioning properly. While
REACHABLE, no special action takes place as packets are sent.</td>
</tr>
<tr>
<td align="left" valign="top"><em>3</em></td>
<td align="left" valign="top">STALE - The STALE state is entered upon receiving
an unsolicited Neighbor Discovery message that updates the cached link-layer
address. Receipt of such a message does not confirm reachability, and entering
the STALE state insures reachability is verified quickly if the entry is
actually being used. However, reachability is not actually verified until the
entry is actually used. While STALE, no action takes place until a packet is
sent.<br>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>4</em></td>
<td align="left" valign="top">DELAY - This neighbor is assumed to be reachable,
and the system is now trying to verify reachability.<br>
<br>
</td>
</tr>
<tr>
<td align="left" valign="top"><em>5</em></td>
<td align="left" valign="top">PROBE - A reachability confirmation is actively
being sought by retransmitting Neighbor Solicitations every "Retransmit
interval" seconds until a reachability confirmation is received.</td>
</tr>
<tr>
<td align="left" valign="top"><em>6</em></td>
<td align="left" valign="top">DELETING - The TCP/IP stack is currently in the
process of deleting this neighbor entry from the Neighbor Cache.</td>
</tr>
</table>
<p><strong>Reachability state change - date.</strong> The date of the last
change of this neighbor's Reachability state. The format of the characters in
this field is "YYYYMMDD".</p>
<p>The meaning of those characters is as follows:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>YYYY</em></td>
<td align="left" valign="top">Year</td>
</tr>
<tr>
<td align="left" valign="top"><em>MM</em></td>
<td align="left" valign="top">Month</td>
</tr>
<tr>
<td align="left" valign="top"><em>DD</em></td>
<td align="left" valign="top">Day</td>
</tr>
</table>
<p><strong>Reachability state change - time.</strong> The time of the last
change of this neighbor's Reachability state. The format of the characters in
this field is "HHMMSSmmm".</p>
<p>The meaning of those characters is as follows:</p>
<table cellpadding="5">
<!-- cols="15 85" -->
<tr>
<td align="left" valign="top"><em>HH</em></td>
<td align="left" valign="top">Hours</td>
</tr>
<tr>
<td align="left" valign="top"><em>MM</em></td>
<td align="left" valign="top">Minutes</td>
</tr>
<tr>
<td align="left" valign="top"><em>SS</em></td>
<td align="left" valign="top">Seconds</td>
</tr>
<tr>
<td align="left" valign="top"><em>mmm</em></td>
<td align="left" valign="top">Milliseconds</td>
</tr>
</table>
<p><strong>Reachability state error information.</strong> The error code for
this Neighbor Cache entry when the Reachability state is ERROR. This value is
only useful when the Reachability state field value is ERROR. Possible values
are:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>0</em></td>
<td align="left" valign="top">No error.</td>
</tr>
<tr>
<td align="left" valign="top"><em>1</em></td>
<td align="left" valign="top">Unknown. An unknown error has occurred.</td>
</tr>
</table>
<p><strong>Reserved.</strong> An ignored field.</p>
<p><strong>Time in reachable state.</strong> The length of time, in seconds,
that this neighbor has been in the Reachable state. The following special value
may be returned:</p>
<table cellpadding="5">
<!-- cols="5 95" -->
<tr>
<td align="left" valign="top"><em>-1</em></td>
<td align="left" valign="top">This neighbor currently is not in the Reachable
state.</td>
</tr>
</table>
<br>
<br>
<h3>Error Messages</h3>
<table width="100%" cellpadding="5">
<!-- cols="15 85" -->
<tr>
<th align="left" valign="top" nowrap>Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td align="left" valign="top">TCP84C0 E</td>
<td align="left" valign="top">TCP/IP stack not active.</td>
</tr>
<tr>
<td align="left" valign="top">TCP84C3 E</td>
<td align="left" valign="top">The specified line name does not exist.</td>
</tr>
<tr>
<td align="left" valign="top">TCP84C5 E</td>
<td align="left" valign="top">API error providing TCP/IP Network Status
information.</td>
</tr>
<tr>
<td align="left" valign="top">TCP84C6 E</td>
<td align="left" valign="top">Internal operations error - RESULT &amp;1 CC
&amp;2 RC &amp;3 ERRNO &amp;4.</td>
</tr>
<tr>
<td align="left" valign="top">TCP84C9 I</td>
<td align="left" valign="top">Information returned incomplete.</td>
</tr>
<tr>
<td align="left" valign="top">TCP84CB E</td>
<td align="left" valign="top">Specified line &amp;1 not configured for
IPv6.</td>
</tr>
<tr>
<td align="left" valign="top">TCP84CC E</td>
<td align="left" valign="top">Specified line &amp;1 does not support Neighbor
Discovery for IPv6.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24B4 E</td>
<td align="left" valign="top">Severe error while addressing parameter
list.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C21 E</td>
<td align="left" valign="top">Format name &amp;1 is not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C90 E</td>
<td align="left" valign="top">Literal value cannot be changed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF1 E</td>
<td align="left" valign="top">Error code parameter not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF8100 E</td>
<td align="left" valign="top">All CPF81xx messages could be returned. xx is
from 01 to FF.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9801 E</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9802 E</td>
<td align="left" valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9803 E</td>
<td align="left" valign="top">Cannot allocate object &amp;2 in library
&amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9807 E</td>
<td align="left" valign="top">One or more libraries in library list
deleted.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9808 E</td>
<td align="left" valign="top">Cannot allocate one or more libraries on library
list.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9810 E</td>
<td align="left" valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9820 E</td>
<td align="left" valign="top">Not authorized to use library &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9830 E</td>
<td align="left" valign="top">Cannot assign library &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9872 E</td>
<td align="left" valign="top">Program or service program &amp;1 in library
&amp;2 ended. Reason code &amp;3.</td>
</tr>
</table>
<br>
<hr>
API introduced: V5R2
<hr>
<center>
<table cellpadding="2" cellspacing="2" align="center">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"comm.htm">Communications APIs</a> | <a href="aplist.htm">APIs by
category</a></td>
</tr>
</table></center>
</body>
</html>