lwres_gabn.html revision 841179549b6433e782c164a562eb3422f603533d
f743002678eb67b99bbc29fee116b65d9530fec0wrowe<!--
80833bb9a1bf25dcf19e814438a4b311d2e1f4cffuankg - Copyright (C) 2000, 2001 Internet Software Consortium.
92108a6c4fd7ca6e9acc94d2485920436763e491sf -
a511a29faf2ff7ead3b67680154a624effb31aafminfrin - Permission to use, copy, modify, and distribute this software for any
a511a29faf2ff7ead3b67680154a624effb31aafminfrin - purpose with or without fee is hereby granted, provided that the above
a511a29faf2ff7ead3b67680154a624effb31aafminfrin - copyright notice and this permission notice appear in all copies.
a511a29faf2ff7ead3b67680154a624effb31aafminfrin -
a511a29faf2ff7ead3b67680154a624effb31aafminfrin - THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
a7584fbbf39ae6a78586ed038d80c31b14ce5461minfrin - DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
a7584fbbf39ae6a78586ed038d80c31b14ce5461minfrin - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
a7584fbbf39ae6a78586ed038d80c31b14ce5461minfrin - INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
a7584fbbf39ae6a78586ed038d80c31b14ce5461minfrin - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
9ea14ade0d235bec11e6c221b888a6630a0be849covener - FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
9ea14ade0d235bec11e6c221b888a6630a0be849covener - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
9ea14ade0d235bec11e6c221b888a6630a0be849covener - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4860eae0821bbdf3e0da78be7b4057ebed5d86e4minfrin-->
4860eae0821bbdf3e0da78be7b4057ebed5d86e4minfrin
4860eae0821bbdf3e0da78be7b4057ebed5d86e4minfrin<!-- $Id: lwres_gabn.html,v 1.5 2001/06/08 19:32:22 gson Exp $ -->
5b6a4b0e8d6d52394b68b51e0fa439d0eee16e37minfrin
5b6a4b0e8d6d52394b68b51e0fa439d0eee16e37minfrin<HTML
5b6a4b0e8d6d52394b68b51e0fa439d0eee16e37minfrin><HEAD
5b6a4b0e8d6d52394b68b51e0fa439d0eee16e37minfrin><TITLE
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjim>lwres_gabn</TITLE
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjim><META
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjimNAME="GENERATOR"
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrinCONTENT="Modular DocBook HTML Stylesheet Version 1.61
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin"></HEAD
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin><BODY
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrinCLASS="REFENTRY"
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrinBGCOLOR="#FFFFFF"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinTEXT="#000000"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinLINK="#0000FF"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinVLINK="#840084"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinALINK="#0000FF"
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin><H1
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin><A
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrinNAME="AEN1"
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin>lwres_gabn</A
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin></H1
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin><DIV
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrinCLASS="REFNAMEDIV"
decb536ebd4b7b94c7450c2e1daa491943135abdminfrin><A
decb536ebd4b7b94c7450c2e1daa491943135abdminfrinNAME="AEN8"
decb536ebd4b7b94c7450c2e1daa491943135abdminfrin></A
decb536ebd4b7b94c7450c2e1daa491943135abdminfrin><H2
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin>Name</H2
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin>lwres_gabnrequest_render, lwres_gabnresponse_render, lwres_gabnrequest_parse, lwres_gabnresponse_parse, lwres_gabnresponse_free, lwres_gabnrequest_free&nbsp;--&nbsp;lightweight resolver getaddrbyname message handling</DIV
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin><DIV
2d2c5cedd0559093c6e88bd92702e369ef949336minfrinCLASS="REFSYNOPSISDIV"
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin><A
2b82678319a66fd9caad8827ca9b38d2412a5abdminfrinNAME="AEN16"
2b82678319a66fd9caad8827ca9b38d2412a5abdminfrin></A
c0da461d68518e8f89f4070a709ba1e56381247cminfrin><H2
c0da461d68518e8f89f4070a709ba1e56381247cminfrin>Synopsis</H2
c0da461d68518e8f89f4070a709ba1e56381247cminfrin><DIV
797fb211307298a8a6984c0edc0d8972b35eeac1minfrinCLASS="FUNCSYNOPSIS"
797fb211307298a8a6984c0edc0d8972b35eeac1minfrin><A
797fb211307298a8a6984c0edc0d8972b35eeac1minfrinNAME="AEN17"
797fb211307298a8a6984c0edc0d8972b35eeac1minfrin></A
f27c90ecdefe634bd5f9c529d8658d3a3b441303minfrin><P
f27c90ecdefe634bd5f9c529d8658d3a3b441303minfrin></P
f27c90ecdefe634bd5f9c529d8658d3a3b441303minfrin><PRE
80cabec6752622e0db5421af61502bfda95715eaminfrinCLASS="FUNCSYNOPSISINFO"
80cabec6752622e0db5421af61502bfda95715eaminfrin>#include &lt;lwres/lwres.h&gt;</PRE
80cabec6752622e0db5421af61502bfda95715eaminfrin><P
a2e1bbb77dd09c6a60f2dc18f831000e49add31eminfrin><CODE
a2e1bbb77dd09c6a60f2dc18f831000e49add31eminfrin><CODE
a2e1bbb77dd09c6a60f2dc18f831000e49add31eminfrinCLASS="FUNCDEF"
a2e1bbb77dd09c6a60f2dc18f831000e49add31eminfrin>lwres_result_t
a2e1bbb77dd09c6a60f2dc18f831000e49add31eminfrinlwres_gabnrequest_render</CODE
a2e1bbb77dd09c6a60f2dc18f831000e49add31eminfrin>(lwres_context_t *ctx, lwres_gabnrequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin></P
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin><P
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin><CODE
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin><CODE
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrinCLASS="FUNCDEF"
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin>lwres_result_t
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrinlwres_gabnresponse_render</CODE
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin>(lwres_context_t *ctx, lwres_gabnresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
40d570cf1420f497bcac59045d4ce477f0b5d891minfrin></P
40d570cf1420f497bcac59045d4ce477f0b5d891minfrin><P
40d570cf1420f497bcac59045d4ce477f0b5d891minfrin><CODE
edab53cc0be707fa71968a95c696b19f0e6c4736minfrin><CODE
edab53cc0be707fa71968a95c696b19f0e6c4736minfrinCLASS="FUNCDEF"
edab53cc0be707fa71968a95c696b19f0e6c4736minfrin>lwres_result_t
806e9ba570ef48df4bfd8364e2f4d57381388a11minfrinlwres_gabnrequest_parse</CODE
806e9ba570ef48df4bfd8364e2f4d57381388a11minfrin>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gabnrequest_t **structp);</CODE
806e9ba570ef48df4bfd8364e2f4d57381388a11minfrin></P
806e9ba570ef48df4bfd8364e2f4d57381388a11minfrin><P
806e9ba570ef48df4bfd8364e2f4d57381388a11minfrin><CODE
0754dde4b645ccd88fdb6c2961c0bdd7b213bdbaminfrin><CODE
0754dde4b645ccd88fdb6c2961c0bdd7b213bdbaminfrinCLASS="FUNCDEF"
0754dde4b645ccd88fdb6c2961c0bdd7b213bdbaminfrin>lwres_result_t
a4273e3e513ce8f5e1311c320cbd334cc382950eminfrinlwres_gabnresponse_parse</CODE
a4273e3e513ce8f5e1311c320cbd334cc382950eminfrin>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp);</CODE
a4273e3e513ce8f5e1311c320cbd334cc382950eminfrin></P
d3e0a61e1bcc497f2efd7af41a5a9d77090ecc1cminfrin><P
a4273e3e513ce8f5e1311c320cbd334cc382950eminfrin><CODE
d3e0a61e1bcc497f2efd7af41a5a9d77090ecc1cminfrin><CODE
d3e0a61e1bcc497f2efd7af41a5a9d77090ecc1cminfrinCLASS="FUNCDEF"
1aac1c71105133d669960501bdf2274e63561054minfrin>void
1aac1c71105133d669960501bdf2274e63561054minfrinlwres_gabnresponse_free</CODE
1aac1c71105133d669960501bdf2274e63561054minfrin>(lwres_context_t *ctx, lwres_gabnresponse_t **structp);</CODE
2c487ac43b583db869e743772a7a10b278aa2bcfminfrin></P
2c487ac43b583db869e743772a7a10b278aa2bcfminfrin><P
2c487ac43b583db869e743772a7a10b278aa2bcfminfrin><CODE
2c487ac43b583db869e743772a7a10b278aa2bcfminfrin><CODE
2c487ac43b583db869e743772a7a10b278aa2bcfminfrinCLASS="FUNCDEF"
dbf5f584c62fe6030d81121fdddeb7588b78b867sf>void
dbf5f584c62fe6030d81121fdddeb7588b78b867sflwres_gabnrequest_free</CODE
15320dc646e41d3eb38736978500349c4d66dc0dsf>(lwres_context_t *ctx, lwres_gabnrequest_t **structp);</CODE
15320dc646e41d3eb38736978500349c4d66dc0dsf></P
691db92094897494d6c31326108da20088bc175etrawick><P
691db92094897494d6c31326108da20088bc175etrawick></P
691db92094897494d6c31326108da20088bc175etrawick></DIV
92108a6c4fd7ca6e9acc94d2485920436763e491sf></DIV
92108a6c4fd7ca6e9acc94d2485920436763e491sf><DIV
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovenerCLASS="REFSECT1"
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener><A
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovenerNAME="AEN57"
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf></A
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes><H2
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes>DESCRIPTION</H2
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq><P
26c5829347f6a355c00f1ba0301d575056b69536niq>These are low-level routines for creating and parsing
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqlightweight resolver name-to-address lookup request and
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqresponse messages.</P
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq><P
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq>There are four main functions for the getaddrbyname opcode.
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqOne render function converts a getaddrbyname request structure &mdash;
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq<SPAN
413ee814748f37be168ff12407fa6dba0ceeabe6trawickCLASS="TYPE"
c12917da693bae4028a1d5a5e8224bceed8c739dsf>lwres_gabnrequest_t</SPAN
c12917da693bae4028a1d5a5e8224bceed8c739dsf> &mdash;
eeb7898b9c087040d44550f8a6b1a257783c9f0ahumbedoohto the lighweight resolver's canonical format.
eeb7898b9c087040d44550f8a6b1a257783c9f0ahumbedoohIt is complemented by a parse function that converts a packet in this
7705103518c61f7cdcd4041fe871cb45114f31a5rpluemcanonical format to a getaddrbyname request structure.
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsfAnother render function converts the getaddrbyname response structure &mdash;
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf<SPAN
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsfCLASS="TYPE"
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf>lwres_gabnresponse_t</SPAN
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf> &mdash;
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sfto the canonical format.
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sfThis is complemented by a parse function which converts a packet in
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sfcanonical format to a getaddrbyname response structure.</P
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf><P
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf>These structures are defined in
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf<TT
9811aed12bbc71783d2e544ccb5fecd193843eadsfCLASS="FILENAME"
9811aed12bbc71783d2e544ccb5fecd193843eadsf>&lt;lwres/lwres.h&gt;</TT
9811aed12bbc71783d2e544ccb5fecd193843eadsf>.
d58a822aff1dfda25384d3d009f88f1883c95436kbrandThey are shown below.
d58a822aff1dfda25384d3d009f88f1883c95436kbrand<PRE
d58a822aff1dfda25384d3d009f88f1883c95436kbrandCLASS="PROGRAMLISTING"
e02ff627c1e63137247e20493f6ef44b3bb1a095sf>#define LWRES_OPCODE_GETADDRSBYNAME 0x00010001U
e02ff627c1e63137247e20493f6ef44b3bb1a095sf
e02ff627c1e63137247e20493f6ef44b3bb1a095sftypedef struct lwres_addr lwres_addr_t;
1366443dc565c33e7b449ae428bbfc4c86f33935drhtypedef LWRES_LIST(lwres_addr_t) lwres_addrlist_t;
1366443dc565c33e7b449ae428bbfc4c86f33935drh
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjungtypedef struct {
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung lwres_uint32_t flags;
bd3f5647b96d378d9c75c954e3f13582af32c643sf lwres_uint32_t addrtypes;
bd3f5647b96d378d9c75c954e3f13582af32c643sf lwres_uint16_t namelen;
bd3f5647b96d378d9c75c954e3f13582af32c643sf char *name;
bd3f5647b96d378d9c75c954e3f13582af32c643sf} lwres_gabnrequest_t;
bd3f5647b96d378d9c75c954e3f13582af32c643sf
2a7beea91d46beb41f043a84eaad060047ee04aafabientypedef struct {
2a7beea91d46beb41f043a84eaad060047ee04aafabien lwres_uint32_t flags;
2a7beea91d46beb41f043a84eaad060047ee04aafabien lwres_uint16_t naliases;
2a7beea91d46beb41f043a84eaad060047ee04aafabien lwres_uint16_t naddrs;
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf char *realname;
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf char **aliases;
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf lwres_uint16_t realnamelen;
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf lwres_uint16_t *aliaslen;
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf lwres_addrlist_t addrs;
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf void *base;
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf size_t baselen;
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf} lwres_gabnresponse_t;</PRE
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf></P
132ee6ac1c26d6e8953836316ba50734eefab47bsf><P
132ee6ac1c26d6e8953836316ba50734eefab47bsf><TT
132ee6ac1c26d6e8953836316ba50734eefab47bsfCLASS="FUNCTION"
fc1459657a1fde206a847f9028930725d715f8b4trawick>lwres_gabnrequest_render()</TT
fc1459657a1fde206a847f9028930725d715f8b4trawick>
fc1459657a1fde206a847f9028930725d715f8b4trawickuses resolver context
85eacfc96a04547ef25aabbc06440039715084c2jorton<TT
85eacfc96a04547ef25aabbc06440039715084c2jortonCLASS="PARAMETER"
85eacfc96a04547ef25aabbc06440039715084c2jorton><I
68ba377fc3b124baa759662077c48077ebadb186minfrin>ctx</I
68ba377fc3b124baa759662077c48077ebadb186minfrin></TT
68ba377fc3b124baa759662077c48077ebadb186minfrin>
68ba377fc3b124baa759662077c48077ebadb186minfrinto convert getaddrbyname request structure
d776b0a2d2889ce1d13494873368f34327a2e1bbtrawick<TT
d776b0a2d2889ce1d13494873368f34327a2e1bbtrawickCLASS="PARAMETER"
f4ca9f6f002fece336168a16355434ca966f96a9trawick><I
78f94f1d06c4e6828ce04d618221e0fcecb57849humbedooh>req</I
78f94f1d06c4e6828ce04d618221e0fcecb57849humbedooh></TT
78f94f1d06c4e6828ce04d618221e0fcecb57849humbedooh>
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickto canonical format.
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickThe packet header structure
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick<TT
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickCLASS="PARAMETER"
70caa242e6b90e0d6f0fabb56b8c5c2fb51717b3jorton><I
985a4368b93c3e9171a57897ad9454c8dbf4cdf6jorton>pkt</I
70caa242e6b90e0d6f0fabb56b8c5c2fb51717b3jorton></TT
70caa242e6b90e0d6f0fabb56b8c5c2fb51717b3jorton>
109e2a09790de3fb315d36d6232a14ab66c8eb0ahumbedoohis initialised and transferred to
109e2a09790de3fb315d36d6232a14ab66c8eb0ahumbedoohbuffer
109e2a09790de3fb315d36d6232a14ab66c8eb0ahumbedooh<TT
74e7a30182af5e68f14ccb8d57918b22b982db8bhumbedoohCLASS="PARAMETER"
74e7a30182af5e68f14ccb8d57918b22b982db8bhumbedooh><I
74e7a30182af5e68f14ccb8d57918b22b982db8bhumbedooh>b</I
10961a2f60207cb873d889bb28b1f0ef707a4311humbedooh></TT
10961a2f60207cb873d889bb28b1f0ef707a4311humbedooh>.
10961a2f60207cb873d889bb28b1f0ef707a4311humbedooh
0448378b899e8df0c060360f17c0af692adf17bchumbedoohThe contents of
0448378b899e8df0c060360f17c0af692adf17bchumbedooh<TT
0448378b899e8df0c060360f17c0af692adf17bchumbedoohCLASS="PARAMETER"
60a765cccbd3f3b5997b65b0034220c79f78369etrawick><I
60a765cccbd3f3b5997b65b0034220c79f78369etrawick>*req</I
60a765cccbd3f3b5997b65b0034220c79f78369etrawick></TT
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh>
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedoohare then appended to the buffer in canonical format.
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedooh<TT
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedoohCLASS="FUNCTION"
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedooh>lwres_gabnresponse_render()</TT
91814c869ca39ce45dfe147307d2a831cac6ecbehumbedooh>
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedoohperforms the same task, except it converts a getaddrbyname response structure
79c5787b92ac5f0e1cc82393816c77a006399316trawick<SPAN
79c5787b92ac5f0e1cc82393816c77a006399316trawickCLASS="TYPE"
79c5787b92ac5f0e1cc82393816c77a006399316trawick>lwres_gabnresponse_t</SPAN
79c5787b92ac5f0e1cc82393816c77a006399316trawick>
c967bf3bc89e8aa60dbd30d9da388e448ddc1cc4trawickto the lightweight resolver's canonical format.</P
79c5787b92ac5f0e1cc82393816c77a006399316trawick><P
79c5787b92ac5f0e1cc82393816c77a006399316trawick><TT
79c5787b92ac5f0e1cc82393816c77a006399316trawickCLASS="FUNCTION"
79c5787b92ac5f0e1cc82393816c77a006399316trawick>lwres_gabnrequest_parse()</TT
79c5787b92ac5f0e1cc82393816c77a006399316trawick>
7b395e4e878c28a4784919cfd2e704ddd14a3390jortonuses context
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton<TT
7b395e4e878c28a4784919cfd2e704ddd14a3390jortonCLASS="PARAMETER"
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton><I
536e48c08d674acac5d44929318f2ad928edc361jorton>ctx</I
536e48c08d674acac5d44929318f2ad928edc361jorton></TT
e81785da447b469da66f218b3f0244aab507958djorton>
e81785da447b469da66f218b3f0244aab507958djortonto convert the contents of packet
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton<TT
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jortonCLASS="PARAMETER"
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton><I
53e9b27aba029b18be814df40bcf6f0428771d1efuankg>pkt</I
53e9b27aba029b18be814df40bcf6f0428771d1efuankg></TT
53e9b27aba029b18be814df40bcf6f0428771d1efuankg>
53e9b27aba029b18be814df40bcf6f0428771d1efuankgto a
53e9b27aba029b18be814df40bcf6f0428771d1efuankg<SPAN
6bb524f1895f30265a1431afc460977d391cb36bsfCLASS="TYPE"
6bb524f1895f30265a1431afc460977d391cb36bsf>lwres_gabnrequest_t</SPAN
ca61ccd0c306c2c72df153688ba1b49f3eceed80sf>
6bb524f1895f30265a1431afc460977d391cb36bsfstructure.
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrinBuffer
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin<TT
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrinCLASS="PARAMETER"
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin><I
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin>b</I
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin></TT
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin>
23f1535d6a60817d2846bac0aea230ea475d7dccminfrinprovides space to be used for storing this structure.
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungWhen the function succeeds, the resulting
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung<SPAN
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungCLASS="TYPE"
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung>lwres_gabnrequest_t</SPAN
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung>
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungis made available through
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung<TT
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungCLASS="PARAMETER"
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick><I
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick>*structp</I
0827cb14e550f6f65018431c22c2c913631c8f25kbrand></TT
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick>.
ae600ca541efc686b34f8b1f21bd3d0741d37674covener
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick<TT
cfa64348224b66dd1c9979b809406c4d15b1c137fieldingCLASS="FUNCTION"
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim>lwres_gabnresponse_parse()</TT
cfa64348224b66dd1c9979b809406c4d15b1c137fielding>
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajimoffers the same semantics as
cfa64348224b66dd1c9979b809406c4d15b1c137fielding<TT
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajimCLASS="FUNCTION"
cfa64348224b66dd1c9979b809406c4d15b1c137fielding>lwres_gabnrequest_parse()</TT
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim>
cfa64348224b66dd1c9979b809406c4d15b1c137fieldingexcept it yields a
<SPAN
CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
structure.</P
><P
><TT
CLASS="FUNCTION"
>lwres_gabnresponse_free()</TT
>
and
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_free()</TT
>
release the memory in resolver context
<TT
CLASS="PARAMETER"
><I
>ctx</I
></TT
>
that was allocated to the
<SPAN
CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
or
<SPAN
CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
structures referenced via
<TT
CLASS="PARAMETER"
><I
>structp</I
></TT
>.
Any memory associated with ancillary buffers and strings for those
structures is also discarded.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN93"
></A
><H2
>RETURN VALUES</H2
><P
>The getaddrbyname opcode functions
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_render()</TT
>,
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_render()</TT
>
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>
and
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>
all return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_SUCCESS</SPAN
>
on success.
They return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_NOMEMORY</SPAN
>
if memory allocation fails.
<SPAN
CLASS="ERRORCODE"
>LWRES_R_UNEXPECTEDEND</SPAN
>
is returned if the available space in the buffer
<TT
CLASS="PARAMETER"
><I
>b</I
></TT
>
is too small to accommodate the packet header or the
<SPAN
CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
and
<SPAN
CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
structures.
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>
and
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>
will return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_UNEXPECTEDEND</SPAN
>
if the buffer is not empty after decoding the received packet.
These functions will return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_FAILURE</SPAN
>
if
<TT
CLASS="STRUCTFIELD"
><I
>pktflags</I
></TT
>
in the packet header structure
<SPAN
CLASS="TYPE"
>lwres_lwpacket_t</SPAN
>
indicate that the packet is not a response to an earlier query.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN112"
></A
><H2
>SEE ALSO</H2
><P
><SPAN
CLASS="CITEREFENTRY"
><SPAN
CLASS="REFENTRYTITLE"
>lwres_packet</SPAN
>(3)</SPAN
></P
></DIV
></BODY
></HTML
>