2 - Copyright (C) 2000, 2001 Internet Software Consortium.
4 - Permission to use, copy, modify, and distribute this software for any
5 - purpose with or without fee is hereby granted, provided that the above
6 - copyright notice and this permission notice appear in all copies.
8 - THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
9 - DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
10 - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
11 - INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
12 - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
13 - FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
14 - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
15 - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 CONTENT=
"Modular DocBook HTML Stylesheet Version 1.61
44 >lwres_gabnrequest_render, lwres_gabnresponse_render, lwres_gabnrequest_parse, lwres_gabnresponse_parse, lwres_gabnresponse_free, lwres_gabnrequest_free
--
lightweight resolver getaddrbyname message handling
</DIV
46 CLASS=
"REFSYNOPSISDIV"
60 CLASS=
"FUNCSYNOPSISINFO"
61 >#include
<lwres/lwres.h
></PRE
67 lwres_gabnrequest_render
</CODE
68 >(lwres_context_t *ctx, lwres_gabnrequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);
</CODE
75 lwres_gabnresponse_render
</CODE
76 >(lwres_context_t *ctx, lwres_gabnresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);
</CODE
83 lwres_gabnrequest_parse
</CODE
84 >(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gabnrequest_t **structp);
</CODE
91 lwres_gabnresponse_parse
</CODE
92 >(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp);
</CODE
99 lwres_gabnresponse_free
</CODE
100 >(lwres_context_t *ctx, lwres_gabnresponse_t **structp);
</CODE
107 lwres_gabnrequest_free
</CODE
108 >(lwres_context_t *ctx, lwres_gabnrequest_t **structp);
</CODE
122 >These are low-level routines for creating and parsing
123 lightweight resolver name-to-address lookup request and
124 response messages.
</P
126 >There are four main functions for the getaddrbyname opcode.
127 One render function converts a getaddrbyname request structure
—
130 >lwres_gabnrequest_t
</SPAN
132 to the lighweight resolver's canonical format.
133 It is complemented by a parse function that converts a packet in this
134 canonical format to a getaddrbyname request structure.
135 Another render function converts the getaddrbyname response structure
—
138 >lwres_gabnresponse_t
</SPAN
140 to the canonical format.
141 This is complemented by a parse function which converts a packet in
142 canonical format to a getaddrbyname response structure.
</P
144 >These structures are defined in
147 ><lwres/lwres.h
></TT
149 They are shown below.
151 CLASS=
"PROGRAMLISTING"
152 >#define LWRES_OPCODE_GETADDRSBYNAME
0x00010001U
154 typedef struct lwres_addr lwres_addr_t;
155 typedef LWRES_LIST(lwres_addr_t) lwres_addrlist_t;
158 lwres_uint32_t flags;
159 lwres_uint32_t addrtypes;
160 lwres_uint16_t namelen;
162 } lwres_gabnrequest_t;
165 lwres_uint32_t flags;
166 lwres_uint16_t naliases;
167 lwres_uint16_t naddrs;
170 lwres_uint16_t realnamelen;
171 lwres_uint16_t *aliaslen;
172 lwres_addrlist_t addrs;
175 } lwres_gabnresponse_t;
</PRE
180 >lwres_gabnrequest_render()
</TT
182 uses resolver context
189 to convert getaddrbyname request structure
197 The packet header structure
204 is initialised and transferred to
220 are then appended to the buffer in canonical format.
223 >lwres_gabnresponse_render()
</TT
225 performs the same task, except it converts a getaddrbyname response structure
228 >lwres_gabnresponse_t
</SPAN
230 to the lightweight resolver's canonical format.
</P
234 >lwres_gabnrequest_parse()
</TT
243 to convert the contents of packet
253 >lwres_gabnrequest_t
</SPAN
263 provides space to be used for storing this structure.
264 When the function succeeds, the resulting
267 >lwres_gabnrequest_t
</SPAN
269 is made available through
279 >lwres_gabnresponse_parse()
</TT
281 offers the same semantics as
284 >lwres_gabnrequest_parse()
</TT
289 >lwres_gabnresponse_t
</SPAN
295 >lwres_gabnresponse_free()
</TT
300 >lwres_gabnrequest_free()
</TT
302 release the memory in resolver context
309 that was allocated to the
312 >lwres_gabnresponse_t
</SPAN
317 >lwres_gabnrequest_t
</SPAN
319 structures referenced via
327 Any memory associated with ancillary buffers and strings for those
328 structures is also discarded.
</P
338 >The getaddrbyname opcode functions
341 >lwres_gabnrequest_render()
</TT
345 >lwres_gabnresponse_render()
</TT
349 >lwres_gabnrequest_parse()
</TT
354 >lwres_gabnresponse_parse()
</TT
359 >LWRES_R_SUCCESS
</SPAN
365 >LWRES_R_NOMEMORY
</SPAN
367 if memory allocation fails.
370 >LWRES_R_UNEXPECTEDEND
</SPAN
372 is returned if the available space in the buffer
379 is too small to accommodate the packet header or the
382 >lwres_gabnrequest_t
</SPAN
387 >lwres_gabnresponse_t
</SPAN
392 >lwres_gabnrequest_parse()
</TT
397 >lwres_gabnresponse_parse()
</TT
402 >LWRES_R_UNEXPECTEDEND
</SPAN
404 if the buffer is not empty after decoding the received packet.
405 These functions will return
408 >LWRES_R_FAILURE
</SPAN
417 in the packet header structure
420 >lwres_lwpacket_t
</SPAN
422 indicate that the packet is not a response to an earlier query.
</P
435 CLASS=
"REFENTRYTITLE"