lwres_buffer.html revision 5347c0fcb04eaea19d9f39795646239f487c6207
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<!--
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - Copyright (C) 2000, 2001, 2004, 2005, 2007, 2014-2016 Internet Systems Consortium, Inc. ("ISC")
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - This Source Code Form is subject to the terms of the Mozilla Public
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - License, v. 2.0. If a copy of the MPL was not distributed with this
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - file, You can obtain one at http://mozilla.org/MPL/2.0/.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson-->
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<html>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<head>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<title>lwres_buffer</title>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</head>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1"></a><div class="titlepage"></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="refnamediv">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<h2>Name</h2>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>lwres_buffer_init, lwres_buffer_invalidate, lwres_buffer_add, lwres_buffer_subtract, lwres_buffer_clear, lwres_buffer_first, lwres_buffer_forward, lwres_buffer_back, lwres_buffer_getuint8, lwres_buffer_putuint8, lwres_buffer_getuint16, lwres_buffer_putuint16, lwres_buffer_getuint32, lwres_buffer_putuint32, lwres_buffer_putmem, lwres_buffer_getmem &#8212; lightweight resolver buffer management</p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="refsynopsisdiv">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<h2>Synopsis</h2>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="funcsynopsis">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<pre class="funcsynopsisinfo">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#include &lt;lwres/lwbuffer.h&gt;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_init</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>void *<var class="pdparam">base</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">length</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_invalidate</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews</tr></table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_add</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_subtract</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_clear</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews</tr></table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_first</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews</tr></table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_forward</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_back</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlwres_uint8_t
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_getuint8</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews</tr></table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putuint8</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_uint8_t <var class="pdparam">val</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlwres_uint16_t
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_getuint16</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews</tr></table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putuint16</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_uint16_t <var class="pdparam">val</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlwres_uint32_t
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_getuint32</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews</tr></table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putuint32</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_uint32_t <var class="pdparam">val</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putmem</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>const unsigned char *<var class="pdparam">base</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">length</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td><code class="funcdef">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinvoid
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_getmem</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned char *<var class="pdparam">base</var>, </td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td>�</td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">length</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<div class="funcprototype-spacer">�</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="refsection">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.7"></a><h2>DESCRIPTION</h2>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein These functions provide bounds checked access to a region of memory
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein where data is being read or written.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein They are based on, and similar to, the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="literal">isc_buffer_</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein functions in the ISC library.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A buffer is a region of memory, together with a set of related
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein subregions.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The <span class="emphasis"><em>used region</em></span> and the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="emphasis"><em>available</em></span> region are disjoint, and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein their union is the buffer's region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The used region extends from the beginning of the buffer region to the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein last used byte.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The available region extends from one byte greater than the last used
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein byte to the end of the buffer's region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The size of the used region can be changed using various
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein buffer commands.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Initially, the used region is empty.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The used region is further subdivided into two disjoint regions: the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="emphasis"><em>consumed region</em></span> and the <span class="emphasis"><em>remaining region</em></span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The union of these two regions is the used region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The consumed region extends from the beginning of the used region to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the byte before the <span class="emphasis"><em>current</em></span> offset (if any).
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The <span class="emphasis"><em>remaining</em></span> region the current pointer to the end
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein of the used
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The size of the consumed region can be changed using various
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein buffer commands.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Initially, the consumed region is empty.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The <span class="emphasis"><em>active region</em></span> is an (optional) subregion of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein remaining
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein It extends from the current offset to an offset in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein remaining region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Initially, the active region is empty.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If the current offset advances beyond the chosen offset,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the active region will also be empty.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<pre class="programlisting">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson /------------entire length---------------\\
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson /----- used region -----\\/-- available --\\
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson +----------------------------------------+
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson | consumed | remaining | |
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson +----------------------------------------+
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson a b c d e
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </pre>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<pre class="programlisting">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson a == base of buffer.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson b == current pointer. Can be anywhere between a and d.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson c == active pointer. Meaningful between b and d.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson d == used pointer.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson e == length of buffer.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </pre>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<pre class="programlisting">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson a-e == entire length of buffer.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson a-d == used region.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson a-b == consumed region.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson b-d == remaining region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein b-c == optional active region.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</pre>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p><code class="function">lwres_buffer_init()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein initializes the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">lwres_buffer_t</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*b</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and assocates it with the memory region of size
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>length</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes starting at location
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>base.</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p><code class="function">lwres_buffer_invalidate()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein marks the buffer <em class="parameter"><code>*b</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein as invalid. Invalidating a buffer after use is not required,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein but makes it possible to catch its possible accidental use.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The functions
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_add()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_subtract()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein respectively increase and decrease the used space in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*b</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>n</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_add()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein checks for buffer overflow and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_subtract()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein checks for underflow.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein These functions do not allocate or deallocate memory.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein They just change the value of
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User <code class="varname">used</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A buffer is re-initialised by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_clear()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The function sets
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User <code class="varname">used</code>,
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User <code class="varname">current</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User <code class="varname">active</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to zero.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p><code class="function">lwres_buffer_first</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein makes the consumed region of buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*p</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein empty by setting
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User <code class="varname">current</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to zero (the start of the buffer).
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p><code class="function">lwres_buffer_forward()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein increases the consumed region of buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*b</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>n</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes, checking for overflow.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Similarly,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_back()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein decreases buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>b</code></em>'s
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein consumed region by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>n</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes and checks for underflow.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p><code class="function">lwres_buffer_getuint8()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein reads an unsigned 8-bit integer from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*b</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and returns it.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putuint8()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein writes the unsigned 8-bit integer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>val</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>*b</code></em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p><code class="function">lwres_buffer_getuint16()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_getuint32()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein are identical to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putuint8()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein except that they respectively read an unsigned 16-bit or 32-bit integer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in network byte order from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>b</code></em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Similarly,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putuint16()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putuint32()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein writes the unsigned 16-bit or 32-bit integer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>val</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>b</code></em>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in network byte order.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Arbitrary amounts of data are read or written from a lightweight
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein resolver buffer with
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_getmem()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putmem()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein respectively.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putmem()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein copies
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>length</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes of memory at
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>base</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>b</code></em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Conversely,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_getmem()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein copies
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>length</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes of memory from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>b</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>base</code></em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div></body>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</html>