]> git.ipfire.org Git - people/ms/strongswan.git/blame - src/libfreeswan/liblwres/man/lwres_noop.html
- started to rebuild source layout
[people/ms/strongswan.git] / src / libfreeswan / liblwres / man / lwres_noop.html
CommitLineData
997358a6
MW
1<!--
2 - Copyright (C) 2000, 2001 Internet Software Consortium.
3 -
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.
7 -
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.
16-->
17<HTML
18><HEAD
19><TITLE
20>lwres_noop</TITLE
21><META
22NAME="GENERATOR"
23CONTENT="Modular DocBook HTML Stylesheet Version 1.61
24"></HEAD
25><BODY
26CLASS="REFENTRY"
27BGCOLOR="#FFFFFF"
28TEXT="#000000"
29LINK="#0000FF"
30VLINK="#840084"
31ALINK="#0000FF"
32><H1
33><A
34NAME="AEN1"
35>lwres_noop</A
36></H1
37><DIV
38CLASS="REFNAMEDIV"
39><A
40NAME="AEN8"
41></A
42><H2
43>Name</H2
44>lwres_nooprequest_render, lwres_noopresponse_render, lwres_nooprequest_parse, lwres_noopresponse_parse, lwres_noopresponse_free, lwres_nooprequest_free&nbsp;--&nbsp;lightweight resolver no-op message handling</DIV
45><DIV
46CLASS="REFSYNOPSISDIV"
47><A
48NAME="AEN16"
49></A
50><H2
51>Synopsis</H2
52><DIV
53CLASS="FUNCSYNOPSIS"
54><A
55NAME="AEN17"
56></A
57><P
58></P
59><PRE
60CLASS="FUNCSYNOPSISINFO"
61>#include &lt;lwres/lwres.h&gt;</PRE
62><P
63><CODE
64><CODE
65CLASS="FUNCDEF"
66>lwres_result_t
67lwres_nooprequest_render</CODE
68>(lwres_context_t *ctx, lwres_nooprequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
69></P
70><P
71><CODE
72><CODE
73CLASS="FUNCDEF"
74>lwres_result_t
75lwres_noopresponse_render</CODE
76>(lwres_context_t *ctx, lwres_noopresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
77></P
78><P
79><CODE
80><CODE
81CLASS="FUNCDEF"
82>lwres_result_t
83lwres_nooprequest_parse</CODE
84>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_nooprequest_t **structp);</CODE
85></P
86><P
87><CODE
88><CODE
89CLASS="FUNCDEF"
90>lwres_result_t
91lwres_noopresponse_parse</CODE
92>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_noopresponse_t **structp);</CODE
93></P
94><P
95><CODE
96><CODE
97CLASS="FUNCDEF"
98>void
99lwres_noopresponse_free</CODE
100>(lwres_context_t *ctx, lwres_noopresponse_t **structp);</CODE
101></P
102><P
103><CODE
104><CODE
105CLASS="FUNCDEF"
106>void
107lwres_nooprequest_free</CODE
108>(lwres_context_t *ctx, lwres_nooprequest_t **structp);</CODE
109></P
110><P
111></P
112></DIV
113></DIV
114><DIV
115CLASS="REFSECT1"
116><A
117NAME="AEN57"
118></A
119><H2
120>DESCRIPTION</H2
121><P
122>These are low-level routines for creating and parsing
123lightweight resolver no-op request and response messages.</P
124><P
125>The no-op message is analogous to a <B
126CLASS="COMMAND"
127>ping</B
128> packet:
129a packet is sent to the resolver daemon and is simply echoed back.
130The opcode is intended to allow a client to determine if the server is
131operational or not.</P
132><P
133>There are four main functions for the no-op opcode.
134One render function converts a no-op request structure &mdash;
135<SPAN
136CLASS="TYPE"
137>lwres_nooprequest_t</SPAN
138> &mdash;
139to the lighweight resolver's canonical format.
140It is complemented by a parse function that converts a packet in this
141canonical format to a no-op request structure.
142Another render function converts the no-op response structure &mdash;
143<SPAN
144CLASS="TYPE"
145>lwres_noopresponse_t</SPAN
146>
147to the canonical format.
148This is complemented by a parse function which converts a packet in
149canonical format to a no-op response structure.</P
150><P
151>These structures are defined in
152<TT
153CLASS="FILENAME"
154>lwres/lwres.h</TT
155>.
156
157They are shown below.
158<PRE
159CLASS="PROGRAMLISTING"
160>#define LWRES_OPCODE_NOOP 0x00000000U
161
162typedef struct {
163 lwres_uint16_t datalength;
164 unsigned char *data;
165} lwres_nooprequest_t;
166
167typedef struct {
168 lwres_uint16_t datalength;
169 unsigned char *data;
170} lwres_noopresponse_t;</PRE
171>
172Although the structures have different types, they are identical.
173This is because the no-op opcode simply echos whatever data was sent:
174the response is therefore identical to the request.</P
175><P
176><TT
177CLASS="FUNCTION"
178>lwres_nooprequest_render()</TT
179> uses resolver
180context <TT
181CLASS="PARAMETER"
182><I
183>ctx</I
184></TT
185> to convert no-op request structure
186<TT
187CLASS="PARAMETER"
188><I
189>req</I
190></TT
191> to canonical format. The packet header
192structure <TT
193CLASS="PARAMETER"
194><I
195>pkt</I
196></TT
197> is initialised and transferred to
198buffer <TT
199CLASS="PARAMETER"
200><I
201>b</I
202></TT
203>. The contents of
204<TT
205CLASS="PARAMETER"
206><I
207>*req</I
208></TT
209> are then appended to the buffer in
210canonical format. <TT
211CLASS="FUNCTION"
212>lwres_noopresponse_render()</TT
213>
214performs the same task, except it converts a no-op response structure
215<SPAN
216CLASS="TYPE"
217>lwres_noopresponse_t</SPAN
218> to the lightweight resolver's
219canonical format.</P
220><P
221><TT
222CLASS="FUNCTION"
223>lwres_nooprequest_parse()</TT
224> uses context
225<TT
226CLASS="PARAMETER"
227><I
228>ctx</I
229></TT
230> to convert the contents of packet
231<TT
232CLASS="PARAMETER"
233><I
234>pkt</I
235></TT
236> to a <SPAN
237CLASS="TYPE"
238>lwres_nooprequest_t</SPAN
239>
240structure. Buffer <TT
241CLASS="PARAMETER"
242><I
243>b</I
244></TT
245> provides space to be used
246for storing this structure. When the function succeeds, the resulting
247<SPAN
248CLASS="TYPE"
249>lwres_nooprequest_t</SPAN
250> is made available through
251<TT
252CLASS="PARAMETER"
253><I
254>*structp</I
255></TT
256>.
257<TT
258CLASS="FUNCTION"
259>lwres_noopresponse_parse()</TT
260> offers the same
261semantics as <TT
262CLASS="FUNCTION"
263>lwres_nooprequest_parse()</TT
264> except it
265yields a <SPAN
266CLASS="TYPE"
267>lwres_noopresponse_t</SPAN
268> structure.</P
269><P
270><TT
271CLASS="FUNCTION"
272>lwres_noopresponse_free()</TT
273> and
274<TT
275CLASS="FUNCTION"
276>lwres_nooprequest_free()</TT
277> release the memory in
278resolver context <TT
279CLASS="PARAMETER"
280><I
281>ctx</I
282></TT
283> that was allocated to the
284<SPAN
285CLASS="TYPE"
286>lwres_noopresponse_t</SPAN
287> or <SPAN
288CLASS="TYPE"
289>lwres_nooprequest_t</SPAN
290>
291structures referenced via <TT
292CLASS="PARAMETER"
293><I
294>structp</I
295></TT
296>.</P
297></DIV
298><DIV
299CLASS="REFSECT1"
300><A
301NAME="AEN95"
302></A
303><H2
304>RETURN VALUES</H2
305><P
306>The no-op opcode functions
307<TT
308CLASS="FUNCTION"
309>lwres_nooprequest_render()</TT
310>,
311
312<TT
313CLASS="FUNCTION"
314>lwres_noopresponse_render()</TT
315>
316<TT
317CLASS="FUNCTION"
318>lwres_nooprequest_parse()</TT
319>
320and
321<TT
322CLASS="FUNCTION"
323>lwres_noopresponse_parse()</TT
324>
325all return
326<SPAN
327CLASS="ERRORCODE"
328>LWRES_R_SUCCESS</SPAN
329>
330on success.
331They return
332<SPAN
333CLASS="ERRORCODE"
334>LWRES_R_NOMEMORY</SPAN
335>
336if memory allocation fails.
337<SPAN
338CLASS="ERRORCODE"
339>LWRES_R_UNEXPECTEDEND</SPAN
340>
341is returned if the available space in the buffer
342<TT
343CLASS="PARAMETER"
344><I
345>b</I
346></TT
347>
348is too small to accommodate the packet header or the
349<SPAN
350CLASS="TYPE"
351>lwres_nooprequest_t</SPAN
352>
353and
354<SPAN
355CLASS="TYPE"
356>lwres_noopresponse_t</SPAN
357>
358structures.
359<TT
360CLASS="FUNCTION"
361>lwres_nooprequest_parse()</TT
362>
363and
364<TT
365CLASS="FUNCTION"
366>lwres_noopresponse_parse()</TT
367>
368will return
369<SPAN
370CLASS="ERRORCODE"
371>LWRES_R_UNEXPECTEDEND</SPAN
372>
373if the buffer is not empty after decoding the received packet.
374These functions will return
375<SPAN
376CLASS="ERRORCODE"
377>LWRES_R_FAILURE</SPAN
378>
379if
380<TT
381CLASS="CONSTANT"
382>pktflags</TT
383>
384in the packet header structure
385<SPAN
386CLASS="TYPE"
387>lwres_lwpacket_t</SPAN
388>
389indicate that the packet is not a response to an earlier query.</P
390></DIV
391><DIV
392CLASS="REFSECT1"
393><A
394NAME="AEN114"
395></A
396><H2
397>SEE ALSO</H2
398><P
399><SPAN
400CLASS="CITEREFENTRY"
401><SPAN
402CLASS="REFENTRYTITLE"
403>lwres_packet</SPAN
404>(3)</SPAN
405></P
406></DIV
407></BODY
408></HTML
409>