lwres_noop.html revision ac299c4f5ca236370b9df2a91b18b149b1d344a7
80833bb9a1bf25dcf19e814438a4b311d2e1f4cffuankg - Copyright (C) 2000, 2001 Internet Software Consortium.
cfd9415521847b2f9394fad04fb701cfb955f503rjung - Permission to use, copy, modify, and distribute this software for any
cfd9415521847b2f9394fad04fb701cfb955f503rjung - purpose with or without fee is hereby granted, provided that the above
cfd9415521847b2f9394fad04fb701cfb955f503rjung - copyright notice and this permission notice appear in all copies.
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe - THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe - DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe - INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
8491e0600f69b0405e156ea8a419653c065c645bcovener - FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
8491e0600f69b0405e156ea8a419653c065c645bcovener - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
8491e0600f69b0405e156ea8a419653c065c645bcovener - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
8741bcaa5df21e109bde21c01093d3991fcf1471jailletc>lwres_noop</TITLE
8741bcaa5df21e109bde21c01093d3991fcf1471jailletcNAME="GENERATOR"
8741bcaa5df21e109bde21c01093d3991fcf1471jailletcCONTENT="Modular DocBook HTML Stylesheet Version 1.61
2bf8c1f02b954a6b272f1708aabcc273fc318249covenerCLASS="REFENTRY"
7512a6fac1f0e24ba550706a6c8e0c874c23aa7bcovenerBGCOLOR="#FFFFFF"
63b9f1f5880391261705f696d7d65507bbe9ace3covenerTEXT="#000000"
63b9f1f5880391261705f696d7d65507bbe9ace3covenerLINK="#0000FF"
63b9f1f5880391261705f696d7d65507bbe9ace3covenerVLINK="#840084"
87a26948305eab2bab8a4fb3f2a21f6725055790covenerALINK="#0000FF"
4efd27d2bd53a819a194f8a942f8881c1927755eylavic>lwres_noop</A
983528026996668ea295be95aedb9c7a346af470ylavicCLASS="REFNAMEDIV"
1f0836d4b1a203c7b375daae691beb95f6036205ylavic>lwres_nooprequest_render, lwres_noopresponse_render, lwres_nooprequest_parse, lwres_noopresponse_parse, lwres_noopresponse_free, lwres_nooprequest_free -- lightweight resolver no-op message handling</DIV
1f0836d4b1a203c7b375daae691beb95f6036205ylavicCLASS="REFSYNOPSISDIV"
3b11e6ec1c5273d6a8968460db650e7ca99c49c0ylavicNAME="AEN16"
01402a0fbec8bd11f6c10d8ef9c9cceac68bb787ylavic>Synopsis</H2
49dacedb6c387b786b7911082ff35121a45f414bcovenerCLASS="FUNCSYNOPSIS"
49dacedb6c387b786b7911082ff35121a45f414bcovenerNAME="AEN17"
3c990331fc6702119e4f5b8ba9eae3021aea5265jimCLASS="FUNCSYNOPSISINFO"
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niqCLASS="FUNCDEF"
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq>lwres_result_t
da0442c0440caef34706e2c2f3af05cb65921cc0jailletclwres_nooprequest_render</CODE
983528026996668ea295be95aedb9c7a346af470ylavic>(lwres_context_t *ctx, lwres_nooprequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
06b8f183140c8e02e0974e938a05078b511d1603covenerCLASS="FUNCDEF"
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem>lwres_result_t
259878293a997ff49f5ddfc53d3739cbdc25444ecovenerlwres_noopresponse_render</CODE
259878293a997ff49f5ddfc53d3739cbdc25444ecovener>(lwres_context_t *ctx, lwres_noopresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrinCLASS="FUNCDEF"
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin>lwres_result_t
65967d05f839dbf27cf91d91fa79585eeae19660minfrinlwres_nooprequest_parse</CODE
65967d05f839dbf27cf91d91fa79585eeae19660minfrin>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_nooprequest_t **structp);</CODE
8152945ae46857b170cb227e79bb799f4fc7710dminfrinCLASS="FUNCDEF"
8152945ae46857b170cb227e79bb799f4fc7710dminfrin>lwres_result_t
75f5c2db254c0167a0e396254460de09b775d203trawicklwres_noopresponse_parse</CODE
75f5c2db254c0167a0e396254460de09b775d203trawick>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_noopresponse_t **structp);</CODE
11f1871b90149f8af3bf4e884dcc404436686967ylavicCLASS="FUNCDEF"
4f0358189bfa57b8e75bd6b94db264302a8f336amrumphlwres_noopresponse_free</CODE
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph>(lwres_context_t *ctx, lwres_noopresponse_t **structp);</CODE
54d750a84a175d8e338880514d440773eb986b50covenerCLASS="FUNCDEF"
54d750a84a175d8e338880514d440773eb986b50covenerlwres_nooprequest_free</CODE
54d750a84a175d8e338880514d440773eb986b50covener>(lwres_context_t *ctx, lwres_nooprequest_t **structp);</CODE
54d750a84a175d8e338880514d440773eb986b50covenerCLASS="REFSECT1"
4e30ef014533a7e93c92d88306291f5e49c9692ftrawickNAME="AEN57"
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick>DESCRIPTION</H2
2e15620d724fb8e3a5be183b917359a2fd6e9468covener>These are low-level routines for creating and parsing
2e15620d724fb8e3a5be183b917359a2fd6e9468covenerlightweight resolver no-op request and response messages.</P
2e15620d724fb8e3a5be183b917359a2fd6e9468covener>The no-op message is analogous to a <B
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covenerCLASS="COMMAND"
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covenera packet is sent to the resolver daemon and is simply echoed back.
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovenerThe opcode is intended to allow a client to determine if the server is
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acoveneroperational or not.</P
c12b284247f00b5696adabb0b855ce0669465764ylavic>There are four main functions for the no-op opcode.
c12b284247f00b5696adabb0b855ce0669465764ylavicOne render function converts a no-op request structure —
c12b284247f00b5696adabb0b855ce0669465764ylavicCLASS="TYPE"
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd>lwres_nooprequest_t</SPAN
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisdto the lighweight resolver's canonical format.
179565be4043d7e5f9161aa75271fa0a001866d9covenerIt is complemented by a parse function that converts a packet in this
179565be4043d7e5f9161aa75271fa0a001866d9covenercanonical format to a no-op request structure.
179565be4043d7e5f9161aa75271fa0a001866d9covenerAnother render function converts the no-op response structure —
fce4949fb0b309a5744afcd503c6ed2d35621ee2covenerCLASS="TYPE"
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener>lwres_noopresponse_t</SPAN
fce4949fb0b309a5744afcd503c6ed2d35621ee2covenerto the canonical format.
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawickThis is complemented by a parse function which converts a packet in
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawickcanonical format to a no-op response structure.</P
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz>These structures are defined in
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantzCLASS="FILENAME"
efe780dcf13b2b95effabf897d694d8f23feac74trawickThey are shown below.
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrinCLASS="PROGRAMLISTING"
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin>#define LWRES_OPCODE_NOOP 0x00000000U
993d1261a278d7322bccef219101220b7b4fb8c5jkaluzatypedef struct {
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza lwres_uint16_t datalength;
ba050a6f942b9fa0e81ed73437588005c569655ccovener unsigned char *data;
ba050a6f942b9fa0e81ed73437588005c569655ccovener} lwres_nooprequest_t;
ba050a6f942b9fa0e81ed73437588005c569655ccovenertypedef struct {
135ddda3a989215d2bedbcf1529bfb269c3eda23niq lwres_uint16_t datalength;
135ddda3a989215d2bedbcf1529bfb269c3eda23niq unsigned char *data;
135ddda3a989215d2bedbcf1529bfb269c3eda23niq} lwres_noopresponse_t;</PRE
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedoohAlthough the structures have different types, they are identical.
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedoohThis is because the no-op opcode simply echos whatever data was sent:
efe780dcf13b2b95effabf897d694d8f23feac74trawickthe response is therefore identical to the request.</P
33124689065ade0dfc8c54d8ebb734f9439cb89btrawickCLASS="FUNCTION"
33124689065ade0dfc8c54d8ebb734f9439cb89btrawick>lwres_nooprequest_render()</TT
33124689065ade0dfc8c54d8ebb734f9439cb89btrawick> uses resolver
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovenerCLASS="PARAMETER"
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza> to convert no-op request structure
56589be3d7a3e9343370df240010c6928cc78b39jkaluzaCLASS="PARAMETER"
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc> to canonical format. The packet header
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletcstructure <TT
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletcCLASS="PARAMETER"
4d12805e6c18253040223ea637acd6b3b3c18f60jorton> is initialised and transferred to
4d12805e6c18253040223ea637acd6b3b3c18f60jortonCLASS="PARAMETER"
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener>. The contents of
a4df2cd1e1391575a327c2a90ba4315f805a0a78covenerCLASS="PARAMETER"
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener> are then appended to the buffer in
1c2cab00d988fc48cbe59032cf76cc0bab20d6f7covenercanonical format. <TT
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covenerCLASS="FUNCTION"
75a230a728338d84dcfe81edd375352f34de22d0covener>lwres_noopresponse_render()</TT
75a230a728338d84dcfe81edd375352f34de22d0covenerperforms the same task, except it converts a no-op response structure
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covenerCLASS="TYPE"
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener>lwres_noopresponse_t</SPAN
63a5ea80bddcc84a462e40f402b4f330e0e05411covener> to the lightweight resolver's
63a5ea80bddcc84a462e40f402b4f330e0e05411covenercanonical format.</P
65a4e663b82f8bce28ac22ab2edfd7502de36998sfCLASS="FUNCTION"
65a4e663b82f8bce28ac22ab2edfd7502de36998sf>lwres_nooprequest_parse()</TT
65a4e663b82f8bce28ac22ab2edfd7502de36998sf> uses context
c7de1955eb0eaeabf7042902476397692672d549sfCLASS="PARAMETER"
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin> to convert the contents of packet
a511a29faf2ff7ead3b67680154a624effb31aafminfrinCLASS="PARAMETER"
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin> to a <SPAN
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrinCLASS="TYPE"
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin>lwres_nooprequest_t</SPAN
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrinstructure. Buffer <TT
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrinCLASS="PARAMETER"
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener> provides space to be used
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsffor storing this structure. When the function succeeds, the resulting
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoesCLASS="TYPE"
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq>lwres_nooprequest_t</SPAN
26c5829347f6a355c00f1ba0301d575056b69536niq> is made available through
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niqCLASS="PARAMETER"
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq>*structp</I
c12917da693bae4028a1d5a5e8224bceed8c739dsfCLASS="FUNCTION"
c12917da693bae4028a1d5a5e8224bceed8c739dsf>lwres_noopresponse_parse()</TT
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf> offers the same
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsfsemantics as <TT
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsfCLASS="FUNCTION"
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf>lwres_nooprequest_parse()</TT
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf> except it
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sfyields a <SPAN
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sfCLASS="TYPE"
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf>lwres_noopresponse_t</SPAN
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf> structure.</P
9811aed12bbc71783d2e544ccb5fecd193843eadsfCLASS="FUNCTION"
9811aed12bbc71783d2e544ccb5fecd193843eadsf>lwres_noopresponse_free()</TT
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjungCLASS="FUNCTION"
bd3f5647b96d378d9c75c954e3f13582af32c643sf>lwres_nooprequest_free()</TT
bd3f5647b96d378d9c75c954e3f13582af32c643sf> release the memory in
bd3f5647b96d378d9c75c954e3f13582af32c643sfresolver context <TT
bd3f5647b96d378d9c75c954e3f13582af32c643sfCLASS="PARAMETER"
2a7beea91d46beb41f043a84eaad060047ee04aafabien> that was allocated to the
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csfCLASS="TYPE"
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf>lwres_noopresponse_t</SPAN
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sfCLASS="TYPE"
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf>lwres_nooprequest_t</SPAN
f6b9c755a0b793e8a3a3aebd327ca20a86478117sfstructures referenced via <TT
f6b9c755a0b793e8a3a3aebd327ca20a86478117sfCLASS="PARAMETER"
132ee6ac1c26d6e8953836316ba50734eefab47bsf>structp</I
85eacfc96a04547ef25aabbc06440039715084c2jortonCLASS="REFSECT1"
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawickNAME="AEN95"
79c5787b92ac5f0e1cc82393816c77a006399316trawick>RETURN VALUES</H2
79c5787b92ac5f0e1cc82393816c77a006399316trawick>The no-op opcode functions
c967bf3bc89e8aa60dbd30d9da388e448ddc1cc4trawickCLASS="FUNCTION"
79c5787b92ac5f0e1cc82393816c77a006399316trawick>lwres_nooprequest_render()</TT
79c5787b92ac5f0e1cc82393816c77a006399316trawickCLASS="FUNCTION"
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton>lwres_noopresponse_render()</TT
7b395e4e878c28a4784919cfd2e704ddd14a3390jortonCLASS="FUNCTION"
536e48c08d674acac5d44929318f2ad928edc361jorton>lwres_nooprequest_parse()</TT
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jortonCLASS="FUNCTION"
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton>lwres_noopresponse_parse()</TT
53e9b27aba029b18be814df40bcf6f0428771d1efuankgCLASS="ERRORCODE"
53e9b27aba029b18be814df40bcf6f0428771d1efuankg>LWRES_R_SUCCESS</SPAN
6bb524f1895f30265a1431afc460977d391cb36bsfon success.
6bb524f1895f30265a1431afc460977d391cb36bsfThey return
6bb524f1895f30265a1431afc460977d391cb36bsfCLASS="ERRORCODE"
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrin>LWRES_R_NOMEMORY</SPAN
e6dd71992459d05a676b98b7963423dc5dc1e24aminfrinif memory allocation fails.
23f1535d6a60817d2846bac0aea230ea475d7dccminfrinCLASS="ERRORCODE"
23f1535d6a60817d2846bac0aea230ea475d7dccminfrin>LWRES_R_UNEXPECTEDEND</SPAN
23f1535d6a60817d2846bac0aea230ea475d7dccminfrinis returned if the available space in the buffer
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungCLASS="PARAMETER"
ec7520b24cd80d34d82bbcaca153cbb23cc04bc0rjungis too small to accommodate the packet header or the
6249dfa569d3b4f1f539665b979a80c6e335d93etrawickCLASS="TYPE"
6249dfa569d3b4f1f539665b979a80c6e335d93etrawick>lwres_nooprequest_t</SPAN
6249dfa569d3b4f1f539665b979a80c6e335d93etrawickCLASS="TYPE"
cfa64348224b66dd1c9979b809406c4d15b1c137fielding>lwres_noopresponse_t</SPAN
cfa64348224b66dd1c9979b809406c4d15b1c137fieldingCLASS="FUNCTION"
74499a117b3b2cd9666715a14f90c0e5d1a4ee8ajim>lwres_nooprequest_parse()</TT