]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - doc/help/api-httpipp.html
Merge changes from CUPS 1.4svn-r7874.
[thirdparty/cups.git] / doc / help / api-httpipp.html
index 04fc4a06bcfdb85e5e62ea77e30594c667c0bce6..74aaaf9ddcea880cf716c6b3818f0d9813840346 100644 (file)
@@ -304,7 +304,12 @@ div.contents ul.subcontents li {
 <li><a href="#cupsDoRequest" title="Do an IPP request.">cupsDoRequest</a></li>
 <li><a href="#cupsEncodeOptions" title="Encode printer options into IPP attributes.">cupsEncodeOptions</a></li>
 <li><a href="#cupsEncodeOptions2" title="Encode printer options into IPP attributes for a group.">cupsEncodeOptions2</a></li>
+<li><a href="#cupsGetDevices" title="Get available printer devices.">cupsGetDevices</a></li>
+<li><a href="#cupsGetFd" title="Get a file from the server.">cupsGetFd</a></li>
+<li><a href="#cupsGetFile" title="Get a file from the server.">cupsGetFile</a></li>
 <li><a href="#cupsGetResponse" title="Get a response to an IPP request.">cupsGetResponse</a></li>
+<li><a href="#cupsPutFd" title="Put a file on the server.">cupsPutFd</a></li>
+<li><a href="#cupsPutFile" title="Put a file on the server.">cupsPutFile</a></li>
 <li><a href="#cupsReadResponseData" title="Read additional data after the IPP response.">cupsReadResponseData</a></li>
 <li><a href="#cupsSendRequest" title="Send an IPP request.">cupsSendRequest</a></li>
 <li><a href="#cupsWriteRequestData" title="Write additional data after an IPP request.">cupsWriteRequestData</a></li>
@@ -418,6 +423,8 @@ in seconds.">ippDateToTime</a></li>
 <li><a href="#ippReadFile" title="Read data for an IPP message from a file.">ippReadFile</a></li>
 <li><a href="#ippReadIO" title="Read data for an IPP message.">ippReadIO</a></li>
 <li><a href="#ippSetPort" title="Set the default port number.">ippSetPort</a></li>
+<li><a href="#ippTagString" title="Return the tag name corresponding to a tag value.">ippTagString</a></li>
+<li><a href="#ippTagValue" title="Return the tag value corresponding to a tag name.">ippTagValue</a></li>
 <li><a href="#ippTimeToDate" title="Convert from UNIX time to RFC 1903 format.">ippTimeToDate</a></li>
 <li><a href="#ippWrite" title="Write data for an IPP message to a HTTP connection.">ippWrite</a></li>
 <li><a href="#ippWriteFile" title="Write data for an IPP message to a file.">ippWriteFile</a></li>
@@ -431,12 +438,30 @@ with a hostname. ">http_addrlist_t</a></li>
        <li><a href="#http_auth_t" title="HTTP authentication types">http_auth_t</a></li>
        <li><a href="#http_encoding_t" title="HTTP transfer encoding values">http_encoding_t</a></li>
        <li><a href="#http_encryption_t" title="HTTP encryption values">http_encryption_t</a></li>
+       <li><a href="#http_field_t" title="HTTP field names">http_field_t</a></li>
+       <li><a href="#http_keepalive_t" title="Types and structures...">http_keepalive_t</a></li>
+       <li><a href="#http_status_t" title="HTTP status codes">http_status_t</a></li>
        <li><a href="#http_t" title="HTTP connection type">http_t</a></li>
+       <li><a href="#http_uri_coding_t" title="HTTP version numbers">http_uri_coding_t</a></li>
+       <li><a href="#http_uri_status_t" title="URI en/decode flags">http_uri_status_t</a></li>
+       <li><a href="#http_version_t" title="Socket address union, which
+makes using IPv6 and other
+address types easier and
+more portable. ">http_version_t</a></li>
        <li><a href="#ipp_attribute_t" title="Attribute">ipp_attribute_t</a></li>
+       <li><a href="#ipp_finish_t" title="Orientation...">ipp_finish_t</a></li>
        <li><a href="#ipp_iocb_t" title="IPP IO Callback Function ">ipp_iocb_t</a></li>
+       <li><a href="#ipp_jstate_t" title="Printer States....">ipp_jstate_t</a></li>
+       <li><a href="#ipp_op_t" title="Old names for the operations">ipp_op_t</a></li>
+       <li><a href="#ipp_orient_t" title="Qualities...">ipp_orient_t</a></li>
+       <li><a href="#ipp_pstate_t" title="IPP states...">ipp_pstate_t</a></li>
+       <li><a href="#ipp_quality_t" title="Job States....">ipp_quality_t</a></li>
        <li><a href="#ipp_request_t" title="Request Header">ipp_request_t</a></li>
+       <li><a href="#ipp_res_t" title="Types and structures...">ipp_res_t</a></li>
+       <li><a href="#ipp_state_t" title="IPP operations...">ipp_state_t</a></li>
        <li><a href="#ipp_t" title="Attribute Value">ipp_t</a></li>
        <li><a href="#ipp_uchar_t" title="IPP status codes...">ipp_uchar_t</a></li>
+       <li><a href="#ipp_tag_t" title="Format tags for attributes...">ipp_tag_t</a></li>
        <li><a href="#ipp_value_t" title="New in CUPS 1.1.19">ipp_value_t</a></li>
 </ul></li>
 <li><a href="#STRUCTURES">Structures</a><ul class="code">
@@ -475,7 +500,7 @@ with a hostname. ">http_addrlist_s</a></li>
 </ul></li>
 </ul>
 <!--
-  "$Id: api-httpipp.shtml 7258 2008-01-28 00:15:05Z mike $"
+  "$Id: api-httpipp.shtml 7684 2008-06-23 16:47:38Z mike $"
 
   HTTP and IPP API introduction for the Common UNIX Printing System (CUPS).
 
@@ -769,7 +794,7 @@ tempfd = cupsTempFd(tempfile, sizeof(tempfile));
 /* Loop for authentication */
 do
 {
-  status = a href='#cupsSendRequest'>cupsSendRequest</a>(CUPS_HTTP_DEFAULT, request, "/");
+  status = <a href='#cupsSendRequest'>cupsSendRequest</a>(CUPS_HTTP_DEFAULT, request, "/");
 
   if (status == HTTP_UNAUTHORIZED)
   {
@@ -936,7 +961,7 @@ void cupsEncodeOptions2 (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_options,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;cups_option_t *options,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group_tag<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group_tag<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -954,6 +979,84 @@ void cupsEncodeOptions2 (<br>
 function multiple times for each group, or use cupsEncodeOptions()
 to add the standard groups.
 
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsGetDevices">cupsGetDevices</a></h3>
+<p class="description">Get available printer devices.</p>
+<p class="code">
+ipp_status_t cupsGetDevices (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int timeout,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *exclude_schemes,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cups_device_cb_t callback,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;void *user_data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>timeout</dt>
+<dd class="description">Timeout in seconds or <code>CUPS_TIMEOUT_DEFAULT</code></dd>
+<dt>exclude_schemes</dt>
+<dd class="description">Comma-separated URI schemes to exclude or <code>CUPS_EXCLUDE_NONE</code></dd>
+<dt>callback</dt>
+<dd class="description">Callback function</dd>
+<dt>user_data</dt>
+<dd class="description">User data pointer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Request status - <code>IPP_OK</code> on success.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function sends a CUPS-Get-Devices request and streams the discovered
+devices to the specified callback function. The &quot;timeout&quot; parameter controls
+how long the request lasts, while the &quot;exclude_schemes&quot; parameter provides
+a comma-delimited list of backends to omit from the request.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsGetFd">cupsGetFd</a></h3>
+<p class="description">Get a file from the server.</p>
+<p class="code">
+<a href="#http_status_t">http_status_t</a> cupsGetFd (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>resource</dt>
+<dd class="description">Resource name</dd>
+<dt>fd</dt>
+<dd class="description">File descriptor</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">HTTP status</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns <code>HTTP_OK</code> when the file is successfully retrieved.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsGetFile">cupsGetFile</a></h3>
+<p class="description">Get a file from the server.</p>
+<p class="code">
+<a href="#http_status_t">http_status_t</a> cupsGetFile (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>resource</dt>
+<dd class="description">Resource name</dd>
+<dt>filename</dt>
+<dd class="description">Filename</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">HTTP status</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns <code>HTTP_OK</code> when the file is successfully retrieved.
+
 </p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsGetResponse">cupsGetResponse</a></h3>
 <p class="description">Get a response to an IPP request.</p>
@@ -976,6 +1079,54 @@ to add the standard groups.
 cupsSendDocument() or cupsSendRequest(). For requests that return
 additional data, use httpRead() after getting a successful response.
 
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsPutFd">cupsPutFd</a></h3>
+<p class="description">Put a file on the server.</p>
+<p class="code">
+<a href="#http_status_t">http_status_t</a> cupsPutFd (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>resource</dt>
+<dd class="description">Resource name</dd>
+<dt>fd</dt>
+<dd class="description">File descriptor</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">HTTP status</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns <code>HTTP_CREATED</code> when the file is stored
+successfully.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsPutFile">cupsPutFile</a></h3>
+<p class="description">Put a file on the server.</p>
+<p class="code">
+<a href="#http_status_t">http_status_t</a> cupsPutFile (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>resource</dt>
+<dd class="description">Resource name</dd>
+<dt>filename</dt>
+<dd class="description">Filename</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">HTTP status</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns <code>HTTP_CREATED</code> when the file is stored
+successfully.
+
 </p>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsReadResponseData">cupsReadResponseData</a></h3>
 <p class="description">Read additional data after the IPP response.</p>
@@ -1004,7 +1155,7 @@ files for CUPS_GET_PPD and CUPS_GET_DOCUMENT requests, respectively.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsSendRequest">cupsSendRequest</a></h3>
 <p class="description">Send an IPP request.</p>
 <p class="code">
-http_status_t cupsSendRequest (<br>
+<a href="#http_status_t">http_status_t</a> cupsSendRequest (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *request,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
@@ -1019,7 +1170,7 @@ http_status_t cupsSendRequest (<br>
 <dt>resource</dt>
 <dd class="description">Resource path</dd>
 <dt>length</dt>
-<dd class="description">Length of data to follow or CUPS_LENGTH_VARIABLE</dd>
+<dd class="description">Length of data to follow or <code>CUPS_LENGTH_VARIABLE</code></dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Initial HTTP status</p>
@@ -1036,7 +1187,7 @@ request is not freed.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsWriteRequestData">cupsWriteRequestData</a></h3>
 <p class="description">Write additional data after an IPP request.</p>
 <p class="code">
-http_status_t cupsWriteRequestData (<br>
+<a href="#http_status_t">http_status_t</a> cupsWriteRequestData (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *buffer,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
@@ -1154,8 +1305,8 @@ char *httpAddrString (<br>
 <p class="description">Assemble a uniform resource identifier from its
 components.</p>
 <p class="code">
-http_uri_status_t httpAssembleURI (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_uri_coding_t encoding,<br>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURI (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char *uri,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int urilen,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *scheme,<br>
@@ -1196,8 +1347,8 @@ URI string.
 <p class="description">Assemble a uniform resource identifier from its
 components with a formatted resource.</p>
 <p class="code">
-http_uri_status_t httpAssembleURIf (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_uri_coding_t encoding,<br>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURIf (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char *uri,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int urilen,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *scheme,<br>
@@ -1298,7 +1449,7 @@ void httpClose (<br>
 <dt>http</dt>
 <dd class="description">Connection to server</dd>
 </dl>
-<h3 class="function"><a name="httpConnect">httpConnect</a></h3>
+<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpConnect">httpConnect</a></h3>
 <p class="description">Connect to a HTTP server.</p>
 <p class="code">
 <a href="#http_t">http_t</a> *httpConnect (<br>
@@ -1314,6 +1465,10 @@ void httpClose (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New HTTP connection</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function is deprecated - use <a href="#httpConnectEncrypt"><code>httpConnectEncrypt</code></a> instead.
+
+</p>
 <h3 class="function"><a name="httpConnectEncrypt">httpConnectEncrypt</a></h3>
 <p class="description">Connect to a HTTP server using encryption.</p>
 <p class="code">
@@ -1610,7 +1765,7 @@ int httpGetFd (<br>
 <p class="code">
 const char *httpGetField (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_field_t field<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -1702,7 +1857,7 @@ content larger than 2^31 - 1.
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetStatus">httpGetStatus</a></h3>
 <p class="description">Get the status of the last HTTP request.</p>
 <p class="code">
-http_status_t httpGetStatus (<br>
+<a href="#http_status_t">http_status_t</a> httpGetStatus (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
@@ -1717,7 +1872,7 @@ http_status_t httpGetStatus (<br>
 <p class="code">
 char *httpGetSubField (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_field_t field,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char *value<br>
 );</p>
@@ -1739,7 +1894,7 @@ char *httpGetSubField (<br>
 <p class="code">
 char *httpGetSubField2 (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_field_t field,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char *value,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int valuelen<br>
@@ -2044,8 +2199,8 @@ void httpSeparate2 (<br>
 <p class="description">Separate a Universal Resource Identifier into its
 components.</p>
 <p class="code">
-http_uri_status_t httpSeparateURI (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_uri_coding_t decoding,<br>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpSeparateURI (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_coding_t">http_uri_coding_t</a> decoding,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char *scheme,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int schemelen,<br>
@@ -2127,7 +2282,7 @@ void httpSetCookie (<br>
 <p class="code">
 void httpSetExpect (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_status_t expect<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_status_t">http_status_t</a> expect<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -2145,7 +2300,7 @@ void httpSetExpect (<br>
 <p class="code">
 void httpSetField (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_field_t field,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
@@ -2175,7 +2330,7 @@ void httpSetLength (<br>
 <p class="description">Return a short string describing a HTTP status code.</p>
 <p class="code">
 const char *httpStatus (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_status_t status<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_status_t">http_status_t</a> status<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -2183,7 +2338,10 @@ const char *httpStatus (<br>
 <dd class="description">HTTP status code</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">String or NULL</p>
+<p class="description">Localized status string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The returned string is localized to the current POSIX locale and is based
+on the status strings defined in RFC 2616.</p>
 <h3 class="function"><a name="httpTrace">httpTrace</a></h3>
 <p class="description">Send an TRACE request to the server.</p>
 <p class="code">
@@ -2203,7 +2361,7 @@ int httpTrace (<br>
 <h3 class="function"><a name="httpUpdate">httpUpdate</a></h3>
 <p class="description">Update the current HTTP state for incoming data.</p>
 <p class="code">
-http_status_t httpUpdate (<br>
+<a href="#http_status_t">http_status_t</a> httpUpdate (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
@@ -2277,7 +2435,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBoolean (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char value<br>
 );</p>
@@ -2299,7 +2457,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBooleans (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *values<br>
@@ -2324,7 +2482,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollection (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *value<br>
 );</p>
@@ -2346,7 +2504,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollections (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#ipp_t">ipp_t</a> **values<br>
@@ -2371,7 +2529,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddDate (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#ipp_uchar_t">ipp_uchar_t</a> *value<br>
 );</p>
@@ -2393,8 +2551,8 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddInteger (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t type,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int value<br>
 );</p>
@@ -2418,8 +2576,8 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddIntegers (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t type,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const int *values<br>
@@ -2446,7 +2604,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOctetString (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const void *data,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int datalen<br>
@@ -2471,7 +2629,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRange (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int lower,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int upper<br>
@@ -2496,7 +2654,7 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRanges (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const int *lower,<br>
@@ -2524,9 +2682,9 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolution (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_res_t units,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_res_t">ipp_res_t</a> units,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int xres,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int yres<br>
 );</p>
@@ -2552,10 +2710,10 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolutions (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_res_t units,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_res_t">ipp_res_t</a> units,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const int *xres,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const int *yres<br>
 );</p>
@@ -2596,8 +2754,8 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddString (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t type,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *charset,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
@@ -2624,8 +2782,8 @@ ssize_t httpWrite2 (<br>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStrings (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t type,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *charset,<br>
@@ -2721,7 +2879,7 @@ ipp_status_t ippErrorValue (<br>
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindAttribute (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t type<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -2740,7 +2898,7 @@ ipp_status_t ippErrorValue (<br>
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindNextAttribute (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t type<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -2776,7 +2934,7 @@ size_t ippLength (<br>
 <p class="description">Allocate a new IPP request message.</p>
 <p class="code">
 <a href="#ipp_t">ipp_t</a> *ippNewRequest (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_op_t op<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_op_t">ipp_op_t</a> op<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -2795,7 +2953,7 @@ attributes-natural-language value is derived from the current locale.
 <p class="description">Return a name for the given operation id.</p>
 <p class="code">
 const char *ippOpString (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_op_t op<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_op_t">ipp_op_t</a> op<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
 <dl>
@@ -2807,7 +2965,7 @@ const char *ippOpString (<br>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippOpValue">ippOpValue</a></h3>
 <p class="description">Return an operation id for the given name.</p>
 <p class="code">
-ipp_op_t ippOpValue (<br>
+<a href="#ipp_op_t">ipp_op_t</a> ippOpValue (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
 );</p>
 <h4 class="parameters">Parameters</h4>
@@ -2826,7 +2984,7 @@ int ippPort (void);</p>
 <h3 class="function"><a name="ippRead">ippRead</a></h3>
 <p class="description">Read data for an IPP message from a HTTP connection.</p>
 <p class="code">
-ipp_state_t ippRead (<br>
+<a href="#ipp_state_t">ipp_state_t</a> ippRead (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
 );</p>
@@ -2842,7 +3000,7 @@ ipp_state_t ippRead (<br>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="ippReadFile">ippReadFile</a></h3>
 <p class="description">Read data for an IPP message from a file.</p>
 <p class="code">
-ipp_state_t ippReadFile (<br>
+<a href="#ipp_state_t">ipp_state_t</a> ippReadFile (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int fd,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
 );</p>
@@ -2858,7 +3016,7 @@ ipp_state_t ippReadFile (<br>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippReadIO">ippReadIO</a></h3>
 <p class="description">Read data for an IPP message.</p>
 <p class="code">
-ipp_state_t ippReadIO (<br>
+<a href="#ipp_state_t">ipp_state_t</a> ippReadIO (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;void *src,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_iocb_t">ipp_iocb_t</a> cb,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int blocking,<br>
@@ -2891,6 +3049,40 @@ void ippSetPort (<br>
 <dt>p</dt>
 <dd class="description">Port number to use</dd>
 </dl>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="ippTagString">ippTagString</a></h3>
+<p class="description">Return the tag name corresponding to a tag value.</p>
+<p class="code">
+const char *ippTagString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> tag<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>tag</dt>
+<dd class="description">Tag value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Tag name</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The returned names are defined in RFC 2911 and 3382.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="ippTagValue">ippTagValue</a></h3>
+<p class="description">Return the tag value corresponding to a tag name.</p>
+<p class="code">
+<a href="#ipp_tag_t">ipp_tag_t</a> ippTagValue (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>name</dt>
+<dd class="description">Tag name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Tag value</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The tag names are defined in RFC 2911 and 3382.
+
+</p>
 <h3 class="function"><a name="ippTimeToDate">ippTimeToDate</a></h3>
 <p class="description">Convert from UNIX time to RFC 1903 format.</p>
 <p class="code">
@@ -2907,7 +3099,7 @@ const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate (<br>
 <h3 class="function"><a name="ippWrite">ippWrite</a></h3>
 <p class="description">Write data for an IPP message to a HTTP connection.</p>
 <p class="code">
-ipp_state_t ippWrite (<br>
+<a href="#ipp_state_t">ipp_state_t</a> ippWrite (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
 );</p>
@@ -2923,7 +3115,7 @@ ipp_state_t ippWrite (<br>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="ippWriteFile">ippWriteFile</a></h3>
 <p class="description">Write data for an IPP message to a file.</p>
 <p class="code">
-ipp_state_t ippWriteFile (<br>
+<a href="#ipp_state_t">ipp_state_t</a> ippWriteFile (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int fd,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
 );</p>
@@ -2939,7 +3131,7 @@ ipp_state_t ippWriteFile (<br>
 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippWriteIO">ippWriteIO</a></h3>
 <p class="description">Write data for an IPP message.</p>
 <p class="code">
-ipp_state_t ippWriteIO (<br>
+<a href="#ipp_state_t">ipp_state_t</a> ippWriteIO (<br>
 &nbsp;&nbsp;&nbsp;&nbsp;void *dst,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_iocb_t">ipp_iocb_t</a> cb,<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int blocking,<br>
@@ -2985,26 +3177,99 @@ typedef enum <a href="#http_encoding_e">http_encoding_e</a> http_encoding_t;
 <p class="code">
 typedef enum <a href="#http_encryption_e">http_encryption_e</a> http_encryption_t;
 </p>
+<h3 class="typedef"><a name="http_field_t">http_field_t</a></h3>
+<p class="description">HTTP field names</p>
+<p class="code">
+typedef enum <a href="#http_field_e">http_field_e</a> http_field_t;
+</p>
+<h3 class="typedef"><a name="http_keepalive_t">http_keepalive_t</a></h3>
+<p class="description">Types and structures...</p>
+<p class="code">
+typedef enum <a href="#http_keepalive_e">http_keepalive_e</a> http_keepalive_t;
+</p>
+<h3 class="typedef"><a name="http_status_t">http_status_t</a></h3>
+<p class="description">HTTP status codes</p>
+<p class="code">
+typedef enum <a href="#http_status_e">http_status_e</a> http_status_t;
+</p>
 <h3 class="typedef"><a name="http_t">http_t</a></h3>
 <p class="description">HTTP connection type</p>
 <p class="code">
 typedef struct _http_s http_t;
 </p>
+<h3 class="typedef"><a name="http_uri_coding_t">http_uri_coding_t</a></h3>
+<p class="description">HTTP version numbers</p>
+<p class="code">
+typedef enum <a href="#http_uri_coding_e">http_uri_coding_e</a> http_uri_coding_t;
+</p>
+<h3 class="typedef"><a name="http_uri_status_t">http_uri_status_t</a></h3>
+<p class="description">URI en/decode flags</p>
+<p class="code">
+typedef enum <a href="#http_uri_status_e">http_uri_status_e</a> http_uri_status_t;
+</p>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="http_version_t">http_version_t</a></h3>
+<p class="description">Socket address union, which
+makes using IPv6 and other
+address types easier and
+more portable. </p>
+<p class="code">
+typedef enum <a href="#http_version_e">http_version_e</a> http_version_t;
+</p>
 <h3 class="typedef"><a name="ipp_attribute_t">ipp_attribute_t</a></h3>
 <p class="description">Attribute</p>
 <p class="code">
 typedef struct <a href="#ipp_attribute_s">ipp_attribute_s</a> ipp_attribute_t;
 </p>
+<h3 class="typedef"><a name="ipp_finish_t">ipp_finish_t</a></h3>
+<p class="description">Orientation...</p>
+<p class="code">
+typedef enum <a href="#ipp_finish_e">ipp_finish_e</a> ipp_finish_t;
+</p>
 <h3 class="typedef"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ipp_iocb_t">ipp_iocb_t</a></h3>
 <p class="description">IPP IO Callback Function </p>
 <p class="code">
 typedef ssize_t (*ipp_iocb_t)(void *, <a href="#ipp_uchar_t">ipp_uchar_t</a> *, size_t);
 </p>
+<h3 class="typedef"><a name="ipp_jstate_t">ipp_jstate_t</a></h3>
+<p class="description">Printer States....</p>
+<p class="code">
+typedef enum <a href="#ipp_jstate_e">ipp_jstate_e</a> ipp_jstate_t;
+</p>
+<h3 class="typedef"><a name="ipp_op_t">ipp_op_t</a></h3>
+<p class="description">Old names for the operations</p>
+<p class="code">
+typedef enum <a href="#ipp_op_e">ipp_op_e</a> ipp_op_t;
+</p>
+<h3 class="typedef"><a name="ipp_orient_t">ipp_orient_t</a></h3>
+<p class="description">Qualities...</p>
+<p class="code">
+typedef enum <a href="#ipp_orient_e">ipp_orient_e</a> ipp_orient_t;
+</p>
+<h3 class="typedef"><a name="ipp_pstate_t">ipp_pstate_t</a></h3>
+<p class="description">IPP states...</p>
+<p class="code">
+typedef enum <a href="#ipp_pstate_e">ipp_pstate_e</a> ipp_pstate_t;
+</p>
+<h3 class="typedef"><a name="ipp_quality_t">ipp_quality_t</a></h3>
+<p class="description">Job States....</p>
+<p class="code">
+typedef enum <a href="#ipp_quality_e">ipp_quality_e</a> ipp_quality_t;
+</p>
 <h3 class="typedef"><a name="ipp_request_t">ipp_request_t</a></h3>
 <p class="description">Request Header</p>
 <p class="code">
 typedef union <a href="#ipp_request_u">ipp_request_u</a> ipp_request_t;
 </p>
+<h3 class="typedef"><a name="ipp_res_t">ipp_res_t</a></h3>
+<p class="description">Types and structures...</p>
+<p class="code">
+typedef enum <a href="#ipp_res_e">ipp_res_e</a> ipp_res_t;
+</p>
+<h3 class="typedef"><a name="ipp_state_t">ipp_state_t</a></h3>
+<p class="description">IPP operations...</p>
+<p class="code">
+typedef enum <a href="#ipp_state_e">ipp_state_e</a> ipp_state_t;
+</p>
 <h3 class="typedef"><a name="ipp_t">ipp_t</a></h3>
 <p class="description">Attribute Value</p>
 <p class="code">
@@ -3015,6 +3280,11 @@ typedef struct <a href="#ipp_s">ipp_s</a> ipp_t;
 <p class="code">
 typedef typedef unsigned char ipp_uchar_t;
 </p>
+<h3 class="typedef"><a name="ipp_tag_t">ipp_tag_t</a></h3>
+<p class="description">Format tags for attributes...</p>
+<p class="code">
+typedef enum <a href="#ipp_tag_e">ipp_tag_e</a> ipp_tag_t;
+</p>
 <h3 class="typedef"><a name="ipp_value_t">ipp_value_t</a></h3>
 <p class="description">New in CUPS 1.1.19</p>
 <p class="code">
@@ -3043,7 +3313,7 @@ with a hostname. </p>
 &nbsp;&nbsp;&nbsp;&nbsp;char *name;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;struct <a href="#ipp_attribute_s">ipp_attribute_s</a> *next;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;int num_values;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t group_tag, value_tag;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group_tag, value_tag;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_value_t">ipp_value_t</a> values[1];<br>
 };</p>
 <h4 class="members">Members</h4>
@@ -3064,11 +3334,11 @@ with a hostname. </p>
 <p class="code">struct ipp_s {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *attrs;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *current;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_tag_t curtag;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> curtag;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *last;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *prev;<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_request_t">ipp_request_t</a> request;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_state_t state;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_state_t">ipp_state_t</a> state;<br>
 };</p>
 <h4 class="members">Members</h4>
 <dl>