lwres_context.html revision 8a66318e41ed14c5a88130e8c362610e8faa2121
499b34cea04a46823d003d4c0520c8b03e8513cbBrian Wellington - Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence - Copyright (C) 2001 Internet Software Consortium.
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence - Permission to use, copy, modify, and distribute this software for any
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence - purpose with or without fee is hereby granted, provided that the above
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence - copyright notice and this permission notice appear in all copies.
15a44745412679c30a6d022733925af70a38b715David Lawrence - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
15a44745412679c30a6d022733925af70a38b715David Lawrence - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15a44745412679c30a6d022733925af70a38b715David Lawrence - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
15a44745412679c30a6d022733925af70a38b715David Lawrence - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15a44745412679c30a6d022733925af70a38b715David Lawrence - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
15a44745412679c30a6d022733925af70a38b715David Lawrence - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15a44745412679c30a6d022733925af70a38b715David Lawrence - PERFORMANCE OF THIS SOFTWARE.
6a8832f784bd53aa6afbda22f6187cea6490e1e1Andreas Gustafsson<!-- $Id: lwres_context.html,v 1.7 2004/03/05 08:32:19 marka Exp $ -->
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context</TITLE
c4717613e45323ed23dc6e9162cba89f1f83830cDavid LawrenceNAME="GENERATOR"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCONTENT="Modular DocBook HTML Stylesheet Version 1.73
c4958494a98a59ce25e9fecad76a9ab0e36cc59fDanny MayerCLASS="REFENTRY"
8f804834e2b537da5c8bc81f986143a46147b490Andreas GustafssonBGCOLOR="#FFFFFF"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceTEXT="#000000"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceLINK="#0000FF"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceVLINK="#840084"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceALINK="#0000FF"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context</A
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFNAMEDIV"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_create, lwres_context_destroy, lwres_context_nextserial, lwres_context_initserial, lwres_context_freemem, lwres_context_allocmem, lwres_context_sendrecv -- lightweight resolver context management</DIV
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFSYNOPSISDIV"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCSYNOPSIS"
2918b5bda6a55c301eb87992b5f2acd7176d0737David LawrenceCLASS="FUNCSYNOPSISINFO"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCDEF"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_result_t
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencelwres_context_create</CODE
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>(lwres_context_t **contextp, void *arg, lwres_malloc_t malloc_function, lwres_free_t free_function);</CODE
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCDEF"
d409ceeda41a256e8114423674d844d5f5035ee8Bob Halley>lwres_result_t
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencelwres_context_destroy</CODE
8f804834e2b537da5c8bc81f986143a46147b490Andreas Gustafsson>(lwres_context_t **contextp);</CODE
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCDEF"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencelwres_context_initserial</CODE
8f804834e2b537da5c8bc81f986143a46147b490Andreas Gustafsson>(lwres_context_t *ctx, lwres_uint32_t serial);</CODE
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCDEF"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_uint32_t
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencelwres_context_nextserial</CODE
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>(lwres_context_t *ctx);</CODE
87cafc5e70f79f2586d067fbdd64f61bbab069d2David LawrenceCLASS="FUNCDEF"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencelwres_context_freemem</CODE
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>(lwres_context_t *ctx, void *mem, size_t len);</CODE
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCDEF"
61e9c1cdbe29683bb2db388e4fc6a6fd59315cefDavid Lawrencelwres_context_allocmem</CODE
f8da2d95835c5216570a45e9000f740321503ae3David Lawrence>(lwres_context_t *ctx, size_t len);</CODE
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCDEF"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencelwres_context_sendrecv</CODE
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>(lwres_context_t *ctx, void *sendbase, int sendlen, void *recvbase, int recvlen, int *recvd_len);</CODE
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFSECT1"
c4958494a98a59ce25e9fecad76a9ab0e36cc59fDanny Mayer>DESCRIPTION</H2
1a487fb7d230403bf1b5d6628542134f52c80653Michael GraffCLASS="FUNCTION"
1a487fb7d230403bf1b5d6628542134f52c80653Michael Graff>lwres_context_create()</TT
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_t</SPAN
df0f58959ed82a2a43ca8d816ce9592541df9f2fMark Andrewsstructure for use in lightweight resolver operations.
1a487fb7d230403bf1b5d6628542134f52c80653Michael GraffIt holds a socket and other data needed for communicating
b161f87be81548d1b6d0210a7e138a08fbb2d3e5David Lawrencewith a resolver daemon.
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_t</SPAN
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceis returned through
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>lwres_context_t</SPAN
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>lwres_context_t</SPAN
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrencepointer must initially be NULL, and is modified
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrenceto point to the newly created
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>lwres_context_t</SPAN
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>When the lightweight resolver needs to perform dynamic memory
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrenceallocation, it will call
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>malloc_function</I
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrenceto allocate memory and
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>free_function</I
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrenceto free it. If
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>malloc_function</I
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>free_function</I
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceare NULL, memory is allocated using
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="CITEREFENTRY"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFENTRYTITLE"
edcd1247ad7e81bb8b430e610d9718f64c70f05dDavid LawrenceIt is not permitted to have a NULL
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>malloc_function</I
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrenceand a non-NULL
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>free_function</I
edcd1247ad7e81bb8b430e610d9718f64c70f05dDavid Lawrenceor vice versa.
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrenceis passed as the first parameter to the memory
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrenceallocation functions.
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>malloc_function</I
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>free_function</I
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceis unused and should be passed as NULL.</P
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>Once memory for the structure has been allocated,
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceit is initialized using
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="CITEREFENTRY"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFENTRYTITLE"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_conf_init</SPAN
edcd1247ad7e81bb8b430e610d9718f64c70f05dDavid Lawrenceand returned via
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="FUNCTION"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>lwres_context_destroy()</TT
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>lwres_context_t</SPAN
0bd4e3591ac1a729c7ec8f811844119473350975David Lawrenceclosing its socket.
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrenceis a pointer to a pointer to the context that is to be destroyed.
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid LawrenceThe pointer will be set to NULL when the context has been destroyed.</P
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>The context holds a serial number that is used to identify resolver
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencerequest packets and associate responses with the corresponding requests.
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceThis serial number is controlled using
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrence>lwres_context_initserial()</TT
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
6a8832f784bd53aa6afbda22f6187cea6490e1e1Andreas Gustafsson>lwres_context_nextserial()</TT
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid LawrenceCLASS="FUNCTION"
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrence>lwres_context_initserial()</TT
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrencesets the serial number for context
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_nextserial()</TT
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrenceincrements the serial number and returns the previous value.</P
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrence>Memory for a lightweight resolver context is allocated and freed using
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_allocmem()</TT
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid LawrenceCLASS="FUNCTION"
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrence>lwres_context_freemem()</TT
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceThese use whatever allocations were defined when the context was
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrence>lwres_context_create()</TT
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid LawrenceCLASS="FUNCTION"
ff30a206ecc63b6681716322ed7f017e3f51ea7fDavid Lawrence>lwres_context_allocmem()</TT
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencebytes of memory and if successful returns a pointer to the allocated
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
edcd1247ad7e81bb8b430e610d9718f64c70f05dDavid Lawrence>lwres_context_freemem()</TT
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencebytes of space starting at location
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_sendrecv()</TT
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceperforms I/O for the context
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
2918b5bda6a55c301eb87992b5f2acd7176d0737David LawrenceData are read and written from the context's socket.
2918b5bda6a55c301eb87992b5f2acd7176d0737David LawrenceIt writes data from
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence— typically a lightweight resolver query packet —
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceand waits for a reply which is copied to the receive buffer at
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceThe number of bytes that were written to this receive buffer is
863ac191b448a13ae1a3a8ee3458344e11602737David LawrenceCLASS="PARAMETER"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>*recvd_len</I
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFSECT1"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>RETURN VALUES</H2
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
863ac191b448a13ae1a3a8ee3458344e11602737David Lawrence>lwres_context_create()</TT
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="ERRORCODE"
edcd1247ad7e81bb8b430e610d9718f64c70f05dDavid Lawrence>LWRES_R_NOMEMORY</SPAN
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrenceif memory for the
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>struct lwres_context</SPAN
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencecould not be allocated,
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="ERRORCODE"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>LWRES_R_SUCCESS</SPAN
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>Successful calls to the memory allocator
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_allocmem()</TT
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencereturn a pointer to the start of the allocated space.
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceIt returns NULL if memory could not be allocated.</P
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="ERRORCODE"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>LWRES_R_SUCCESS</SPAN
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceis returned when
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_sendrecv()</TT
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencecompletes successfully.
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="ERRORCODE"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>LWRES_R_IOERROR</SPAN
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrenceis returned if an I/O error occurs and
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="ERRORCODE"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>LWRES_R_TIMEOUT</SPAN
fc80027fb54b501cdd88461bf879d078259e0226David Lawrenceis returned if
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="FUNCTION"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_context_sendrecv()</TT
fc80027fb54b501cdd88461bf879d078259e0226David Lawrencetimes out waiting for a response.</P
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFSECT1"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="CITEREFENTRY"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFENTRYTITLE"
fc80027fb54b501cdd88461bf879d078259e0226David Lawrence>lwres_conf_init</SPAN
b161f87be81548d1b6d0210a7e138a08fbb2d3e5David LawrenceCLASS="CITEREFENTRY"
0c7b7a19e5a3c23fbb789238dcc4d43cd55387a0Brian WellingtonCLASS="REFENTRYTITLE"
fc6f5743aa860861fe39ca2680d9aa08e39d3039Andreas GustafssonCLASS="CITEREFENTRY"
fc80027fb54b501cdd88461bf879d078259e0226David LawrenceCLASS="REFENTRYTITLE"