lwres_gabn.html revision 841179549b6433e782c164a562eb3422f603533d
80833bb9a1bf25dcf19e814438a4b311d2e1f4cffuankg - Copyright (C) 2000, 2001 Internet Software Consortium.
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 - 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<!-- $Id: lwres_gabn.html,v 1.5 2001/06/08 19:32:22 gson Exp $ -->
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjim>lwres_gabn</TITLE
2344a0c1817b88b6df61fc4ed0c6af66bb93ee6bjimNAME="GENERATOR"
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrinCONTENT="Modular DocBook HTML Stylesheet Version 1.61
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrinCLASS="REFENTRY"
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrinBGCOLOR="#FFFFFF"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinTEXT="#000000"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinLINK="#0000FF"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinVLINK="#840084"
bbb08feeeef547b0908b16df6cbbb65da656b86fminfrinALINK="#0000FF"
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrin>lwres_gabn</A
eee20257a5ee9228f4aecdf3d3ca68fd0683ff07minfrinCLASS="REFNAMEDIV"
2d2c5cedd0559093c6e88bd92702e369ef949336minfrin>lwres_gabnrequest_render, lwres_gabnresponse_render, lwres_gabnrequest_parse, lwres_gabnresponse_parse, lwres_gabnresponse_free, lwres_gabnrequest_free -- lightweight resolver getaddrbyname message handling</DIV
2d2c5cedd0559093c6e88bd92702e369ef949336minfrinCLASS="REFSYNOPSISDIV"
2b82678319a66fd9caad8827ca9b38d2412a5abdminfrinNAME="AEN16"
c0da461d68518e8f89f4070a709ba1e56381247cminfrin>Synopsis</H2
797fb211307298a8a6984c0edc0d8972b35eeac1minfrinCLASS="FUNCSYNOPSIS"
797fb211307298a8a6984c0edc0d8972b35eeac1minfrinNAME="AEN17"
80cabec6752622e0db5421af61502bfda95715eaminfrinCLASS="FUNCSYNOPSISINFO"
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
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
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
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
d3e0a61e1bcc497f2efd7af41a5a9d77090ecc1cminfrinCLASS="FUNCDEF"
1aac1c71105133d669960501bdf2274e63561054minfrinlwres_gabnresponse_free</CODE
1aac1c71105133d669960501bdf2274e63561054minfrin>(lwres_context_t *ctx, lwres_gabnresponse_t **structp);</CODE
2c487ac43b583db869e743772a7a10b278aa2bcfminfrinCLASS="FUNCDEF"
dbf5f584c62fe6030d81121fdddeb7588b78b867sflwres_gabnrequest_free</CODE
15320dc646e41d3eb38736978500349c4d66dc0dsf>(lwres_context_t *ctx, lwres_gabnrequest_t **structp);</CODE
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovenerCLASS="REFSECT1"
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovenerNAME="AEN57"
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes>DESCRIPTION</H2
26c5829347f6a355c00f1ba0301d575056b69536niq>These are low-level routines for creating and parsing
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqlightweight resolver name-to-address lookup request and
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqresponse messages.</P
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq>There are four main functions for the getaddrbyname opcode.
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqOne render function converts a getaddrbyname request structure —
413ee814748f37be168ff12407fa6dba0ceeabe6trawickCLASS="TYPE"
c12917da693bae4028a1d5a5e8224bceed8c739dsf>lwres_gabnrequest_t</SPAN
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 —
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsfCLASS="TYPE"
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf>lwres_gabnresponse_t</SPAN
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>These structures are defined in
9811aed12bbc71783d2e544ccb5fecd193843eadsfCLASS="FILENAME"
d58a822aff1dfda25384d3d009f88f1883c95436kbrandThey are shown below.
d58a822aff1dfda25384d3d009f88f1883c95436kbrandCLASS="PROGRAMLISTING"
e02ff627c1e63137247e20493f6ef44b3bb1a095sf>#define LWRES_OPCODE_GETADDRSBYNAME 0x00010001U
e02ff627c1e63137247e20493f6ef44b3bb1a095sftypedef struct lwres_addr lwres_addr_t;
1366443dc565c33e7b449ae428bbfc4c86f33935drhtypedef LWRES_LIST(lwres_addr_t) lwres_addrlist_t;
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjungtypedef struct {
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung lwres_uint32_t flags;
bd3f5647b96d378d9c75c954e3f13582af32c643sf lwres_uint32_t addrtypes;
bd3f5647b96d378d9c75c954e3f13582af32c643sf lwres_uint16_t namelen;
bd3f5647b96d378d9c75c954e3f13582af32c643sf char *name;
bd3f5647b96d378d9c75c954e3f13582af32c643sf} lwres_gabnrequest_t;
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
132ee6ac1c26d6e8953836316ba50734eefab47bsfCLASS="FUNCTION"
fc1459657a1fde206a847f9028930725d715f8b4trawick>lwres_gabnrequest_render()</TT
fc1459657a1fde206a847f9028930725d715f8b4trawickuses resolver context
85eacfc96a04547ef25aabbc06440039715084c2jortonCLASS="PARAMETER"
68ba377fc3b124baa759662077c48077ebadb186minfrinto convert getaddrbyname request structure
d776b0a2d2889ce1d13494873368f34327a2e1bbtrawickCLASS="PARAMETER"
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickto canonical format.
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickThe packet header structure
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickCLASS="PARAMETER"
109e2a09790de3fb315d36d6232a14ab66c8eb0ahumbedoohis initialised and transferred to
74e7a30182af5e68f14ccb8d57918b22b982db8bhumbedoohCLASS="PARAMETER"
0448378b899e8df0c060360f17c0af692adf17bchumbedoohThe contents of
0448378b899e8df0c060360f17c0af692adf17bchumbedoohCLASS="PARAMETER"
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedoohare then appended to the buffer in canonical format.
e7ca863b04ee2a7aea7738cadbf51ce5e6c5245dhumbedoohCLASS="FUNCTION"
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedooh>lwres_gabnresponse_render()</TT
91654e263480f0fdc2a03d782ff23f8dad07cf79humbedoohperforms the same task, except it converts a getaddrbyname response structure
79c5787b92ac5f0e1cc82393816c77a006399316trawickCLASS="TYPE"
79c5787b92ac5f0e1cc82393816c77a006399316trawick>lwres_gabnresponse_t</SPAN
c967bf3bc89e8aa60dbd30d9da388e448ddc1cc4trawickto the lightweight resolver's canonical format.</P
79c5787b92ac5f0e1cc82393816c77a006399316trawickCLASS="FUNCTION"
79c5787b92ac5f0e1cc82393816c77a006399316trawick>lwres_gabnrequest_parse()</TT
7b395e4e878c28a4784919cfd2e704ddd14a3390jortonuses context
7b395e4e878c28a4784919cfd2e704ddd14a3390jortonCLASS="PARAMETER"
e81785da447b469da66f218b3f0244aab507958djortonto convert the contents of packet
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jortonCLASS="PARAMETER"
6bb524f1895f30265a1431afc460977d391cb36bsfCLASS="TYPE"
6bb524f1895f30265a1431afc460977d391cb36bsf>lwres_gabnrequest_t</SPAN
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrinCLASS="PARAMETER"
23f1535d6a60817d2846bac0aea230ea475d7dccminfrinprovides space to be used for storing this structure.
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungWhen the function succeeds, the resulting
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungCLASS="TYPE"
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjung>lwres_gabnrequest_t</SPAN
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungis made available through
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungCLASS="PARAMETER"
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick>*structp</I
cfa64348224b66dd1c9979b809406c4d15b1c137fieldingCLASS="FUNCTION"
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim>lwres_gabnresponse_parse()</TT
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajimoffers the same semantics as
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajimCLASS="FUNCTION"
cfa64348224b66dd1c9979b809406c4d15b1c137fielding>lwres_gabnrequest_parse()</TT
cfa64348224b66dd1c9979b809406c4d15b1c137fieldingexcept it yields a