lwres_gnba.html revision 89da2a56413ba6294315bdde04f7547b9d71b062
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian Maeder - Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder - Copyright (C) 2001 Internet Software Consortium.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - Permission to use, copy, modify, and distribute this software for any
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder - purpose with or without fee is hereby granted, provided that the above
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - copyright notice and this permission notice appear in all copies.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
d8c71aacc9f1c8cd40a8ad8dcdad9be8854b849fChristian Maeder - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder - PERFORMANCE OF THIS SOFTWARE.
c90087f49069855bf684b699f9ca1e2d65eac20bChristian Maeder<!-- $Id: lwres_gnba.html,v 1.11 2005/04/03 03:31:37 marka Exp $ -->
01e383014b555bbcf639c0ca60c5810b3eff83c0Christian Maeder<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
ce8b15da31cd181b7e90593cbbca98f47eda29d6Till Mossakowski>lwres_gnba</TITLE
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederNAME="GENERATOR"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederCLASS="REFENTRY"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederBGCOLOR="#FFFFFF"
2e2094a642e3775b0d76b890556407941d3a53b6Christian MaederTEXT="#000000"
2e2094a642e3775b0d76b890556407941d3a53b6Christian MaederLINK="#0000FF"
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian MaederVLINK="#840084"
2e2094a642e3775b0d76b890556407941d3a53b6Christian MaederALINK="#0000FF"
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder>lwres_gnba</H1
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian MaederCLASS="REFNAMEDIV"
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian Maeder>lwres_gnbarequest_render, lwres_gnbaresponse_render, lwres_gnbarequest_parse, lwres_gnbaresponse_parse, lwres_gnbaresponse_free, lwres_gnbarequest_free -- lightweight resolver getnamebyaddress message handling</DIV
eee4b2ee739f163e09d6af6e45c025681e6c01a0Christian MaederCLASS="REFSYNOPSISDIV"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCLASS="FUNCSYNOPSIS"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCLASS="FUNCSYNOPSISINFO"
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian MaederCLASS="FUNCDEF"
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder>lwres_result_t
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederlwres_gnbarequest_render</CODE
a2d6702f18737cc5fff8e8631c08f221f8375c4bChristian Maeder>(lwres_context_t *ctx, lwres_gnbarequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
9e748851c150e1022fb952bab3315e869aaf0214Christian MaederCLASS="FUNCDEF"
abf2487c3aece95c371ea89ac64319370dcb6483Klaus Luettich>lwres_result_t
8cacad2a09782249243b80985f28e9387019fe40Christian Maederlwres_gnbaresponse_render</CODE
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>(lwres_context_t *ctx, lwres_gnbaresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
9e748851c150e1022fb952bab3315e869aaf0214Christian MaederCLASS="FUNCDEF"
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder>lwres_result_t
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maederlwres_gnbarequest_parse</CODE
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gnbarequest_t **structp);</CODE
9e748851c150e1022fb952bab3315e869aaf0214Christian MaederCLASS="FUNCDEF"
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder>lwres_result_t
c9acb8681bcc512245b4f0d1a9f2b189c60e10d4Christian Maederlwres_gnbaresponse_parse</CODE
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gnbaresponse_t **structp);</CODE
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCLASS="FUNCDEF"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederlwres_gnbaresponse_free</CODE
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>(lwres_context_t *ctx, lwres_gnbaresponse_t **structp);</CODE
c0c2380bced8159ff0297ece14eba948bd236471Christian MaederCLASS="FUNCDEF"
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maederlwres_gnbarequest_free</CODE
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>(lwres_context_t *ctx, lwres_gnbarequest_t **structp);</CODE
6ff7a91875597d6e4dfaa68c79187d01473e8341Christian MaederCLASS="REFSECT1"
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder>DESCRIPTION</H2
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder>These are low-level routines for creating and parsing
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maederlightweight resolver address-to-name lookup request and
88318aafc287e92931dceffbb943d58a9310001dChristian Maederresponse messages.</P
a3c6d8e0670bf2aa71bc8e2a3b1f45d56dd65e4cChristian Maeder>There are four main functions for the getnamebyaddr opcode.
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederOne render function converts a getnamebyaddr request structure —
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder>lwres_gnbarequest_t</SPAN
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maederto the lightweight resolver's canonical format.
ca074a78b8dcccbb8c419586787882f98d0c6163Christian MaederIt is complemented by a parse function that converts a packet in this
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maedercanonical format to a getnamebyaddr request structure.
4017ebc0f692820736d796af3110c3b3018c108aChristian MaederAnother render function converts the getnamebyaddr response structure —
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>lwres_gnbaresponse_t</SPAN
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederto the canonical format.
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian MaederThis is complemented by a parse function which converts a packet in
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maedercanonical format to a getnamebyaddr response structure.</P
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>These structures are defined in
ca074a78b8dcccbb8c419586787882f98d0c6163Christian MaederCLASS="FILENAME"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederThey are shown below.
ca074a78b8dcccbb8c419586787882f98d0c6163Christian MaederCLASS="PROGRAMLISTING"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder>#define LWRES_OPCODE_GETNAMEBYADDR 0x00010002U
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maedertypedef struct {
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder lwres_uint32_t flags;
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder lwres_addr_t addr;
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder} lwres_gnbarequest_t;
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maedertypedef struct {
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder lwres_uint32_t flags;
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich lwres_uint16_t naliases;
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich char *realname;
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich char **aliases;
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder lwres_uint16_t realnamelen;
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder lwres_uint16_t *aliaslen;
c9acb8681bcc512245b4f0d1a9f2b189c60e10d4Christian Maeder size_t baselen;
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder} lwres_gnbaresponse_t;</PRE
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederCLASS="FUNCTION"
d272062059eea4d7479e1c6e8517469f02f61287Christian Maeder>lwres_gnbarequest_render()</CODE
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederuses resolver context
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCLASS="VARNAME"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederto convert getnamebyaddr request structure
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian MaederCLASS="VARNAME"
9df11f85fd7f8c4745d64464876e84ec4e263692Christian Maederto canonical format.
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix ReckersThe packet header structure
fb328c4f646dd3dd78a9391c5cb58450a3dd0aa9Klaus LuettichCLASS="VARNAME"
0799b5dc3f06d2640e66e9ab54b8b217348fd719Christian Maederis initialised and transferred to
010c56c4cf12dd7977ca36efe85219b91e265ee3Christian MaederCLASS="VARNAME"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederThe contents of
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian MaederCLASS="VARNAME"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederare then appended to the buffer in canonical format.
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian MaederCLASS="FUNCTION"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder>lwres_gnbaresponse_render()</CODE
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederperforms the same task, except it converts a getnamebyaddr response structure
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder>lwres_gnbaresponse_t</SPAN
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederto the lightweight resolver's canonical format.</P
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian MaederCLASS="FUNCTION"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder>lwres_gnbarequest_parse()</CODE
31db599cbcd9285c3734d16279bc7d88cbc20dc6Christian MaederCLASS="VARNAME"
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maederto convert the contents of packet
b565cd55a13dbccc4e66c344316da525c961e4caTill MossakowskiCLASS="VARNAME"
e96a0bf4040fd789339958c01f145c5057d26db6René Wagner>lwres_gnbarequest_t</SPAN
61fa0ac06ede811c7aad54ec4c4202346727368eChristian MaederCLASS="VARNAME"
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maederprovides space to be used for storing this structure.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederWhen the function succeeds, the resulting
18a4d5cb6828f080db9c5f9551785c5151027271Christian Maeder>lwres_gnbarequest_t</SPAN
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederis made available through
43b4c41fbb07705c9df321221ab9cb9832460407Christian MaederCLASS="VARNAME"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>*structp</CODE
c9acb8681bcc512245b4f0d1a9f2b189c60e10d4Christian MaederCLASS="FUNCTION"
38352346eb1a67ba0f4eab8ad6f718528cf0cde0Christian Maeder>lwres_gnbaresponse_parse()</CODE
f26489cf50364d60a14c9bf33ca2c91855ad438aChristian Maederoffers the same semantics as
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian MaederCLASS="FUNCTION"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder>lwres_gnbarequest_parse()</CODE
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederexcept it yields a
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>lwres_gnbaresponse_t</SPAN
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCLASS="FUNCTION"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>lwres_gnbaresponse_free()</CODE
1f8a7f8343f7df719768d2b1d7e3077ee291a1caChristian MaederCLASS="FUNCTION"
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder>lwres_gnbarequest_free()</CODE
dbe752ee940baae7f9f231f29c62284bb0f90a25Christian Maederrelease the memory in resolver context
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCLASS="VARNAME"
53818ced114da21321063fff307aa41c1ab31dd3Achim Mahnkethat was allocated to the
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder>lwres_gnbaresponse_t</SPAN
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder>lwres_gnbarequest_t</SPAN
7c99e334446bb97120e30e967baeeddfdd1278deKlaus Luettichstructures referenced via
4017ebc0f692820736d796af3110c3b3018c108aChristian MaederCLASS="VARNAME"
d8c71aacc9f1c8cd40a8ad8dcdad9be8854b849fChristian Maeder>structp</CODE
b49276c9f50038e0bd499ad49f7bd6444566a834Christian MaederAny memory associated with ancillary buffers and strings for those
9e748851c150e1022fb952bab3315e869aaf0214Christian Maederstructures is also discarded.</P
83394c6b6e6de128e71b67c9251ed7a84485d082Christian MaederCLASS="REFSECT1"
ed9207cf24e96b0d6f59985822054ae28cb69b2eChristian Maeder>RETURN VALUES</H2
b49276c9f50038e0bd499ad49f7bd6444566a834Christian Maeder>The getnamebyaddr opcode functions
b49276c9f50038e0bd499ad49f7bd6444566a834Christian MaederCLASS="FUNCTION"
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder>lwres_gnbarequest_render()</CODE
c7ec85d1103173e089aa5048fd7afb2f9b505124Klaus LuettichCLASS="FUNCTION"
c7ec85d1103173e089aa5048fd7afb2f9b505124Klaus Luettich>lwres_gnbaresponse_render()</CODE
b905126bab9454b89041f92b3c50bb9efc85e427Klaus LuettichCLASS="FUNCTION"
c4ef79587a902327f36277c45a8d91d1e67bd6d5Klaus Luettich>lwres_gnbarequest_parse()</CODE
b905126bab9454b89041f92b3c50bb9efc85e427Klaus LuettichCLASS="FUNCTION"
08e5741dd8b6bf9b7419e89298e384e18bc57f64Christian Maeder>lwres_gnbaresponse_parse()</CODE
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederCLASS="ERRORCODE"
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder>LWRES_R_SUCCESS</SPAN
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederCLASS="ERRORCODE"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder>LWRES_R_NOMEMORY</SPAN
c4ef79587a902327f36277c45a8d91d1e67bd6d5Klaus Luettichif memory allocation fails.
c4ef79587a902327f36277c45a8d91d1e67bd6d5Klaus LuettichCLASS="ERRORCODE"
c4ef79587a902327f36277c45a8d91d1e67bd6d5Klaus Luettich>LWRES_R_UNEXPECTEDEND</SPAN
c4ef79587a902327f36277c45a8d91d1e67bd6d5Klaus Luettichis returned if the available space in the buffer
c4ef79587a902327f36277c45a8d91d1e67bd6d5Klaus LuettichCLASS="VARNAME"
c4ef79587a902327f36277c45a8d91d1e67bd6d5Klaus Luettichis too small to accommodate the packet header or the
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich>lwres_gnbarequest_t</SPAN
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder>lwres_gnbaresponse_t</SPAN
1f8a7f8343f7df719768d2b1d7e3077ee291a1caChristian MaederCLASS="FUNCTION"
1f8a7f8343f7df719768d2b1d7e3077ee291a1caChristian Maeder>lwres_gnbarequest_parse()</CODE
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian MaederCLASS="FUNCTION"
96646aed2ae087b942ae23f15bbe729a8f7c43d3Christian Maeder>lwres_gnbaresponse_parse()</CODE
ef67402074be14deb95e4ff564737d5593144130Klaus LuettichCLASS="ERRORCODE"
dbe752ee940baae7f9f231f29c62284bb0f90a25Christian Maeder>LWRES_R_UNEXPECTEDEND</SPAN
462d9dc583444aab82732e14a75610684d2dc7e9Christian Maederif the buffer is not empty after decoding the received packet.
c9e197862d9d8ef2585270dd08f5194b3aed4a9dKlaus LuettichThese functions will return
ef67402074be14deb95e4ff564737d5593144130Klaus LuettichCLASS="ERRORCODE"
1323eba62fc519b068f5aaec4f9d2be05ffabea9Klaus Luettich>LWRES_R_FAILURE</SPAN
1323eba62fc519b068f5aaec4f9d2be05ffabea9Klaus LuettichCLASS="STRUCTFIELD"
1f8a7f8343f7df719768d2b1d7e3077ee291a1caChristian Maeder>pktflags</CODE
462d9dc583444aab82732e14a75610684d2dc7e9Christian Maederin the packet header structure
462d9dc583444aab82732e14a75610684d2dc7e9Christian Maeder>lwres_lwpacket_t</SPAN
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maederindicate that the packet is not a response to an earlier query.</P
1f8a7f8343f7df719768d2b1d7e3077ee291a1caChristian MaederCLASS="REFSECT1"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederCLASS="CITEREFENTRY"
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederCLASS="REFENTRYTITLE"
2e2094a642e3775b0d76b890556407941d3a53b6Christian Maeder>lwres_packet</SPAN