You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bu...@apache.org on 2013/12/24 19:32:22 UTC

svn commit: r891679 [11/24] - in /websites/staging/trafficserver/trunk: cgi-bin/ content/ content/docs/ content/docs/trunk/ content/docs/trunk/admin/ content/docs/trunk/admin/cluster-howto/ content/docs/trunk/admin/configuration-files/ content/docs/tru...

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/CreatingTSPlugins.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/CreatingTSPlugins.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/CreatingTSPlugins.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,220 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Chapter 2. How to Create Traffic Server Plugins</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="NamingConventions.html">Prev</a> - Naming Conventions</div>
+<div class="navnext">Roadmap for Creating Plugins - <a accesskey="n" href="Roadmap_CreatingPlugins.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="CreatingTSPlugins"></a>Chapter 2. How to Create Traffic Server Plugins</h2></div></div></div>
+<p><b>Table of Contents</b></p>
+<ul>
+<li><span class="section"><a href="CreatingTSPlugins.html#AsynchronousEventModel">The Asynchronous Event Model</a></span></li>
+<ul>
+<li> <span class="section"><a href="CreatingTSPlugins.html#HTTPTransaction_WhatIs">HTTP Transaction</a></span></li>
+<li> <span class="section"><a href="CreatingTSPlugins.html##TypesOfHooks">Types of Hooks</a></span></li>
+</ul>
+
+<li><span class="section"><a href="Roadmap_CreatingPlugins.html">Roadmap for Creating Plugins</a></span></li>
+
+</ul>
+<div> </div>
+
+<p>This chapter provides a foundation for designing and writing
+    plugins. Reading this chapter will help you to understand:</p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+  <p>The asynchronous event mode. This is the design paradigm used
+        throughout Traffic Server; plugins must also follow this design. It
+        includes the callback mechanism for Traffic Server to "wake up" your
+        plugin and put it to work.</p></li>
+<li>
+  <p>Traffic Server's HTTP processing, with an overview of the HTTP state
+        machine.</p></li>
+<li><p>How plugins can hook onto and modify/extend Traffic Server's
+        HTTP processing.</p></li>
+<li>
+  <p>A <a href="Roadmap_CreatingPlugins.html">roadmap for writing plugins</a>, with an overview of the
+        functionality provided by the Traffic Server API.</p></li>
+</ul></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="AsynchronousEventModel"></a>The Asynchronous Event Model</h2></div></div></div>
+<p>Traffic Server is a multi-threaded process. There are two main
+      reasons why a server might use multiple threads:</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p>To take advantage of the concurrency available with multiple
+          CPUs and multiple I/O devices.</p></li>
+<li><p>To manage concurrency from having many simultaneous client
+          connections. For example, a server could create one thread for each
+          connection, allowing the operating system (OS) to control switching
+          between threads.</p></li>
+</ul></div>
+<p>Traffic Server uses multiple threads for the first reason. However, 
+      Traffic Server does not use a separate OS thread per transaction because
+      it would not be efficient when handling thousands of simultaneous
+      connections.</p>
+<p>Instead, Traffic Server provides special event-driven mechanisms
+      for efficiently scheduling work: the event system and continuations. The
+      <span class="bold"><strong>event system</strong></span> is
+      used to schedule work to be done on threads. A <span class="bold"><b>continuation</b></span> is a passive,
+      event-driven state machine that can do some work until it reaches a
+      waiting point; it then sleeps until it receives notification that
+      conditions are right for doing more work. For example, HTTP state
+      machines (which handle HTTP transactions) are implemented as
+      continuations.</p>
+<p>Continuation objects are used throughout Traffic Server. Some
+      might live for the duration of the Traffic Server process, while others are
+      created (perhaps by other continuations) for specific needs and then
+      destroyed. <a href="CreatingTSPlugins.html#Fig_TSInternals" title="Figure 2.1. Traffic Server Internals">Traffic Server Internals</a> (below) shows how the major
+      components of Traffic Server interact. Traffic Server has several
+      <span class="bold"><b>processors</b></span>, such
+      as <i>cache processor</i> and <i>net processor</i>, that consolidate cache or network
+      I/O tasks. Processors talk to the event system and schedule work on
+      threads. An executing thread calls back a continuation by sending it an
+      event. When a continuation receives an event, it wakes up, does some
+      work, and either destroys itself or goes back to sleep &amp; waits for the
+      next event.</p>
+<div class="figure">
+<a name="Fig_TSInternals"></a><p class="title"><b>Figure 2.1. Traffic Server Internals</b></p>
+<div class="mediaobject"><img src="images/event_sys80.jpg" alt="Traffic Server Internals" /></div>
+</div>
+<p>Plugins are typically implemented as continuations. All of the
+      sample code plugins (except <code class="filename">hello-world</code>) are
+      continuations that are created when Traffic Server starts up; they then wait
+      for events that trigger them into activity.</p>
+<div class="figure">
+<a name="Fig_TSwithPlugins"></a><p class="title"><b>Figure 2.2. Traffic Server with Plugins</b></p>
+<div class="mediaobject"><img src="images/evt_plugin120.jpg" alt="Traffic Server with Plugins" /></div>
+</div>
+<p>A plugin may consist of just one static continuation that is
+      called whenever certain events happen. Examples of such
+      plugins include <code class="filename">blacklist-1.c</code>,
+      <code class="filename">basic-auth.c</code>, and
+      <code class="filename">redirect-1.c</code>. Alternatively, a plugin might
+      dynamically create other continuations as needed. Transform plugins are
+      built in this manner: a static parent continuation checks all
+      transactions to see if any are transformable; when a transaction is
+      transformable, the static continuation creates a type of continuation
+      called a <span class="bold"><strong>vconnection</strong></span>. The
+      vconnection lives as long as it takes to complete the transform and
+      then destroys itself. This design can be seen in all of the sample
+      transform plugins. Plugins that support new protocols also have this
+      architecture: a static continuation listens for incoming client
+      connections and then creates transaction state machines to handle each
+      protocol transaction.</p>
+<p>When you write plugins, there are several ways to send events to
+      continuations. For HTTP plugins, there is a "hook" mechanism that
+      enables the Traffic Server HTTP state machine to send your plugin wakeup
+      calls when needed. Additionally, several Traffic Server API functions
+      trigger Traffic Server sub-processes to send events to plugins:
+      <code class="code">INKContCall</code>, <code class="code">INKVConnRead</code>,
+      <code class="code">INKCacheWrite</code>, and <code class="code">INKMgmtUpdateRegister</code>, to
+      name a few.</p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="TSHTTPStateMachine"></a>Traffic Server HTTP State Machine</h3></div></div></div>
+<p>Traffic Server performs sophisticated HTTP caching and proxying. Important
+        features include checking for alternates and document freshness,
+        filtering, supporting cache hierarchies, and hosting. Traffic Server
+        handles thousands of client requests at a time and each request is
+        handled by an HTTP state machine. These machines follow a complex
+        state diagram that includes all of the states required to support
+        Traffic Server's features. The Traffic Server API provides hooks to a
+        subset of these states, chosen for their relevance to plugins. You can
+        view the API hooks and corresponding HTTP states in the <a href="HTTPHooksAndTransactions.html#Fig_HHTTPTxStateDiag" title="Figure 8.1. HTTP Transaction State Diagram"> HTTP Transaction State Diagram</a>.</p>
+<p>The example in this section (below) explains how a plugin typically
+        intervenes and extends Traffic Server's processing of an HTTP
+        transaction. Complete details about hooking on to Traffic Server
+        processes are provided in <a href="HTTPHooksAndTransactions.html" title="Chapter 8. HTTP Hooks and Transactions">HTTP Hooks and Transactions</a>.</p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="HTTPTransaction_WhatIs"></a>HTTP Transaction</h4></div></div></div>
+<p>An HTTP transaction consists of a client request for a web
+          document and Traffic Server's response. The response could be the
+          requested web server content or it could be an error message. The
+          content could come from the Traffic Server cache or Traffic Server
+          might fetch it from the origin server. The following diagram shows
+          some states in a typical transaction - specifically, the scenario
+          wherein content is served from cache.</p>
+<div class="figure">
+<a name="Fig_HTTPTransaction"></a><p class="title"><b>Figure 2.3. Simplified HTTP Transaction</b></p>
+<div class="mediaobject"><img src="images/transact75.jpg" alt="Simplified HTTP Transaction" /></div>
+</div>
+<p>In the diagram above, Traffic Server accepts the client
+          connection, reads the request headers, looks up the origin server's
+          IP address, and looks for the requested content in the cache. If
+          the content is not in the cache (a "miss"), then Traffic Server opens a
+          connection to the origin server and issues a request for the
+          content. If the content is in the cache (a "hit"), then Traffic
+          Server checks it for freshness.</p>
+<p>If the content is fresh, then Traffic Server sends a reply
+          header to the client. If the content is stale, then Traffic Server
+          opens a connection to the origin server and requests the content.
+          The figure above, <a href="CreatingTSPlugins.html#Fig_HTTPTransaction" title="Figure 2.3. Simplified HTTP Transaction">Simplified HTTP Transaction</a>, does
+          <span class="emphasis"><em>not</em></span> show  behavior in the event of an error. If there is an error at a any
+          stage, then the HTTP state machine jumps to the "send reply header"
+          state and sends a reply. If the reply is an error, then the
+          transaction closes. If the reply is not an error, then Traffic
+          Server first sends the response content before it closes the
+          transaction.</p>
+<div class="figure">
+<a name="Fig_APIHooks_States"></a>
+<p class="title"><b>Figure 2.4. API Hooks Corresponding to States Listed in the previous <a href="CreatingTSPlugins.html#Fig_HTTPTransaction" title="Figure 2.3. Simplified HTTP Transaction">Simplified HTTP Transaction</a> Diagram</b></p>
+<div class="mediaobject"><img src="images/transact_hook75.jpg" alt="API Hooks Corresponding to States Listed in" /></div>
+</div>
+<p>You use hooks as triggers to start your plugin. The name of a
+          hook reflects the Traffic Server state that was <span class="emphasis"><em>just
+          completed</em></span>. For example, the "OS DNS lookup" hook 
+          wakes up a plugin right <span class="emphasis"><em>after</em></span> the origin server
+          DNS lookup. For a plugin that requires the IP address of the
+          requested origin server, this hook is the right one to use. The
+          Blacklist plugin works in this manner, as shown in the <a href="CreatingTSPlugins.html#Fig_BlacklistPlugin" title="Figure 2.5. Blacklist Plugin">Blacklist Plugin</a>  diagram below.</p>
+<div class="figure">
+<a name="Fig_BlacklistPlugin"></a><p class="title"><b>Figure 2.5. Blacklist Plugin</b></p>
+<div class="mediaobject"><img src="images/blacklist75.jpg" alt="Blacklist Plugin" /></div>
+</div>
+<p>Traffic Server calls the Blacklist plugin right after the
+          origin server DNS lookup. The plugin checks the requested host
+          against a list of blacklisted servers; if the request is allowed,
+          then the transaction proceeds. If the host is forbidden, then the
+          Blacklist plugin sends the transaction into an error state. When the
+          HTTP state machine gets to the "send reply header" state, it then
+          calls the Blacklist plugin to provide the error message that's sent
+          to the client.</p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="TypesOfHooks"></a>Types of Hooks</h4></div></div></div>
+<p>The Blacklist plugin's hook to the "origin server DNS lookup"
+          state is a <em class="glossterm"><em class="glossterm"><span class="bold"><strong>global
+          hook</strong></span></em></em>, meaning that
+          the plugin is called <i>every time</i> there's an HTTP transaction with a
+          DNS lookup event. The plugin's hook to the "send reply header" state
+          is a <span class="bold"><strong>tr</strong></span><em class="glossterm"><span class="bold"><strong>ansaction
+          hook</strong></span></em>, meaning that this hook is
+          only invoked for <i>specified transactions</i> (in the Blacklist example,
+          it's only used for requests to blacklisted servers). Several
+          examples of setting up hooks are provided in the code example
+          chapters: <a href="HeaderBasedPluginEx.html" title="Chapter 4. Header-Based Plugin Examples">Header-Based Plugin Examples</a> and <a href="HTTPTransformationPlugins.html" title="Chapter 5. HTTP Transformation Plugins">HTTP Transformation Plugins</a>.</p>
+<p><span class="bold"><strong>Header manipulation
+          plugins</strong></span>, such as filtering, basic
+          authorization, or redirects, usually have a global hook to the DNS
+          lookup or the read request header states. If specific actions need
+          to be done to the transaction further on, then the plugin adds
+          itself to a transaction hook. <span class="bold"><strong>Transformation plugins</strong></span>
+          require a <b>global hook </b>to check all transactions for transformability
+          followed by a <b>transform hook</b>, which is a type of transaction hook
+          used specifically  for transforms.</p>
+</div>
+</div>
+</div>
+
+</div></body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/CreatingTSPlugins.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/CustInstallLicenseFunctions.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/CustInstallLicenseFunctions.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/CustInstallLicenseFunctions.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Customer Installation and Licensing Functions</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="INKMgmtStringGet.html">Prev</a> - INKMgmtStringGet</div>
+<div class="navnext">INKPluginDirGet - <a accesskey="n" href="INKPluginDirGet.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="CustInstallLicenseFunctions"></a>Customer Installation and Licensing Functions</h2></div></div></div>
+
+
+<ul><b>
+<li><a href="CustInstallLicenseFunctions.html#INKInstallDirGet">INKInstallDirGet</a></li>
+<li><a href="INKPluginDirGet.html">INKPluginDirGet</a></li>
+<li><a href="INKPluginLicenseRequired.html">INKPluginLicenseRequired</a></li>
+</b>
+</ul>
+
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="INKInstallDirGet"></a>INKInstallDirGet</h3></div></div></div>
+<p>Gets the Traffic Server install directory.</p>
+<div class="variablelist"><dl>
+<dt><span class="term"><b>Prototype</b></span></dt>
+<dd>
+  <p><code class="code">const char *INKInstallDirGet(void)</code></p></dd>
+<dt><span class="term"><b>Description</b></span></dt>
+<dd>
+  <p>Gets the Traffic Server installation directory.</p></dd>
+<dt><span class="term"><b>Returns</b></span></dt>
+<dd><p>A pointer to a string containing  Traffic Server's
+        installation directory.</p></dd>
+</dl></div>
+</div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/CustInstallLicenseFunctions.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DebuggingFunctions.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/DebuggingFunctions.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/DebuggingFunctions.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,79 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Debugging Functions</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="INKTrafficServerVersionGet.html">Prev</a> - INKTrafficServerVersionGet</div>
+<div class="navnext">INKIsDebugTagSet - <a accesskey="n" href="INKIsDebugTagSet.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="DebuggingFunctions"></a>Debugging Functions</h2></div></div></div>
+
+<b><ul>
+<li><span class="section"><a href="DebuggingFunctions.html#INKDebug">INKDebug</a></span></li>
+<li><span class="section"><a href="INKIsDebugTagSet.html">INKIsDebugTagSet</a></span></li>
+<li><span class="section"><a href="INKError.html">INKError</a></span></li>
+<li><span class="section"><a href="INKAssert.html">INKAssert</a></span></li>
+<li><span class="section"><a href="INKReleaseAssert.html">INKReleaseAssert</a></span></li>
+</ul>
+</b>
+
+<div class="section" lang="en">
+  <div class="titlepage"><div><div><h3 class="title">
+<a name="INKDebug"></a>INKDebug</h3></div></div></div>
+<p>Issues debug statements.</p>
+<div class="variablelist"><dl>
+<dt><span class="term"><b>Prototype</b></span></dt>
+<dd><p><code class="code">void INKDebug (const char
+              <em class="replaceable"><code>*tag</code></em>, const char
+              <em class="replaceable"><code>*format_str</code></em>, ...)</code></p></dd>
+<dt><span class="term"><b>Arguments</b></span></dt>
+<dd>
+<p><code class="code"><em class="replaceable"><code>tag</code></em></code><i><code> </code></i>is the Traffic Server parameter
+              that enables Traffic Server to print out 
+              <em class="parameter"><code> </code><code class="code"><em class="replaceable"><code> format_str</code></em></code></em></p>
+<p><code class="code">... </code>is a variable for 
+              <code><i>format_str</i></code></p>
+</dd>
+<dt><span class="term"><b>Description</b></span></dt>
+<dd>
+<p>If debugging is enabled, then <code class="code">INKDebug</code> prints out the statement <em class="parameter"><code class="code"><em class="replaceable"><code>format_str</code></em></code></em>. There are two
+              ways to enable debugging:</p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<p>Run Traffic Server with the
+                  <code class="option">-Ttag</code> option. <br />For example, if the tag
+                  is</p>
+<pre class="programlisting">my-plugin: traffic_server -Tmy-plugin</pre>
+<p>then the debug output goes to
+                  <code class="filename">traffic.out</code></p>
+</li>
+<li>
+<p>Set the
+                  following variables in <code class="filename">records.config</code>
+                  (in the Traffic Server <code>config</code> directory):</p>
+<pre class="programlisting">proxy.config.diags.debug.enabled INT 1
+proxy.config.diags.debug.tags STRING debug-tag-name</pre>
+<p>In this case, the debug output goes to
+                  <code class="filename">traffic.out</code></p>
+</li>
+</ul></div>
+</dd>
+<dt><span class="term"><b>Example</b></span></dt>
+<dd>
+<p><code class="code">INKDebug ("my-plugin", "Starting my-plugin at %d\n",
+              the_time);</code></p>
+<p>The statement <code>"Starting my-plugin at <em class="replaceable">&lt;time&gt;</em>" </code>appears whenever you
+  run Traffic Server with the <code>my-plugin</code> tag:</p>
+<pre class="programlisting">traffic_server -Tmy-plugin</pre>
+  </dd>
+</dl></div>
+</div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DebuggingFunctions.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_IOBufferInterface.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_IOBufferInterface.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_IOBufferInterface.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,121 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>IO Buffer Interface</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="OtherDeprecatedFunctions.html">Prev</a> - Other Deprecated Functions:  Deprecated Statistics Fxns</div>
+<div class="navnext">Deprecated Mutex Functions - <a accesskey="n" href="Dep_MutexFunctions.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div>
+  <h3 class="title">
+<a name="Dep_IOBufferInterface"></a>Deprecated IO Buffer Interface Functions</h3></div></div></div>
+<ul><b>
+<li><a href="Dep_IOBufferInterface.html#INKIOBufferAppend">INKIOBufferAppend</a></li>
+<li><a href="Dep_IOBufferInterface.html#INKIOBufferBlockCreate">INKIOBufferBlockCreate</a></li>
+<li><a href="Dep_IOBufferInterface.html#INKIOBufferDataCreate">INKIOBufferDataCreate</a></li>
+</b>
+</ul>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKIOBufferAppend"></a>INKIOBufferAppend</h4></div></div></div>
+<p>Appends to an IO buffer.</p>
+<div class="variablelist"><dl>
+<dt><span class="term"><b>Prototype</b></span></dt>
+<dd><p><code>INKReturnCode INKIOBufferAppend (INKIOBuffer <span class="replaceable">bufp</span>,
+        INKIOBufferBlock <span class="replaceable">blockp</span>)</code></p></dd>
+<dt><span class="term"><b>Description</b></span></dt>
+<dd><p>Appends a block to the IO buffer <code class="replaceable"> bufp</code>. The data in the
+        appended block is made available for reading.</p></dd>
+<dt><span class="term"><b>Returns</b></span></dt>
+<dd>
+<p><code>INK_SUCCESS</code> if the block was successfully appended to
+                the specified IO buffer.</p>
+<p><code>INK_ERROR</code> if an error occurred.</p>
+</dd>
+</dl></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKIOBufferBlockCreate"></a>INKIOBufferBlockCreate</h4></div></div></div>
+<p>Creates an IO buffer block.</p>
+<div class="variablelist"><dl>
+<dt><span class="term"><b>Prototype</b></span></dt>
+<dd><p><code class="code">INKIOBufferBlock INKIOBufferBlockCreate
+                (INKIOBufferData <em class="replaceable"><code>datap</code></em>, int
+                <em class="replaceable"><code>size</code></em>, int
+                <em class="replaceable"><code>offset</code></em>)</code></p></dd>
+<dt><span class="term"><b>Description</b></span></dt>
+<dd>
+  <p>Creates a new IO buffer block and initializes it with
+                the IO buffer data 
+                <code class="code"><em class="replaceable"><code> datap</code></em></code>. </p></dd>
+<dd>
+  <p>The <code class="code"><em class="replaceable"><code> size </code></em></code> parameter is the
+    amount of data initially available for reading in this
+    new buffer block. </p>
+</dd>
+<dd>
+  <p>The <code class="code"><em class="replaceable"><code>offset </code></em></code> parameter is
+    the offset into <code class="code"><em class="replaceable"><code> datap </code></em></code>
+    that will be used as the start for the block. </p>
+</dd>
+<dd>
+  <p>Two
+     common uses for <code class="function">INKIOBufferBlockCreate</code>
+    are to create an empty block (by specifying size as <code>0</code>) and to
+    create a full block (by specifying <code class="code"><em class="replaceable"><code>size </code></em></code> as the total size of <code class="code"><em class="replaceable"><code>datap</code></em></code>). </p>
+</dd>
+<dd>
+  <p>The newly-created block should be added
+    almost immediately to an IO buffer by a call to <code class="function">INKIOBufferAppend</code>, since there is no
+    function for destroying a buffer block other than  simply relying 
+    on its automatic  destruction by an IO buffer.</p>
+</dd>
+<dt><span class="term"><b>Returns</b></span></dt>
+<dd>
+  <p>The newly-created IO buffer block.</p></dd>
+</dl></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKIOBufferDataCreate"></a>INKIOBufferDataCreate</h4></div></div></div>
+<p>Creates IO buffer data.</p>
+<div class="variablelist"><dl>
+<dt><span class="term"><b>Prototype</b></span></dt>
+<dd><p><code class="code">INKIOBufferData INKIOBufferDataCreate (void*
+                <em class="replaceable"><code>data</code></em>, int
+                <em class="replaceable"><code>size</code></em>, INKIOBufferDataFlags
+                <em class="replaceable"><code>flags</code></em>)</code></p></dd>
+<dt><span class="term"><b>Description</b></span></dt>
+<dd>
+<p>Creates  new IO buffer data and initializes it with 
+                <code class="code"><em class="replaceable"><code> data</code></em></code>, 
+                <code class="code"><em class="replaceable"><code> size</code></em></code>. The
+                <code class="code"><em class="replaceable"><code>flags </code></em></code> parameter
+                specifies how to interpret the data:</p>
+<li><code class="code"><b>INK_DATA_ALLOCATE</b></code></li>
+  <p>The data pointer is <code class="code">NULL</code> and the data
+                associated with the <code class="function">INKIOBufferData</code>
+                should be allocated.
+                <code class="function">INKIOBufferDataCreate</code> rounds size to a
+                power of 2 less than or equal to 32K.</p><li><code class="code"><b>INK_DATA_MALLOCED</b></code></li>
+  <p>The data pointer was allocated by
+                <code class="function">INKmalloc</code> and will be freed when the last
+                reference to the new <code class="function">INKIOBufferData</code> is
+                released by a call to <code class="function">INKfree</code>.</p><li><code class="code"><b>INK_DATA_CONSTANT</b></code></li>
+  <p>The data pointer is data that should not be freed when
+                the last reference to the new
+                <code class="function">INKIOBufferData</code> is released.</p></dd>
+<dt><span class="term"><b>Returns</b></span></dt>
+<dd>
+  <p>A handle to the newly-created IO buffer.</p></dd>
+</dl></div>
+</div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_IOBufferInterface.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_MutexFunctions.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_MutexFunctions.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_MutexFunctions.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Mutex Function</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="Dep_IOBufferInterface.html">Prev</a> - Deprecated IO Buffer Interface Functions</div>
+<div class="navnext">Appendix C. Troubleshooting Tips - <a accesskey="n" href="App_Troubleshooting.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div>
+  <h3 class="title">
+<a name="Dep_MutexFunctions"></a>Deprecated Mutex Functions</h3></div></div></div>
+<ul><b>
+<li><a href="Dep_MutexFunctions.html#INKMutexTryLock">INKMutexTryLock</a></li>
+</b>
+</ul>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="INKMutexTryLock">INKMutexTryLock</a></h4></div></div></div>
+<p>Tries to lock an <code class="code">INKMutex</code>. This API has been replaced by
+    <code class="code">INKMutexLockTry</code>.</p>
+<div class="variablelist"><dl>
+<dt><span class="term"><b>Prototype</b></span></dt>
+<dd><p><code class="code">INKReturnCode InkMutexTryLock (INKMutex
+                <em class="replaceable"><code>mutex</code></em>, int
+                *<em class="replaceable"><code>is_mutex_lock</code></em>)</code></p></dd>
+<dt><span class="term"><b>Description</b></span></dt>
+<dd>
+<p>Tries to lock the <code class="code">INKMutex</code> mutex.</p>
+<p>In general, you should use <code class="code">InkMutexTryLock</code> (or rather, <code>INKMutexLockTry</code>) to obtain a
+                mutex. See the example below.</p>
+</dd>
+<dt><span class="term"><b>Returns</b></span></dt>
+<dd>
+<p>If the mutex was successfully locked, then <code>1</code> is
+                returned.</p>
+<p>If the mutex is already locked, then <code>0</code> is
+                returned.</p>
+</dd>
+<dt><span class="term"><b>Example</b></span></dt>
+<dd>
+  <pre class="programlisting">int handler (INKCont contp, INKEvent event, void *edata)
+{
+   //This continuation tries to grab a mutex.
+   int lock = InkMutexTryLock (mutex);
+   if (!lock)
+   {
+   /* Schedule a retry; RETRY_TIME should be 10 ms or longer. */
+      INKContSchedule (contp, RETRY_TIME); 
+      return INK_EVENT_IMMEDIATE;
+   }
+
+   // Now the mutex is grabbed.
+   do_some_job ...
+   INKMutexUnlock (mutexp);
+}</pre></dd>
+</dl></div>
+</div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/Dep_MutexFunctions.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DeprecatedMarshBufFuncs.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/DeprecatedMarshBufFuncs.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/DeprecatedMarshBufFuncs.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Deprecated Functions</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="RlsMarshalBufHandles.html">Prev</a> - Release Marshal Buffer Handles</div>
+<div class="navnext">Marshal Buffers - <a accesskey="n" href="MarshalBuffers.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="DeprecatedMarshBufFuncs"></a>Deprecated Functions<a class="indexterm" name="id381488"></a></h3></div></div></div>
+<p>The following  marshal buffer functions and MIME field functions are
+        deprecated in this release; do not use them.</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p><code class="function">INKMBufferCompress</code></p></li>
+<li><p><code class="function">INKMBufferDataGet</code></p></li>
+<li><p><code class="function">INKMBufferDataSet</code></p></li>
+<li><p><code class="function">INKMBufferLengthGet</code></p></li>
+<li><p><code class="function">INKMBufferRef</code></p></li>
+<li><p><code class="function">INKMBufferUnref</code></p></li>
+</ul></div>
+<p>The following MIME field functions are deprecated. If you need
+        to support these functions in existing code, then reference <a href="App_DeprecatedFunctions.html" title="Appendix B. Deprecated Functions">Deprecated Functions</a>.</p>
+<div class="itemizedlist"><ul type="disc">
+<li><p><code class="function">INKMimeFieldCreate</code></p></li>
+<li><p><code class="function">INKMimeFieldDestroy</code></p></li>
+<li><p><code class="function">INKMimeFieldCopy</code></p></li>
+<li><p><code class="function">INKMimeFieldCopyValues</code></p></li>
+<li><p><code class="function">INKMimeFieldNext</code></p></li>
+<li><p><code class="function">INKMimeFieldLengthGet</code></p></li>
+<li><p><code class="function">INKMimeFieldNameGet</code></p></li>
+<li><p><code class="function">INKMimeFieldNameSet</code></p></li>
+<li><p><code class="function">INKMimeFieldValuesClear</code></p></li>
+<li><p><code class="function">INKMimeFieldValuesCount</code></p></li>
+<li><p><code class="function">INKMimeFieldValueGet</code></p></li>
+<li><p><code class="function">INKMimeFieldValueGetInt</code></p></li>
+<li><p><code class="function">INKMimeFieldValueGetUint</code></p></li>
+<li><p><code class="function">INKMimeFieldValueGetDate</code></p></li>
+<li><p><code class="function">INKMimeFieldValueSet</code></p></li>
+<li><p><code class="function">INKMimeFieldValueSetInt</code></p></li>
+<li><p><code class="function">INKMimeFieldValueSetUint</code></p></li>
+<li><p><code class="function">INKMimeFieldValueSetDate</code></p></li>
+<li><p><code class="function">INKMimeFieldValueAppend</code></p></li>
+<li><p><code class="function">INKMimeFieldValueInsert</code></p></li>
+<li><p><code class="function">INKMimeFieldValueInsertInt</code></p></li>
+<li><p><code class="function">INKMimeFieldValueInsertUint</code></p></li>
+<li><p><code class="function">INKMimeFieldValueInsertDate</code></p></li>
+<li><p><code class="function">INKMimeFieldValueDelete</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueGet</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueGetDate</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueGetInt</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueGetUint</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueInsert</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueInsertDate</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueInsertInt</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueInsertUint</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueSet</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueSetDate</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueSetInt</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldValueSetUint</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldDelete</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldInsert</code></p></li>
+<li><p><code class="function">INKMimeHdrFieldRetrieve</code></p></li>
+</ul></div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DeprecatedMarshBufFuncs.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheRemove.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheRemove.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheRemove.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,29 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>How to Do a Cache Remove</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="DoACacheWrite.html">Prev</a> - How to Do a Cache Write</div>
+<div class="navnext">Errors - <a accesskey="n" href="Errors_Cache.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="DoACacheRemove"></a>How to Do a Cache Remove</h3></div></div></div>
+<p>Use <code class="function">INKCacheRemove</code> to remove items from the
+        cache. Possible callback events include:</p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+  <p><code class="code">INK_EVENT_CACHE_REMOVE</code> - the item was removed.
+            There is no data payload for this event.</p></li>
+<li>
+  <p><code class="code">INK_EVENT_CACHE_REMOVE_FAILED</code> - indicates 
+            the cache was unable to remove the item idetified by the cache
+            key. <code class="function">INKCacheError</code> data indicates why the remove failed.</p></li>
+</ul></div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheRemove.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheWrite.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheWrite.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheWrite.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,32 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>How to Do a Cache Write</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="CacheAPI.html">Prev</a> - Guide to the Cache API</div>
+<div class="navnext">How to Do a Cache Remove - <a accesskey="n" href="DoACacheRemove.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="DoACacheWrite"></a>How to Do a Cache Write</h3></div></div></div>
+<p>Use <code class="function">INKCacheWrite</code> to write to a cache (see
+        the <a href="#NewProtocolPlugins.html#AboutSampleProtocol">sample Protocol plugin</a>). Possible callback events
+        include:</p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+  <p><code class="code">INK_EVENT_CACHE_WRITE_READ</code> - indicates the lookup was successful. The data passed back along with this
+            event is a cache vconnection that can be used to initiate a cache write.</p></li>
+<li>
+  <p><code class="code">INK_EVENT_CACHE_OPEN_WRITE_FAILED</code> - event
+             returned when another continuation is currently writing to this
+            location in the cache. Data payload for this event indicates the
+            possible reason for the write failing
+      (<code class="function">INKCacheError</code>).</p></li>
+</ul></div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DoACacheWrite.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DuplicateMIMEFlds.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/DuplicateMIMEFlds.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/DuplicateMIMEFlds.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,27 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Duplicate MIME Fields Are Not Coalesced</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="GuideTSHTTPHdrSyst.html">Prev</a> - Guide to Traffic Server HTTP Header System</div>
+<div class="navnext">MIME Fields Always Belong to an Associated MIME
+        Header - <a accesskey="n" href="MIMEFldsBelongAssocMIMEHdr.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="DuplicateMIMEFlds"></a>Duplicate MIME Fields Are Not Coalesced<a class="indexterm" name="id381001"></a></h3></div></div></div>
+<p>MIME headers can contain more than one MIME field with the same
+        name. Earlier versions of Traffic Server joined multiple fields with
+        the same name into one field with composite values. This behavior
+        came at a performance cost and caused interoperability problems with
+         older clients and servers. Therefore, this version of Traffic Server does not 
+        coalesce duplicate fields.</p>
+<p>Properly-behaving plugins should check for the presence of
+        duplicate fields and then iterate over the duplicate fields via <a href="MimeHeadersFunctions.html#INKMimeHdrFieldNextDup" title="INKMimeHdrFieldNextDup"><code>INKMimeHdrFieldNextDup</code></a>.</p>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/DuplicateMIMEFlds.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/Errors_Cache.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/Errors_Cache.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/Errors_Cache.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,31 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Errors</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="DoACacheRemove.html">Prev</a> - How to Do a Cache Remove</div>
+<div class="navnext">Example - <a accesskey="n" href="CacheAPI_Example.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="Errors_Cache"></a>Errors</h3></div></div></div>
+<p>Errors pertaining to the failure of various cache operations are indicated
+        by <code class="function">INKCacheError</code> (enumeration). They are as follows:</p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+  <p><code class="code">INK_CACHE_ERROR_NO_DOC</code> - the key does not match a
+            cached resource</p></li>
+<li>
+  <p><code class="code">INK_CACHE_ERROR_DOC_BUSY</code> - e.g, another
+            continuation could be writing to the cache location</p></li>
+<li>
+  <p><code class="code">INK_CACHE_ERROR_NOT_READY</code> - the cache is not
+            ready</p></li>
+</ul></div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/Errors_Cache.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionIndex.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionIndex.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionIndex.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,332 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Appendix D. Function Index</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="Trouble_DebugMemLeaks.html">Prev</a> - Debugging Memory Leaks</div>
+<div class="navnext">Appendix E. Type Index - <a accesskey="n" href="TypeIndex.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="appendix" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="FunctionIndex"></a>Appendix D. Function Index</h2></div></div></div>
+<div class="informaltable">
+<div class="leftcol"><ul>
+<li><a href="ActionFunctions.html#INKActionCancel" title="INKActionCancel">INKActionCancel</a></li>
+<li><a href="INKActionDone.html" title="INKActionDone">INKActionDone</a></li>
+<li><a href="INKAssert.html" title="INKAssert">INKAssert</a></li>
+<li><a href="CacheInterfaceFunctions.html#INKCacheKeyCreate" title="INKCacheKeyCreate">INKCacheKeyCreate</a></li>
+<li><a href="INKCacheKeyDestroy.html" title="INKCacheKeyDestroy">INKCacheKeyDestroy</a></li>
+<li><a href="INKCacheKeyDigestSet.html" title="INKCacheKeyDigestSet">INKCacheKeyDigestSet</a></li>
+<li><a href="INKCacheKeyHostNameSet.html" title="INKCacheKeyHostNameSet">INKCacheKeyHostNameSet</a></li>
+<li><a href="INKCacheKeyPinnedSet.html" title="INKCacheKeyPinnedSet">INKCacheKeyPinnedSet</a></li>
+<li><a href="INKCacheRead.html" title="INKCacheRead">INKCacheRead</a></li>
+<li><a href="INKCacheReady.html" title="INKCacheReady">INKCacheReady</a></li>
+<li><a href="INKCacheRemove.html" title="INKCacheRemove">INKCacheRemove</a></li>
+<li><a href="INKCacheWrite.html" title="INKCacheWrite">INKCacheWrite</a></li>
+<li><a href="PluginConfigurationFunctions.html#INKConfigDataGet" title="INKConfigDataGet">INKConfigDataGet</a></li>
+<li><a href="INKConfigGet.html" title="INKConfigGet">INKConfigGet</a></li>
+<li><a href="INKConfigRelease.html" title="INKConfigRelease">INKConfigRelease</a></li>
+<li><a href="INKConfigSet.html" title="INKConfigSet">INKConfigSet</a></li>
+<li><a href="ContinuationFunctions.html#INKContCall" title="INKContCall">INKContCall</a></li>
+<li><a href="INKContCreate.html" title="INKContCreate">INKContCreate</a></li>
+<li><a href="INKContDataGet.html" title="INKContDataGet">INKContDataGet</a></li>
+<li><a href="INKContDataSet.html" title="INKContDataSet">INKContDataSet</a></li>
+<li><a href="INKContDestroy.html" title="INKContDestroy">INKContDestroy</a></li>
+<li><a href="INKContMutexGet.html" title="INKContMutexGet">INKContMutexGet</a></li>
+<li><a href="INKContSchedule.html" title="INKContSchedule">INKContSchedule</a></li>
+<li><a href="DebuggingFunctions.html#INKDebug" title="INKDebug">INKDebug</a></li>
+<li><a href="INKError.html" title="INKError">INKError</a></li>
+<li><a href="INKfopenFamilyFunctions.html#INKfclose" title="INKfclose">INKfclose</a></li>
+<li><a href="INKfflush.html" title="INKfflush">INKfflush</a></li>
+<li><a href="INKfgets.html" title="INKfgets">INKfgets</a></li>
+<li><a href="INKfopen.html" title="INKfopen">INKfopen</a></li>
+<li><a href="INKfread.html" title="INKfread">INKfread</a></li>
+<li><a href="MemoryAllocationFunctions.html#INKfree" title="INKfree">INKfree</a></li>
+<li><a href="INKfwrite.html" title="INKfwrite">INKfwrite</a></li>
+<li><a href="ch18s09s04.html#INKHandleMLocRelease" title="INKHandleMLocRelease">INKHandleMLocRelease</a></li>
+<li><a href="INKHostLookupResultIPGet.html" title="INKHostLookupResultIPGet">INKHostLookupResult</a></li>
+<li><a href="INKHostLookupResultIPGet.html" title="INKHostLookupResultIPGet">INKHostLookupResultIPGet</a></li>
+<li><a href="AlternateSelectionFunctions.html#INKHttpAltInfoCachedReqGet" title="INKHttpAltInfoCachedReqGet">INKHttpAltInfoCachedReqGet</a></li>
+<li><a href="AlternateSelectionFunctions.html#INKHttpAltInfoCachedRespGet" title="INKHttpAltInfoCachedRespGet">INKHttpAltInfoCachedRespGet</a></li>
+<li><a href="AlternateSelectionFunctions.html#INKHttpAltInfoClientReqGet" title="INKHttpAltInfoClientReqGet">INKHttpAltInfoClientReqGet</a></li>
+<li><a href="AlternateSelectionFunctions.html#INKHttpAltInfoQualitySet" title="INKHttpAltInfoQualitySet">INKHttpAltInfoQualitySet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrClone" title="INKHttpHdrClone">INKHttpHdrClone</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrCopy" title="INKHttpHdrCopy">INKHttpHdrCopy</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrCreate" title="INKHttpHdrCreate">INKHttpHdrCreate</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrDestroy" title="INKHttpHdrDestroy">INKHttpHdrDestroy</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrLengthGet" title="INKHttpHdrLengthGet">INKHttpHdrLengthGet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrMethodGet" title="INKHttpHdrMethodGet">INKHttpHdrMethodGet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrMethodSet" title="INKHttpHdrMethodSet">INKHttpHdrMethodSet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrParseReq" title="INKHttpHdrParseReq">INKHttpHdrParseReq</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrParseResp" title="INKHttpHdrParseResp">INKHttpHdrParseResp</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrPrint" title="INKHttpHdrPrint">INKHttpHdrPrint</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrReasonGet" title="INKHttpHdrReasonGet">INKHttpHdrReasonGet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrReasonLookup" title="INKHttpHdrReasonLookup">INKHttpHdrReasonLookup</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrReasonSet" title="INKHttpHdrReasonSet">INKHttpHdrReasonSet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrStatusGet" title="INKHttpHdrStatusGet">INKHttpHdrStatusGet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrStatusSet" title="INKHttpHdrStatusSet">INKHttpHdrStatusSet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrTypeGet" title="INKHttpHdrTypeGet">INKHttpHdrTypeGet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrTypeSet" title="INKHttpHdrTypeSet">INKHttpHdrTypeSet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrUrlGet" title="INKHttpHdrUrlGet">INKHttpHdrUrlGet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrUrlSet" title="INKHttpHdrUrlSet">INKHttpHdrUrlSet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrVersionGet" title="INKHttpHdrVersionGet">INKHttpHdrVersionGet</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpHdrVersionSet" title="INKHttpHdrVersionSet">INKHttpHdrVersionSet</a></li>
+<li><a href="HTTPFunctions.html#INKHttpHookAdd" title="INKHttpHookAdd">INKHttpHookAdd</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpParserClear" title="INKHttpParserClear">INKHttpParserClear</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpParserCreate" title="INKHttpParserCreate">INKHttpParserCreate</a></li>
+<li><a href="HTTPHeaderFunctions.html#INKHttpParserDestroy" title="INKHttpParserDestroy">INKHttpParserDestroy</a></li>
+<li><a href="HTTPSessionFunctions.html#INKHttpSsnHookAdd" title="INKHttpSsnHookAdd">INKHttpSsnHookAdd</a></li>
+<li><a href="HTTPSessionFunctions.html#INKHttpSsnReenable" title="INKHttpSsnReenable">INKHttpSsnReenable</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnCacheLookupStatusGet" title="INKHttpTxnCacheLookupStatusSet">INKHttpTxnCacheLookupStatusSet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnCachedReqGet" title="INKHttpTxnCachedReqGet">INKHttpTxnCachedReqGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnCachedRespGet" title="INKHttpTxnCachedRespGet">INKHttpTxnCachedRespGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnClientIncomingPortGet" title="INKHttpTxnClientIncomingPortGet">INKHttpTxnClientIncomingPortGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnClientIPGet" title="INKHttpTxnClientIPGet">INKHttpTxnClientIPGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnClientRemotePortGet" title="INKHttpTxnClientRemotePortGet">INKHttpTxnClientRemotePortGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnClientRespGet" title="INKHttpTxnClientRespGet">INKHttpTxnClientRespGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnErrorBodySet" title="INKHttpTxnErrorBodySet">INKHttpTxnErrorBodySet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnHookAdd" title="INKHttpTxnHookAdd">INKHttpTxnHookAdd</a></li>
+<li><a href="InterceptingHTTPTransactionFuncs.html#INKHttpTxnIntercept" title="INKHttpTxnIntercept">INKHttpTxnIntercept</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnPristineUrlGet" title="INKHttpTxnPristineUrlGet">INKHttpTxnPristineUrlGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnParentProxyGet" title="INKHttpTxnParentProxyGet">INKHttpTxnParentProxyGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnParentProxySet" title="INKHttpTxnParentProxySet">INKHttpTxnParentProxySet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnReenable" title="INKHttpTxnReenable">INKHttpTxnReenable</a></li>
+<li><a href="INKHttpTxnServerIntercept.html" title="INKHttpTxnServerIntercept">INKHttpTxnServerIntercept</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnServerReqGet" title="INKHttpTxnServerReqGet">INKHttpTxnServerReqGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnServerRespGet" title="INKHttpTxnServerRespGet">INKHttpTxnServerRespGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnSetRespCacheableSet" title="INKHttpTxnSetRespCacheableSet">INKHttpTxnSetRespCacheableSet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnSetReqCacheableSet" title="INKHttpTxnSetReqCacheableSet">INKHttpTxnSetReqCacheableSet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnSsnGet" title="INKHttpTxnSsnGet">INKHttpTxnSsnGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnTransformedRespCache" title="INKHttpTxnTransformedRespCache">INKHttpTxnTransformedRespCache</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnTransformRespGet" title="INKHttpTxnTransformRespGet">INKHttpTxnTransformRespGet</a></li>
+<li><a href="HTTPTransactionFunctions.html#INKHttpTxnUntransformedRespCache" title="INKHttpTxnUntransformedRespCache">INKHttpTxnUntransformedRespCache</a></li>
+<li><a href="CustInstallLicenseFunctions.html#INKInstallDirGet" title="INKInstallDirGet">INKInstallDirGet</a></li>
+<li><a href="Dep_IOBufferInterface.html#INKIOBufferAppend" title="INKIOBufferAppend">INKIOBufferAppend</a> <b>(Deprecated)</b></li>
+<li><a href="Dep_IOBufferInterface.html#INKIOBufferBlockCreate" title="INKIOBufferBlockCreate">INKIOBufferBlockCreate</a> <b>(Deprecated)</b></li>
+<li><a href="IOBufferInterfaceFunctions.html#INKIOBufferBlockNext" title="INKIOBufferBlockNext">INKIOBufferBlockNext</a></li>
+<li><a href="INKIOBufferBlockReadAvail.html" title="INKIOBufferBlockReadAvail">INKIOBufferBlockReadAvail</a></li>
+<li><a href="INKIOBufferBlockReadStart.html" title="INKIOBufferBlockReadStart">INKIOBufferBlockReadStart</a></li>
+<li><a href="INKIOBufferBlockWriteAvail.html" title="INKIOBufferBlockWriteAvail">INKIOBufferBlockWriteAvail</a></li>
+<li><a href="INKIOBufferBlockWriteStart.html" title="INKIOBufferBlockWriteStart">INKIOBufferBlockWriteStart</a></li>
+<li><a href="INKIOBufferCopy.html" title="INKIOBufferCopy">INKIOBufferCopy</a></li>
+<li><a href="INKIOBufferCreate.html" title="INKIOBufferCreate">INKIOBufferCreate</a></li>
+<li><a href="Dep_IOBufferInterface.html#INKIOBufferDataCreate" title="INKIOBufferDataCreate">INKIOBufferDataCreate</a></li>
+<li><a href="INKIOBufferDestroy.html" title="INKIOBufferDestroy">INKIOBufferDestroy</a></li>
+<li><a href="INKIOBufferProduce.html" title="INKIOBufferProduce">INKIOBufferProduce</a></li>
+<li><a href="INKIOBufferReaderAlloc.html" title="INKIOBufferReaderAlloc">INKIOBufferReaderAlloc</a></li>
+<li><a href="INKIOBufferReaderAvail.html" title="INKIOBufferReaderAvail">INKIOBufferReaderAvail</a></li>
+<li><a href="INKIOBufferReaderClone.html" title="INKIOBufferReaderClone">INKIOBufferReaderClone</a></li>
+<li><a href="INKIOBufferReaderConsume.html" title="INKIOBufferReaderConsume">INKIOBufferReaderConsume</a></li>
+<li><a href="INKIOBufferReaderFree.html" title="INKIOBufferReaderFree">INKIOBufferReaderFree</a></li>
+<li><a href="INKIOBufferReaderStart.html" title="INKIOBufferReaderStart">INKIOBufferReaderStart</a></li>
+<li><a href="INKIOBufferSizedCreate.html" title="INKIOBufferSizedCreate">INKIOBufferSizedCreate</a></li>
+<li><a href="INKIOBufferStart.html" title="INKIOBufferStart">INKIOBufferStart</a></li>
+<li><a href="INKIOBufferWaterMarkGet.html" title="INKIOBufferWaterMarkGet">INKIOBufferWaterMarkGet</a></li>
+<li><a href="INKIOBufferWaterMarkSet.html" title="INKIOBufferWaterMarkSet">INKIOBufferWaterMarkSet</a></li>
+<li><a href="INKIOBufferWrite.html" title="INKIOBufferWrite">INKIOBufferWrite</a></li>
+<li><a href="INKIsDebugTagSet.html" title="INKIsDebugTagSet">INKIsDebugTagSet</a></li>
+<li><a href="INKmalloc.html" title="INKmalloc">INKmalloc</a></li>
+<li><a href="DeprecatedMarshBufFuncs.html" title="Deprecated Functions">INKMBufferCompress</a> <b>(Deprecated)</b></li>
+<li><a href="MarshallBuffersFunctions.html#INKMBufferCreate" title="INKMBufferCreate">INKMBufferCreate</a></li>
+<li><a href="DeprecatedMarshBufFuncs.html" title="Deprecated Functions">INKMBufferDataGet</a> <b>(Deprecated)</b></li>
+<li><a href="DeprecatedMarshBufFuncs.html" title="Deprecated Functions">INKMBufferDataSet</a> <b>(Deprecated)</b></li>
+<li><a href="INKMBufferDestroy.html" title="INKMBufferDestroy">INKMBufferDestroy</a></li>
+<li><a href="DeprecatedMarshBufFuncs.html" title="Deprecated Functions">INKMBufferLengthGet</a> <b>(Deprecated)</b></li>
+<li><a href="DeprecatedMarshBufFuncs.html" title="Deprecated Functions">INKMBufferRef</a> <b>(Deprecated)</b></li>
+<li><a href="DeprecatedMarshBufFuncs.html" title="Deprecated Functions">INKMBufferUnref</a> <b>(Deprecated)</b></li>
+<li><a href="TEConfigReadFunctions.html#INKMgmtCounterGet" title="INKMgmtCounterGet">INKMgmtCounterGet</a></li>
+<li><a href="INKMgmtFloatGet.html" title="INKMgmtFloatGet">INKMgmtFloatGet</a></li>
+<li><a href="INKMgmtIntGet.html" title="INKMgmtIntGet">INKMgmtIntGet</a></li>
+<li><a href="INKMgmtStringGet.html" title="INKMgmtStringGet">INKMgmtStringGet</a></li>
+<li><a href="ManagementInterfaceFunctions.html#INKMgmtUpdateRegister" title="INKMgmtUpdateRegister">INKMgmtUpdateRegister</a></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldCopy" title="INKMimeFieldCopy">INKMimeFieldCopy</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldCopyValues" title="INKMimeFieldCopyValues">INKMimeFieldCopyValues</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldCreate" title="INKMimeFieldCreate">INKMimeFieldCreate</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldDestroy" title="INKMimeFieldDestroy">INKMimeFieldDestroy</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldNameGet" title="INKMimeFieldNameGet">INKMimeFieldNameGet</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldNameSet" title="INKMimeFieldNameSet">INKMimeFieldNameSet</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldNext" title="INKMimeFieldNext">INKMimeFieldNext</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueAppend" title="INKMimeFieldValueAppend">INKMimeFieldValueAppend</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueDelete" title="INKMimeFieldValueDelete">INKMimeFieldValueDelete</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueGet" title="INKMimeFieldValueGet">INKMimeFieldValueGet</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueGetDate" title="INKMimeFieldValueGetDate">INKMimeFieldValueGetDate</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueGetInt" title="INKMimeFieldValueGetInt">INKMimeFieldValueGetInt</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueGetUint" title="INKMimeFieldValueGetUint">INKMimeFieldValueGetUint</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueInsertDate" title="INKMimeFieldValueInsertDate">INKMimeFieldValueInsert</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueInsertDate" title="INKMimeFieldValueInsertDate">INKMimeFieldValueInsertDate</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueInsertInt" title="INKMimeFieldValueInsertInt">INKMimeFieldValueInsertInt</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueInsertUint" title="INKMimeFieldValueInsertUint">INKMimeFieldValueInsertUint</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValuesClear" title="INKMimeFieldValuesClear">INKMimeFieldValuesClear</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValuesCount" title="INKMimeFieldValuesCount">INKMimeFieldValuesCount</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueSet" title="INKMimeFieldValueSet">INKMimeFieldValueSet</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueSetDate" title="INKMimeFieldValueSetDate">INKMimeFieldValueSetDate</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueSetInt" title="INKMimeFieldValueSetInt">INKMimeFieldValueSetInt</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeFieldValueSetUint" title="INKMimeFieldValueSetUint">INKMimeFieldValueSetUint</a> <b>(Deprecated)</b></li>
+
+
+
+
+</ul></div><div class="rightcol"><ul>
+
+
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrClone" title="INKMimeHdrClone">INKMimeHdrClone</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrCopy" title="INKMimeHdrCopy">INKMimeHdrCopy</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrCreate" title="INKMimeHdrCreate">INKMimeHdrCreate</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrDestroy" title="INKMimeHdrDestroy">INKMimeHdrDestroy</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldAppend" title="INKMimeHdrFieldAppend">INKMimeHdrFieldAppend</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldClone" title="INKMimeHdrFieldClone">INKMimeHdrFieldClone</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldCopy" title="INKMimeHdrFieldCopy">INKMimeHdrFieldCopy</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldCopyValues" title="INKMimeHdrFieldCopyValues">INKMimeHdrFieldCopyValues</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldCreate" title="INKMimeHdrFieldCreate">INKMimeHdrFieldCreate</a></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldDelete" title="INKMimeHdrFieldDelete">INKMimeHdrFieldDelete</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldDestroy" title="INKMimeHdrFieldDestroy">INKMimeHdrFieldDestroy</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldFind" title="INKMimeHdrFieldFind">INKMimeHdrFieldFind</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldGet" title="INKMimeHdrFieldGet">INKMimeHdrFieldGet</a></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldInsert" title="INKMimeHdrFieldInsert">INKMimeHdrFieldInsert</a> <b><b>(Deprecated)</b></b></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldLengthGet" title="INKMimeHdrFieldLengthGet">INKMimeHdrFieldLengthGet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldNameGet" title="INKMimeHdrFieldNameGet">INKMimeHdrFieldNameGet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldNameSet" title="INKMimeHdrFieldNameSet">INKMimeHdrFieldNameSet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldNext" title="INKMimeHdrFieldNext">INKMimeHdrFieldNext</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldNextDup" title="INKMimeHdrFieldNextDup">INKMimeHdrFieldNextDup</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldRemove" title="INKMimeHdrFieldRemove">INKMimeHdrFieldRemove</a></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldRetrieve" title="INKMimeHdrFieldRetrieve">INKMimeHdrFieldRetrieve</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldsClear" title="INKMimeHdrFieldsClear">INKMimeHdrFieldsClear</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldsCount" title="INKMimeHdrFieldsCount">INKMimeHdrFieldsCount</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueAppend" title="INKMimeHdrFieldValueAppend">INKMimeHdrFieldValueAppend</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueDateGet" title="INKMimeHdrFieldValueDateGet">INKMimeHdrFieldValueDateGet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueDateInsert" title="INKMimeHdrFieldValueDateInsert">INKMimeHdrFieldValueDateInsert</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueDateSet" title="INKMimeHdrFieldValueDateSet">INKMimeHdrFieldValueDateSet</a></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueGet" title="INKMimeHdrFieldValueGet">INKMimeHdrFieldValueGet</a> <b><b>(Deprecated)</b></b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueGetDate" title="INKMimeHdrFieldValueGetDate">INKMimeHdrFieldValueGetDate</a> <b><b>(Deprecated)</b></b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueGetInt" title="INKMimeHdrFieldValueGetInt">INKMimeHdrFieldValueGetInt</a> <b><b>(Deprecated)</b></b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueGetUint" title="INKMimeHdrFieldValueGetUint">INKMimeHdrFieldValueGetUint</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueInsert" title="INKMimeHdrFieldValueInsert">INKMimeHdrFieldValueInsert</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueInsertDate" title="INKMimeHdrFieldValueInsertDate">INKMimeHdrFieldValueInsertDate</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueInsertInt" title="INKMimeHdrFieldValueInsertInt">INKMimeHdrFieldValueInsertInt</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueInsertUint" title="INKMimeHdrFieldValueInsertUint">INKMimeHdrFieldValueInsertUint</a> <b>(Deprecated)</b></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueIntGet" title="INKMimeHdrFieldValueIntGet">INKMimeHdrFieldValueIntGet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueIntInsert" title="INKMimeHdrFieldValueIntInsert">INKMimeHdrFieldValueIntInsert</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueIntSet" title="INKMimeHdrFieldValueIntSet">INKMimeHdrFieldValueIntSet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValuesClear" title="INKMimeHdrFieldValuesClear">INKMimeHdrFieldValuesClear</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValuesCount" title="INKMimeHdrFieldValuesCount">INKMimeHdrFieldValuesCount</a></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueSet" title="INKMimeHdrFieldValueSet">INKMimeHdrFieldValueSet</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueSetDate" title="INKMimeHdrFieldValueSetDate">INKMimeHdrFieldValueSetDate</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueSetInt" title="INKMimeHdrFieldValueSetInt">INKMimeHdrFieldValueSetInt</a> <b>(Deprecated)</b></li>
+<li><a href="App_DeprecatedFunctions.html#INKMimeHdrFieldValueSetUint" title="INKMimeHdrFieldValueSetUint">INKMimeHdrFieldValueSetUint</a> <b>(Deprecated)</b></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueStringGet" title="INKMimeHdrFieldValueStringGet">INKMimeHdrFieldValueStringGet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueStringInsert" title="INKMimeHdrFieldValueStringInsert">INKMimeHdrFieldValueStringInsert</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueStringSet" title="INKMimeHdrFieldValueStringSet">INKMimeHdrFieldValueStringSet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueUintGet" title="INKMimeHdrFieldValueUintGet">INKMimeHdrFieldValueUintGet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueUintInsert" title="INKMimeHdrFieldValueUintInsert">INKMimeHdrFieldValueUintInsert</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrFieldValueUintSet" title="INKMimeHdrFieldValueUintSet">INKMimeHdrFieldValueUintSet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrLengthGet" title="INKMimeHdrLengthGet">INKMimeHdrLengthGet</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrParse" title="INKMimeHdrParse">INKMimeHdrParse</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeHdrPrint" title="INKMimeHdrPrint">INKMimeHdrPrint</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeParserClear" title="INKMimeParserClear">INKMimeParserClear</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeParserCreate" title="INKMimeParserCreate">INKMimeParserCreate</a></li>
+<li><a href="MimeHeadersFunctions.html#INKMimeParserDestroy" title="INKMimeParserDestroy">INKMimeParserDestroy</a></li>
+<li><a href="MutexFunctions.html#INKMutexCreate" title="INKMutexCreate">INKMutexCreate</a></li>
+<li><a href="INKMutexLock.html" title="INKMutexLock">INKMutexLock</a></li>
+<li><a href="INKMutexLockTry.html" title="INKMutexLockTry">INKMutexLockTry</a></li>
+<li><a href="Dep_MutexFunctions.html#INKMutexTryLock" title="INKMutexTryLock">INKMutexTryLock</a> <b>(Deprecated)</b></li>
+<li><a href="NetvconnectionFunctions.html#INKNetAccept" title="INKNetAccept">INKNetAccept</a></li>
+<li><a href="INKNetConnect.html" title="INKNetConnect">INKNetConnect</a></li>
+<li><a href="INKNetVConnRemoteIPGet.html" title="INKNetVConnRemoteIPGet">INKNetVConnRemoteIPGet</a></li>
+<li><a href="INKNetVConnRemotePortGet.html" title="INKNetVConnRemotePortGet">INKNetVConnRemotePortGet</a></li>
+<li><a href="INKPluginDirGet.html" title="INKPluginDirGet">INKPluginDirGet</a></li>
+<li><a href="InitializationFunctions.html#INKPluginInit" title="INKPluginInit">INKPluginInit</a></li>
+<li><a href="INKPluginLicenseRequired.html" title="INKPluginLicenseRequired">INKPluginLicenseRequired</a></li>
+<li><a href="INKPluginRegister.html" title="INKPluginRegister">INKPluginRegister</a></li>
+<li><a href="INKrealloc.html" title="INKrealloc">INKrealloc</a></li>
+<li><a href="CacheInterfaceFunctions.html#INKSetCacheUrl">INKSetCacheUrl</a></li>
+<li><a href="CoupledStatsFunctions.html#INKStatCoupledGlobalAdd" title="INKStatCoupledGlobalAdd">INKStatCoupledGlobalAdd</a></li>
+<li><a href="CoupledStatsFunctions.html#INKStatCoupledGlobalCategoryCreate" title="INKStatCoupledGlobalCategoryCreate">INKStatCoupledGlobalCategoryCreate</a></li>
+<li><a href="CoupledStatsFunctions.html#INKStatCoupledLocalAdd" title="INKStatCoupledLocalAdd">INKStatCoupledLocalAdd</a></li>
+<li><a href="CoupledStatsFunctions.html#INKStatCoupledLocalCopyCreate" title="INKStatCoupledLocalCopyCreate">INKStatCoupledLocalCopyCreate</a></li>
+<li><a href="CoupledStatsFunctions.html#INKStatCoupledLocalCopyDestroy" title="INKStatCoupledLocalCopyDestroy">INKStatCoupledLocalCopyDestroy</a></li>
+<li><a href="StatisticsFunctions.html#INKStatCreate" title="INKStatCreate">INKStatCreate</a></li>
+<li><a href="StatisticsFunctions.html#INKStatDecrement" title="INKStatDecrement">INKStatDecrement</a></li>
+<li><a href="StatisticsFunctions.html#INKStatFloatAddTo" title="INKStatFloatAddTo">INKStatFloatAddTo</a></li>
+<li><a href="StatisticsFunctions.html#INKStatFloatGet" title="INKStatFloatGet">INKStatFloatGet</a></li>
+<li><a href="OtherDeprecatedFunctions.html#INKStatFloatRead" title="INKStatFloatRead">INKStatFloatRead</a> <b>(Deprecated)</b></li>
+<li><a href="StatisticsFunctions.html#INKStatFloatSet" title="INKStatFloatSet">INKStatFloatSet</a></li>
+<li><a href="StatisticsFunctions.html#INKStatIncrement" title="INKStatIncrement">INKStatIncrement</a></li>
+<li><a href="StatisticsFunctions.html#INKStatIntAddTo" title="INKStatIntAddTo">INKStatIntAddTo</a></li>
+<li><a href="StatisticsFunctions.html#INKStatIntGet" title="INKStatIntGet">INKStatIntGet</a></li>
+<li><a href="OtherDeprecatedFunctions.html#INKStatIntRead" title="INKStatIntRead">INKStatIntRead</a> <b>(Deprecated)</b></li>
+<li><a href="StatisticsFunctions.html#INKStatIntSet" title="INKStatIntSet">INKStatIntSet</a></li>
+<li><a href="CoupledStatsFunctions.html#INKStatsCoupledUpdate" title="INKStatsCoupledUpdate">INKStatsCoupledUpdate</a></li>
+<li><a href="INKstrdup.html" title="INKstrdup">INKstrdup</a></li>
+<li><a href="INKstrndup.html" title="INKstrndup">INKstrndup</a></li>
+<li><a href="LoggingFunctions.html#INKTextLogObjectCreate" title="INKTextLogObjectCreate">INKTextLogObjectCreate</a></li>
+<li><a href="INKTextLogObjectDestroy.html" title="INKTextLogObjectDestroy">INKTextLogObjectDestroy</a></li>
+<li><a href="INKTextLogObjectFlush.html" title="INKTextLogObjectFlush">INKTextLogObjectFlush</a></li>
+<li><a href="INKTextLogObjectHeaderSet.html" title="INKTextLogObjectHeaderSet">INKTextLogObjectHeaderSet</a></li>
+<li><a href="INKTextLogObjectRollingEnabledSet.html" title="INKTextLogObjectRollingEnabledSet">INKTextLogObjectRollingEnabledSet</a></li>
+<li><a href="INKTextLogObjectRollingIntervalSecSet.html" title="INKTextLogObjectRollingIntervalSecSet">INKTextLogObjectRollingIntervalSecSet</a></li>
+<li><a href="INKTextLogObjectRollingOffsetHrSet.html" title="INKTextLogObjectRollingOffsetHrSet">INKTextLogObjectRollingOffsetHrSet</a></li>
+<li><a href="INKTextLogObjectWrite.html" title="INKTextLogObjectWrite">INKTextLogObjectWrite</a></li>
+<li><a href="ThreadFunctions.html#INKThreadCreate" title="INKThreadCreate">INKThreadCreate</a></li>
+<li><a href="INKThreadDestroy.html" title="INKThreadDestroy">INKThreadDestroy</a></li>
+<li><a href="INKThreadInit.html" title="INKThreadInit">INKThreadInit</a></li>
+<li><a href="INKThreadSelf.html" title="INKThreadSelf">INKThreadSelf</a></li>
+<li><a href="INKTrafficServerVersionGet.html" title="INKTrafficServerVersionGet">INKTrafficServerVersionGet</a></li>
+<li><a href="TransformationFunctions.html#INKTransformCreate" title="INKTransformCreate">INKTransformCreate</a></li>
+<li><a href="INKTransformOutputVConnGet.html" title="INKTransformOutputVConnGet">INKTransformOutputVConnGet</a></li>
+<li><a href="URLFunctions.html#INKUrlClone" title="INKUrlClone">INKUrlClone</a></li>
+<li><a href="URLFunctions.html#INKUrlCopy" title="INKUrlCopy">INKUrlCopy</a></li>
+<li><a href="URLFunctions.html#INKUrlCreate" title="INKUrlCreate">INKUrlCreate</a></li>
+<li><a href="URLFunctions.html#INKUrlDestroy" title="INKUrlDestroy">INKUrlDestroy</a></li>
+<li><a href="URLFunctions.html#INKUrlFtpTypeGet" title="INKUrlFtpTypeGet">INKUrlFtpTypeGet</a>  <b>(Deprecated)</b></li>
+<li><a href="URLFunctions.html#INKUrlFtpTypeSet" title="INKUrlFtpTypeSet">INKUrlFtpTypeSet</a>  <b>(Deprecated)</b></li>
+<li><a href="URLFunctions.html#INKUrlHostGet" title="INKUrlHostGet">INKUrlHostGet</a></li>
+<li><a href="URLFunctions.html#INKUrlHostSet" title="INKUrlHostSet">INKUrlHostSet</a></li>
+<li><a href="URLFunctions.html#INKUrlHttpFragmentGet" title="INKUrlHttpFragmentGet">INKUrlHttpFragmentGet</a></li>
+<li><a href="URLFunctions.html#INKUrlHttpFragmentSet" title="INKUrlHttpFragmentSet">INKUrlHttpFragmentSet</a></li>
+<li><a href="URLFunctions.html#INKUrlHttpParamsGet" title="INKUrlHttpParamsGet">INKUrlHttpParamsGet</a></li>
+<li><a href="URLFunctions.html#INKUrlHttpParamsSet" title="INKUrlHttpParamsSet">INKUrlHttpParamsSet</a></li>
+<li><a href="URLFunctions.html#INKUrlHttpQueryGet" title="INKUrlHttpQueryGet">INKUrlHttpQueryGet</a></li>
+<li><a href="URLFunctions.html#INKUrlHttpQuerySet" title="INKUrlHttpQuerySet">INKUrlHttpQuerySet</a></li>
+<li><a href="URLFunctions.html#INKUrlLengthGet" title="INKUrlLengthGet">INKUrlLengthGet</a></li>
+<li><a href="URLFunctions.html#INKUrlParse" title="INKUrlParse">INKUrlParse</a></li>
+<li><a href="URLFunctions.html#INKUrlPasswordGet" title="INKUrlPasswordGet">INKUrlPasswordGet</a></li>
+<li><a href="URLFunctions.html#INKUrlPasswordSet" title="INKUrlPasswordSet">INKUrlPasswordSet</a></li>
+<li><a href="URLFunctions.html#INKUrlPathGet" title="INKUrlPathGet">INKUrlPathGet</a></li>
+<li><a href="URLFunctions.html#INKUrlPathSet" title="INKUrlPathSet">INKUrlPathSet</a></li>
+<li><a href="URLFunctions.html#INKUrlPortGet" title="INKUrlPortGet">INKUrlPortGet</a></li>
+<li><a href="URLFunctions.html#INKUrlPortSet" title="INKUrlPortSet">INKUrlPortSet</a></li>
+<li><a href="URLFunctions.html#INKUrlPrint" title="INKUrlPrint">INKUrlPrint</a></li>
+<li><a href="URLFunctions.html#INKUrlSchemeGet" title="INKUrlSchemeGet">INKUrlSchemeGet</a></li>
+<li><a href="URLFunctions.html#INKUrlSchemeSet" title="INKUrlSchemeSet">INKUrlSchemeSet</a></li>
+<li><a href="URLFunctions.html#INKUrlStringGet" title="INKUrlStringGet">INKUrlStringGet</a></li>
+<li><a href="URLFunctions.html#INKUrlUserGet" title="INKUrlUserGet">INKUrlUserGet</a></li>
+<li><a href="URLFunctions.html#INKUrlUserSet" title="INKUrlUserSet">INKUrlUserSet</a></li>
+<li><a href="VconnectionFunctions.html#INKVConnAbort" title="INKVConnAbort">INKVConnAbort</a></li>
+<li><a href="INKVConnClose.html" title="INKVConnClose">INKVConnClose</a></li>
+<li><a href="INKVConnClosedGet.html" title="INKVConnClosedGet">INKVConnClosedGet</a></li>
+<li><a href="INKVConnRead.html" title="INKVConnRead">INKVConnRead</a></li>
+<li><a href="INKVConnReadVIOGet.html" title="INKVConnReadVIOGet">INKVConnReadVIOGet</a></li>
+<li><a href="INKVConnShutdown.html" title="INKVConnShutdown">INKVConnShutdown</a></li>
+<li><a href="INKVConnWrite.html" title="INKVConnWrite">INKVConnWrite</a></li>
+<li><a href="INKVConnWriteVIOGet.html" title="INKVConnWriteVIOGet">INKVConnWriteVIOGet</a></li>
+<li><a href="VIOFunctions.html#INKVIOBufferGet" title="INKVIOBufferGet">INKVIOBufferGet</a></li>
+<li><a href="INKVIOContGet.html" title="INKVIOContGet">INKVIOContGet</a></li>
+<li><a href="INKVIOMutexGet.html" title="INKVIOMutexGet">INKVIOMutexGet</a></li>
+<li><a href="INKVIONBytesGet.html" title="INKVIONBytesGet">INKVIONBytesGet</a></li>
+<li><a href="INKVIONBytesSet.html" title="INKVIONBytesSet">INKVIONBytesSet</a></li>
+<li><a href="INKVIONDoneGet.html" title="INKVIONDoneGet">INKVIONDoneGet</a></li>
+<li><a href="INKVIONDoneSet.html" title="INKVIONDoneSet">INKVIONDoneSet</a></li>
+<li><a href="INKVIONTodoGet.html" title="INKVIONTodoGet">INKVIONTodoGet</a></li>
+<li><a href="INKVIOReaderGet.html" title="INKVIOReaderGet">INKVIOReaderGet</a></li>
+<li><a href="INKVIOReenable.html" title="INKVIOReenable">INKVIOReenable</a></li>
+<li><a href="INKVIOVConnGet.html" title="INKVIOVConnGet">INKVIOVConnGet</a></li>
+</ul>
+</div>
+</div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionIndex.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionReference.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionReference.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionReference.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Chapter 18. Function Reference</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="ViewStatsUsingTrafLine.html">Prev</a> - Viewing Statistics Using Traffic Line</div>
+<div class="navnext">Initialization Functions - <a accesskey="n" href="InitializationFunctions.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="FunctionReference"></a>Chapter 18. Function Reference</h2></div></div></div>
+<p>This chapter provides a description of each function in the Traffic
+    Server API. The functions are grouped according to what they do. The
+    following section lists all the function groups; to look up functions alphabetically, use the  <a href="FunctionIndex.html" title="Appendix D. Function Index">Function Index</a>.</p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="ListOfFunctionGroups"></a>List of Function Groups</h2></div></div></div>
+<div class="itemizedlist"><ul type="disc">
+<li><p><a href="InitializationFunctions.html" title="Initialization Functions">Initialization Functions</a></p></li>
+<li><p><a href="DebuggingFunctions.html" title="Debugging Functions">Debugging Functions</a></p></li>
+<li><p><a href="INKfopenFamilyFunctions.html" title="The INKfopen Family">The INKfopen Family</a></p></li>
+<li><p><a href="MemoryAllocationFunctions.html" title="Memory Allocation">Memory Allocation</a></p></li>
+<li><p><a href="ThreadFunctions.html" title="Thread Functions">Thread Functions</a></p></li>
+<li><p><a href="HTTPFunctions.html" title="HTTP Functions">HTTP Functions</a></p></li>
+<li><p><a href="InitiateConnectionFunctions.html" title="Initiate Connection">Initiate Connection</a></p></li>
+<li><p><a href="InterceptingHTTPTransactionFuncs.html" title="Intercepting HTTP Transaction Functions">Intercepting HTTP Transaction Functions</a></p></li>
+<li><p><a href="MutexFunctions.html" title="Mutex Functions">Mutex Functions</a></p></li>
+<li><p><a href="ContinuationFunctions.html" title="Continuation Functions">Continuation Functions</a></p></li>
+<li><p><a href="PluginConfigurationFunctions.html" title="Plugin Configuration Functions">Plugin Configuration Functions</a></p></li>
+<li><p><a href="ActionFunctions.html" title="Action Functions">Action Functions</a></p></li>
+<li><p><a href="HostLookupFunctions.html" title="Host Lookup Functions">Host Lookup Functions</a></p></li>
+<li><p><a href="VconnectionFunctions.html" title="Vconnection Functions">Vconnection Functions</a></p></li>
+<li><p><a href="NetvconnectionFunctions.html" title="Netvconnection Functions">Netvconnection Functions</a></p></li>
+<li><p><a href="CacheInterfaceFunctions.html" title="Cache Interface Functions">Cache Interface Functions</a></p></li>
+<li><p><a href="TransformationFunctions.html" title="Transformation Functions">Transformation Functions</a></p></li>
+<li><p><a href="VIOFunctions.html" title="VIO Functions">VIO Functions</a></p></li>
+<li><p><a href="IOBufferInterfaceFunctions.html" title="IO Buffer Interface">IO Buffer Interface</a></p></li>
+<li><p><a href="ManagementInterfaceFunctions.html" title="Management Interface Functions">Management Interface Functions</a></p></li>
+<li><p><a href="TEConfigReadFunctions.html" title="Traffic Server Configuration Read Functions">Traffic Server Configuration Read Functions</a></p></li>
+<li><p><a href="CustInstallLicenseFunctions.html" title="Customer Installation and Licensing Functions">Customer Installation and Licensing Functions</a></p></li>
+<li><p><a href="StatisticsFunctions.html" title="Statistics Functions">Statistics Functions</a></p></li>
+<li><p><a href="LoggingFunctions.html" title="Logging Functions">Logging Functions</a></p></li>
+</ul></div>
+</div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/FunctionReference.html
------------------------------------------------------------------------------
    svn:executable = *

Added: websites/staging/trafficserver/trunk/content/docs/v2/sdk/GenerateLicenseKey.html
==============================================================================
--- websites/staging/trafficserver/trunk/content/docs/v2/sdk/GenerateLicenseKey.html (added)
+++ websites/staging/trafficserver/trunk/content/docs/v2/sdk/GenerateLicenseKey.html Tue Dec 24 18:32:14 2013
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Generating a License Key</title>
+<!--#include file="top.html" -->
+<div class="navheader">
+<div class="navprev">
+<a accesskey="p" href="SetUpLicensing.html">Prev</a> - Setting Up Licensing</div>
+<div class="navnext">Guide to the Logging API - <a accesskey="n" href="LoggingAPI.html">Next</a>
+</div>
+</div>
+<div id="toc"></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="GenerateLicenseKey"></a>Generating a License Key</h2></div></div></div>
+<p>The <code class="code">gen_key</code> tool generates a license key based on
+      your plugin name (which must match the plugin name entered in the
+      <code class="filename">plugin.db</code> file), an expiration date, and a customer
+      ID (so that you can give different license keys to different customers).
+      You can specify an expiration date of 0 which means that the plugin
+      never expires.</p>
+<h3>
+<a name="id390849"></a>Running the gen_key tool</h3>
+<div class="orderedlist"><ol type="1">
+<li>
+  <p>First, <code class="code">cd</code> to the <code class="filename">sdk/tools</code>
+      directory in your SDK package. </p></li>
+<li>
+<p>Then, enter the following:</p>
+<p><code class="code">gen_key <i class="replaceable">plugin_name </i> <i class="replaceable"> ID </i> <i class="replaceable"> expiration</i></code></p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+  <p><code class="replaceable"><i>plugin_name </i></code> is the name of the
+              plugin; it needs to match the name specified in
+            <code class="filename">plugin.db</code></p></li>
+<li>
+  <p><code class="replaceable"><i>ID </i></code> is a string of 5 alphanumeric characters,
+            used to identify different customers</p></li>
+<li>
+<p><code class="replaceable"><i>expiration </i></code> is the expiration date of the
+              plugin in the following format:  
+<code class="code">mmddyyyy</code></p>
+<p>For example:  you should enter <code class="code">03312001</code> for March 31, 2001. To indicate no expiration, use
+              <code class="code">0</code>.</p>
+</li>
+</ul></div>
+</li>
+</ol></div>
+</div>
+</body>
+</html>

Propchange: websites/staging/trafficserver/trunk/content/docs/v2/sdk/GenerateLicenseKey.html
------------------------------------------------------------------------------
    svn:executable = *