|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
- Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
Packit |
5ce601 |
-
|
|
Packit |
5ce601 |
- This Source Code Form is subject to the terms of the Mozilla Public
|
|
Packit |
5ce601 |
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
Packit Service |
704ed8 |
- file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
Packit |
5ce601 |
-
|
|
Packit |
5ce601 |
- See the COPYRIGHT file distributed with this work for additional
|
|
Packit |
5ce601 |
- information regarding copyright ownership.
|
|
Packit |
5ce601 |
-->
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
|
|
Packit Service |
704ed8 |
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0">
|
|
Packit |
5ce601 |
<info>
|
|
Packit |
5ce601 |
<date>2007-06-18</date>
|
|
Packit |
5ce601 |
</info>
|
|
Packit |
5ce601 |
<refentryinfo>
|
|
Packit |
5ce601 |
<corpname>ISC</corpname>
|
|
Packit |
5ce601 |
<corpauthor>Internet Systems Consortium, Inc.</corpauthor>
|
|
Packit |
5ce601 |
</refentryinfo>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<refmeta>
|
|
Packit |
5ce601 |
<refentrytitle>lwres_buffer</refentrytitle>
|
|
Packit |
5ce601 |
<manvolnum>3</manvolnum>
|
|
Packit Service |
d3afd5 |
<refmiscinfo>BIND9</refmiscinfo>
|
|
Packit |
5ce601 |
</refmeta>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<docinfo>
|
|
Packit |
5ce601 |
<copyright>
|
|
Packit |
5ce601 |
<year>2000</year>
|
|
Packit |
5ce601 |
<year>2001</year>
|
|
Packit |
5ce601 |
<year>2004</year>
|
|
Packit |
5ce601 |
<year>2005</year>
|
|
Packit |
5ce601 |
<year>2007</year>
|
|
Packit |
5ce601 |
<year>2014</year>
|
|
Packit |
5ce601 |
<year>2015</year>
|
|
Packit |
5ce601 |
<year>2016</year>
|
|
Packit |
5ce601 |
<year>2018</year>
|
|
Packit |
5ce601 |
<year>2019</year>
|
|
Packit |
5ce601 |
<year>2020</year>
|
|
Packit |
5ce601 |
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
|
Packit |
5ce601 |
</copyright>
|
|
Packit |
5ce601 |
</docinfo>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<refnamediv>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_init</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_invalidate</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_add</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_subtract</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_clear</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_first</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_forward</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_back</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_getuint8</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_putuint8</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_getuint16</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_putuint16</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_getuint32</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_putuint32</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_putmem</refname>
|
|
Packit |
5ce601 |
<refname>lwres_buffer_getmem</refname>
|
|
Packit |
5ce601 |
<refpurpose>lightweight resolver buffer management</refpurpose>
|
|
Packit |
5ce601 |
</refnamediv>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<refsynopsisdiv>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcsynopsis>
|
|
Packit |
5ce601 |
<funcsynopsisinfo>
|
|
Packit |
5ce601 |
#include <lwres/lwbuffer.h>
|
|
Packit |
5ce601 |
</funcsynopsisinfo>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_init</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>void *<parameter>base</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned int <parameter>length</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_invalidate</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_add</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned int <parameter>n</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_subtract</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned int <parameter>n</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_clear</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_first</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_forward</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned int <parameter>n</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_back</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned int <parameter>n</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
uint8_t
|
|
Packit |
5ce601 |
<function>lwres_buffer_getuint8</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_putuint8</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>uint8_t <parameter>val</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
uint16_t
|
|
Packit |
5ce601 |
<function>lwres_buffer_getuint16</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_putuint16</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>uint16_t <parameter>val</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
uint32_t
|
|
Packit |
5ce601 |
<function>lwres_buffer_getuint32</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_putuint32</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>uint32_t <parameter>val</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_putmem</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>const unsigned char *<parameter>base</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned int <parameter>length</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<funcprototype>
|
|
Packit |
5ce601 |
<funcdef>
|
|
Packit |
5ce601 |
void
|
|
Packit |
5ce601 |
<function>lwres_buffer_getmem</function></funcdef>
|
|
Packit |
5ce601 |
<paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned char *<parameter>base</parameter></paramdef>
|
|
Packit |
5ce601 |
<paramdef>unsigned int <parameter>length</parameter></paramdef>
|
|
Packit |
5ce601 |
</funcprototype>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
</funcsynopsis>
|
|
Packit |
5ce601 |
</refsynopsisdiv>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<refsection><info><title>DESCRIPTION</title></info>
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
|
|
Packit |
5ce601 |
<para>
|
|
Packit |
5ce601 |
These functions provide bounds checked access to a region of memory
|
|
Packit |
5ce601 |
where data is being read or written.
|
|
Packit |
5ce601 |
They are based on, and similar to, the
|
|
Packit |
5ce601 |
<literal>isc_buffer_</literal>
|
|
Packit |
5ce601 |
functions in the ISC library.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para>
|
|
Packit |
5ce601 |
A buffer is a region of memory, together with a set of related
|
|
Packit |
5ce601 |
subregions.
|
|
Packit |
5ce601 |
The <emphasis>used region</emphasis> and the
|
|
Packit |
5ce601 |
<emphasis>available</emphasis> region are disjoint, and
|
|
Packit |
5ce601 |
their union is the buffer's region.
|
|
Packit |
5ce601 |
The used region extends from the beginning of the buffer region to the
|
|
Packit |
5ce601 |
last used byte.
|
|
Packit |
5ce601 |
The available region extends from one byte greater than the last used
|
|
Packit |
5ce601 |
byte to the end of the buffer's region.
|
|
Packit |
5ce601 |
The size of the used region can be changed using various
|
|
Packit |
5ce601 |
buffer commands.
|
|
Packit |
5ce601 |
Initially, the used region is empty.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para>
|
|
Packit |
5ce601 |
The used region is further subdivided into two disjoint regions: the
|
|
Packit |
5ce601 |
<emphasis>consumed region</emphasis> and the <emphasis>remaining region</emphasis>.
|
|
Packit |
5ce601 |
The union of these two regions is the used region.
|
|
Packit |
5ce601 |
The consumed region extends from the beginning of the used region to
|
|
Packit |
5ce601 |
the byte before the <emphasis>current</emphasis> offset (if any).
|
|
Packit |
5ce601 |
The <emphasis>remaining</emphasis> region the current pointer to the end
|
|
Packit |
5ce601 |
of the used
|
|
Packit |
5ce601 |
region.
|
|
Packit |
5ce601 |
The size of the consumed region can be changed using various
|
|
Packit |
5ce601 |
buffer commands.
|
|
Packit |
5ce601 |
Initially, the consumed region is empty.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para>
|
|
Packit |
5ce601 |
The <emphasis>active region</emphasis> is an (optional) subregion of the
|
|
Packit |
5ce601 |
remaining
|
|
Packit |
5ce601 |
region.
|
|
Packit |
5ce601 |
It extends from the current offset to an offset in the
|
|
Packit |
5ce601 |
remaining region.
|
|
Packit |
5ce601 |
Initially, the active region is empty.
|
|
Packit |
5ce601 |
If the current offset advances beyond the chosen offset,
|
|
Packit |
5ce601 |
the active region will also be empty.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><programlisting>
|
|
Packit |
5ce601 |
/------------entire length---------------\\
|
|
Packit |
5ce601 |
/----- used region -----\\/-- available --\\
|
|
Packit |
5ce601 |
+----------------------------------------+
|
|
Packit |
5ce601 |
| consumed | remaining | |
|
|
Packit |
5ce601 |
+----------------------------------------+
|
|
Packit |
5ce601 |
a b c d e
|
|
Packit |
5ce601 |
</programlisting>
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><programlisting>
|
|
Packit |
5ce601 |
a == base of buffer.
|
|
Packit |
5ce601 |
b == current pointer. Can be anywhere between a and d.
|
|
Packit |
5ce601 |
c == active pointer. Meaningful between b and d.
|
|
Packit |
5ce601 |
d == used pointer.
|
|
Packit |
5ce601 |
e == length of buffer.
|
|
Packit |
5ce601 |
</programlisting>
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><programlisting>
|
|
Packit |
5ce601 |
a-e == entire length of buffer.
|
|
Packit |
5ce601 |
a-d == used region.
|
|
Packit |
5ce601 |
a-b == consumed region.
|
|
Packit |
5ce601 |
b-d == remaining region.
|
|
Packit |
5ce601 |
b-c == optional active region.
|
|
Packit |
5ce601 |
</programlisting>
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><function>lwres_buffer_init()</function>
|
|
Packit |
5ce601 |
initializes the
|
|
Packit |
5ce601 |
<type>lwres_buffer_t</type>
|
|
Packit |
5ce601 |
<parameter>*b</parameter>
|
|
Packit |
5ce601 |
and associates it with the memory region of size
|
|
Packit |
5ce601 |
<parameter>length</parameter>
|
|
Packit |
5ce601 |
bytes starting at location
|
|
Packit |
5ce601 |
<parameter>base.</parameter>
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><function>lwres_buffer_invalidate()</function>
|
|
Packit |
5ce601 |
marks the buffer <parameter>*b</parameter>
|
|
Packit |
5ce601 |
as invalid. Invalidating a buffer after use is not required,
|
|
Packit |
5ce601 |
but makes it possible to catch its possible accidental use.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para>
|
|
Packit |
5ce601 |
The functions
|
|
Packit |
5ce601 |
<function>lwres_buffer_add()</function>
|
|
Packit |
5ce601 |
and
|
|
Packit |
5ce601 |
<function>lwres_buffer_subtract()</function>
|
|
Packit |
5ce601 |
respectively increase and decrease the used space in
|
|
Packit |
5ce601 |
buffer
|
|
Packit |
5ce601 |
<parameter>*b</parameter>
|
|
Packit |
5ce601 |
by
|
|
Packit |
5ce601 |
<parameter>n</parameter>
|
|
Packit |
5ce601 |
bytes.
|
|
Packit |
5ce601 |
<function>lwres_buffer_add()</function>
|
|
Packit |
5ce601 |
checks for buffer overflow and
|
|
Packit |
5ce601 |
<function>lwres_buffer_subtract()</function>
|
|
Packit |
5ce601 |
checks for underflow.
|
|
Packit |
5ce601 |
These functions do not allocate or deallocate memory.
|
|
Packit |
5ce601 |
They just change the value of
|
|
Packit |
5ce601 |
<varname remap="structfield">used</varname>.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para>
|
|
Packit |
5ce601 |
A buffer is re-initialised by
|
|
Packit |
5ce601 |
<function>lwres_buffer_clear()</function>.
|
|
Packit |
5ce601 |
The function sets
|
|
Packit |
5ce601 |
<varname remap="structfield">used</varname>,
|
|
Packit |
5ce601 |
<varname remap="structfield">current</varname>
|
|
Packit |
5ce601 |
and
|
|
Packit |
5ce601 |
<varname remap="structfield">active</varname>
|
|
Packit |
5ce601 |
to zero.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><function>lwres_buffer_first</function>
|
|
Packit |
5ce601 |
makes the consumed region of buffer
|
|
Packit |
5ce601 |
<parameter>*p</parameter>
|
|
Packit |
5ce601 |
empty by setting
|
|
Packit |
5ce601 |
<varname remap="structfield">current</varname>
|
|
Packit |
5ce601 |
to zero (the start of the buffer).
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><function>lwres_buffer_forward()</function>
|
|
Packit |
5ce601 |
increases the consumed region of buffer
|
|
Packit |
5ce601 |
<parameter>*b</parameter>
|
|
Packit |
5ce601 |
by
|
|
Packit |
5ce601 |
<parameter>n</parameter>
|
|
Packit |
5ce601 |
bytes, checking for overflow.
|
|
Packit |
5ce601 |
Similarly,
|
|
Packit |
5ce601 |
<function>lwres_buffer_back()</function>
|
|
Packit |
5ce601 |
decreases buffer
|
|
Packit |
5ce601 |
<parameter>b</parameter>'s
|
|
Packit |
5ce601 |
consumed region by
|
|
Packit |
5ce601 |
<parameter>n</parameter>
|
|
Packit |
5ce601 |
bytes and checks for underflow.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><function>lwres_buffer_getuint8()</function>
|
|
Packit |
5ce601 |
reads an unsigned 8-bit integer from
|
|
Packit |
5ce601 |
<parameter>*b</parameter>
|
|
Packit |
5ce601 |
and returns it.
|
|
Packit |
5ce601 |
<function>lwres_buffer_putuint8()</function>
|
|
Packit |
5ce601 |
writes the unsigned 8-bit integer
|
|
Packit |
5ce601 |
<parameter>val</parameter>
|
|
Packit |
5ce601 |
to buffer
|
|
Packit |
5ce601 |
<parameter>*b</parameter>.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para><function>lwres_buffer_getuint16()</function>
|
|
Packit |
5ce601 |
and
|
|
Packit |
5ce601 |
<function>lwres_buffer_getuint32()</function>
|
|
Packit |
5ce601 |
are identical to
|
|
Packit |
5ce601 |
<function>lwres_buffer_putuint8()</function>
|
|
Packit |
5ce601 |
except that they respectively read an unsigned 16-bit or 32-bit integer
|
|
Packit |
5ce601 |
in network byte order from
|
|
Packit |
5ce601 |
<parameter>b</parameter>.
|
|
Packit |
5ce601 |
Similarly,
|
|
Packit |
5ce601 |
<function>lwres_buffer_putuint16()</function>
|
|
Packit |
5ce601 |
and
|
|
Packit |
5ce601 |
<function>lwres_buffer_putuint32()</function>
|
|
Packit |
5ce601 |
writes the unsigned 16-bit or 32-bit integer
|
|
Packit |
5ce601 |
<parameter>val</parameter>
|
|
Packit |
5ce601 |
to buffer
|
|
Packit |
5ce601 |
<parameter>b</parameter>,
|
|
Packit |
5ce601 |
in network byte order.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
<para>
|
|
Packit |
5ce601 |
Arbitrary amounts of data are read or written from a lightweight
|
|
Packit |
5ce601 |
resolver buffer with
|
|
Packit |
5ce601 |
<function>lwres_buffer_getmem()</function>
|
|
Packit |
5ce601 |
and
|
|
Packit |
5ce601 |
<function>lwres_buffer_putmem()</function>
|
|
Packit |
5ce601 |
respectively.
|
|
Packit |
5ce601 |
<function>lwres_buffer_putmem()</function>
|
|
Packit |
5ce601 |
copies
|
|
Packit |
5ce601 |
<parameter>length</parameter>
|
|
Packit |
5ce601 |
bytes of memory at
|
|
Packit |
5ce601 |
<parameter>base</parameter>
|
|
Packit |
5ce601 |
to
|
|
Packit |
5ce601 |
<parameter>b</parameter>.
|
|
Packit |
5ce601 |
Conversely,
|
|
Packit |
5ce601 |
<function>lwres_buffer_getmem()</function>
|
|
Packit |
5ce601 |
copies
|
|
Packit |
5ce601 |
<parameter>length</parameter>
|
|
Packit |
5ce601 |
bytes of memory from
|
|
Packit |
5ce601 |
<parameter>b</parameter>
|
|
Packit |
5ce601 |
to
|
|
Packit |
5ce601 |
<parameter>base</parameter>.
|
|
Packit |
5ce601 |
</para>
|
|
Packit |
5ce601 |
</refsection>
|
|
Packit |
5ce601 |
</refentry>
|