d6fa26d0adaec6c910115be34fe7a5a5f402c14fMark Andrews<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User - Copyright (C) 2000, 2001, 2004, 2005, 2007, 2014-2016 Internet Systems Consortium, Inc. ("ISC")
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/.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
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>
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_init,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_invalidate,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_add,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_subtract,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_clear,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_first,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_forward,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_back,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_getuint8,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_putuint8,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_getuint16,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_putuint16,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_getuint32,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_putuint32,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_putmem,
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User lwres_buffer_getmem
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User — lightweight resolver buffer management
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_init</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>void *<var class="pdparam">base</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">length</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
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>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_add</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_subtract</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
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>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
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>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_forward</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_back</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">n</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
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>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putuint8</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_uint8_t <var class="pdparam">val</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
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>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putuint16</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_uint16_t <var class="pdparam">val</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
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>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putuint32</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_uint32_t <var class="pdparam">val</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_putmem</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>const unsigned char *<var class="pdparam">base</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">length</var><code>)</code>;</td>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_buffer_getmem</b>(</code></td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>lwres_buffer_t *<var class="pdparam">b</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned char *<var class="pdparam">base</var>, </td>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User<td>unsigned int <var class="pdparam">length</var><code>)</code>;</td>
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 functions in the ISC library.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A buffer is a region of memory, together with a set of related
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 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 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 The <span class="emphasis"><em>active region</em></span> is an (optional) subregion of the
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.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson /------------entire length---------------\\
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson /----- used region -----\\/-- available --\\
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson +----------------------------------------+
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson | consumed | remaining | |
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson +----------------------------------------+
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.
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.
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><code class="function">lwres_buffer_init()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein initializes the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and assocates it with the memory region of size
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes starting at location
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox 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 The functions
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_add()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_subtract()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein respectively increase and decrease the used space in
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
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A buffer is re-initialised by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_clear()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The function sets
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><code class="function">lwres_buffer_first</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein makes the consumed region of buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein empty by setting
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to zero (the start of the buffer).
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><code class="function">lwres_buffer_forward()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein increases the consumed region of buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes, checking for overflow.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_back()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein decreases buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein consumed region by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes and checks for underflow.
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><code class="function">lwres_buffer_getuint8()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein reads an unsigned 8-bit integer from
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and returns it.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putuint8()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein writes the unsigned 8-bit integer
7911e6f9de303bca5a3d8b34f4330c8f7cecffaeTinderbox User <p><code class="function">lwres_buffer_getuint16()</code>
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 <code class="function">lwres_buffer_putuint16()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putuint32()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein writes the unsigned 16-bit or 32-bit integer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in network byte order.
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 <code class="function">lwres_buffer_putmem()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein respectively.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_putmem()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes of memory at
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_buffer_getmem()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein bytes of memory from