protocol.c revision 158115
1158115Sume/*-
2158115Sume * Copyright (c) 2005 Michael Bushkov <bushman@rsu.ru>
3158115Sume * All rights reserved.
4158115Sume *
5158115Sume * Redistribution and use in source and binary forms, with or without
6158115Sume * modification, are permitted provided that the following conditions
7158115Sume * are met:
8158115Sume * 1. Redistributions of source code must retain the above copyright
9158115Sume *    notice, this list of conditions and the following disclaimer.
10158115Sume * 2. Redistributions in binary form must reproduce the above copyright
11158115Sume *    notice, this list of conditions and the following disclaimer in the
12158115Sume *    documentation and/or other materials provided with the distribution.
13158115Sume *
14158115Sume * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15158115Sume * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16158115Sume * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17158115Sume * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18158115Sume * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19158115Sume * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20158115Sume * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21158115Sume * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22158115Sume * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23158115Sume * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24158115Sume * SUCH DAMAGE.
25158115Sume *
26158115Sume */
27158115Sume
28158115Sume#include <sys/cdefs.h>
29158115Sume__FBSDID("$FreeBSD: head/usr.sbin/nscd/protocol.c 158115 2006-04-28 12:03:38Z ume $");
30158115Sume
31158115Sume#include <assert.h>
32158115Sume#include <stdlib.h>
33158115Sume#include <string.h>
34158115Sume#include "debug.h"
35158115Sume#include "log.h"
36158115Sume#include "protocol.h"
37158115Sume
38158115Sume/*
39158115Sume * Initializes the comm_element with any given type of data
40158115Sume */
41158115Sumevoid
42158115Sumeinit_comm_element(struct comm_element *element, enum comm_element_t type)
43158115Sume{
44158115Sume
45158115Sume	TRACE_IN(init_comm_element);
46158115Sume	memset(element, 0, sizeof(struct comm_element));
47158115Sume
48158115Sume	switch (type) {
49158115Sume	case CET_WRITE_REQUEST:
50158115Sume		init_cache_write_request(&element->c_write_request);
51158115Sume		break;
52158115Sume	case CET_WRITE_RESPONSE:
53158115Sume		init_cache_write_response(&element->c_write_response);
54158115Sume		break;
55158115Sume	case CET_READ_REQUEST:
56158115Sume		init_cache_read_request(&element->c_read_request);
57158115Sume		break;
58158115Sume	case CET_READ_RESPONSE:
59158115Sume		init_cache_read_response(&element->c_read_response);
60158115Sume		break;
61158115Sume	case CET_TRANSFORM_REQUEST:
62158115Sume		init_cache_transform_request(&element->c_transform_request);
63158115Sume		break;
64158115Sume	case CET_TRANSFORM_RESPONSE:
65158115Sume		init_cache_transform_response(&element->c_transform_response);
66158115Sume		break;
67158115Sume	case CET_MP_WRITE_SESSION_REQUEST:
68158115Sume		init_cache_mp_write_session_request(&element->c_mp_ws_request);
69158115Sume		break;
70158115Sume	case CET_MP_WRITE_SESSION_RESPONSE:
71158115Sume		init_cache_mp_write_session_response(&element->c_mp_ws_response);
72158115Sume		break;
73158115Sume	case CET_MP_WRITE_SESSION_WRITE_REQUEST:
74158115Sume		init_cache_mp_write_session_write_request(
75158115Sume			&element->c_mp_ws_write_request);
76158115Sume		break;
77158115Sume	case CET_MP_WRITE_SESSION_WRITE_RESPONSE:
78158115Sume		init_cache_mp_write_session_write_response(
79158115Sume			&element->c_mp_ws_write_response);
80158115Sume		break;
81158115Sume	case CET_MP_READ_SESSION_REQUEST:
82158115Sume		init_cache_mp_read_session_request(&element->c_mp_rs_request);
83158115Sume		break;
84158115Sume	case CET_MP_READ_SESSION_RESPONSE:
85158115Sume		init_cache_mp_read_session_response(&element->c_mp_rs_response);
86158115Sume		break;
87158115Sume	case CET_MP_READ_SESSION_READ_RESPONSE:
88158115Sume		init_cache_mp_read_session_read_response(
89158115Sume			&element->c_mp_rs_read_response);
90158115Sume		break;
91158115Sume	case CET_UNDEFINED:
92158115Sume		break;
93158115Sume	default:
94158115Sume		LOG_ERR_2("init_comm_element", "invalid communication element");
95158115Sume		TRACE_OUT(init_comm_element);
96158115Sume	return;
97158115Sume	}
98158115Sume
99158115Sume	element->type = type;
100158115Sume	TRACE_OUT(init_comm_element);
101158115Sume}
102158115Sume
103158115Sumevoid
104158115Sumefinalize_comm_element(struct comm_element *element)
105158115Sume{
106158115Sume
107158115Sume	TRACE_IN(finalize_comm_element);
108158115Sume	switch (element->type) {
109158115Sume	case CET_WRITE_REQUEST:
110158115Sume		finalize_cache_write_request(&element->c_write_request);
111158115Sume		break;
112158115Sume	case CET_WRITE_RESPONSE:
113158115Sume		finalize_cache_write_response(&element->c_write_response);
114158115Sume		break;
115158115Sume	case CET_READ_REQUEST:
116158115Sume		finalize_cache_read_request(&element->c_read_request);
117158115Sume		break;
118158115Sume	case CET_READ_RESPONSE:
119158115Sume		finalize_cache_read_response(&element->c_read_response);
120158115Sume		break;
121158115Sume	case CET_TRANSFORM_REQUEST:
122158115Sume		finalize_cache_transform_request(&element->c_transform_request);
123158115Sume		break;
124158115Sume	case CET_TRANSFORM_RESPONSE:
125158115Sume		finalize_cache_transform_response(
126158115Sume			&element->c_transform_response);
127158115Sume		break;
128158115Sume	case CET_MP_WRITE_SESSION_REQUEST:
129158115Sume		finalize_cache_mp_write_session_request(
130158115Sume			&element->c_mp_ws_request);
131158115Sume		break;
132158115Sume	case CET_MP_WRITE_SESSION_RESPONSE:
133158115Sume		finalize_cache_mp_write_session_response(
134158115Sume			&element->c_mp_ws_response);
135158115Sume		break;
136158115Sume	case CET_MP_WRITE_SESSION_WRITE_REQUEST:
137158115Sume		finalize_cache_mp_write_session_write_request(
138158115Sume			&element->c_mp_ws_write_request);
139158115Sume		break;
140158115Sume	case CET_MP_WRITE_SESSION_WRITE_RESPONSE:
141158115Sume		finalize_cache_mp_write_session_write_response(
142158115Sume			&element->c_mp_ws_write_response);
143158115Sume		break;
144158115Sume	case CET_MP_READ_SESSION_REQUEST:
145158115Sume		finalize_cache_mp_read_session_request(
146158115Sume			&element->c_mp_rs_request);
147158115Sume		break;
148158115Sume	case CET_MP_READ_SESSION_RESPONSE:
149158115Sume		finalize_cache_mp_read_session_response(
150158115Sume			&element->c_mp_rs_response);
151158115Sume		break;
152158115Sume	case CET_MP_READ_SESSION_READ_RESPONSE:
153158115Sume		finalize_cache_mp_read_session_read_response(
154158115Sume			&element->c_mp_rs_read_response);
155158115Sume		break;
156158115Sume	case CET_UNDEFINED:
157158115Sume		break;
158158115Sume	default:
159158115Sume	break;
160158115Sume	}
161158115Sume
162158115Sume	element->type = CET_UNDEFINED;
163158115Sume	TRACE_OUT(finalize_comm_element);
164158115Sume}
165158115Sume
166158115Sumevoid
167158115Sumeinit_cache_write_request(struct cache_write_request *write_request)
168158115Sume{
169158115Sume
170158115Sume	TRACE_IN(init_cache_write_request);
171158115Sume	memset(write_request, 0, sizeof(struct cache_write_request));
172158115Sume	TRACE_OUT(init_cache_write_request);
173158115Sume}
174158115Sume
175158115Sumevoid
176158115Sumefinalize_cache_write_request(struct cache_write_request *write_request)
177158115Sume{
178158115Sume
179158115Sume	TRACE_IN(finalize_cache_write_request);
180158115Sume	free(write_request->entry);
181158115Sume	free(write_request->cache_key);
182158115Sume	free(write_request->data);
183158115Sume	TRACE_OUT(finalize_cache_write_request);
184158115Sume}
185158115Sume
186158115Sumestruct cache_write_request *
187158115Sumeget_cache_write_request(struct comm_element *element)
188158115Sume{
189158115Sume
190158115Sume	TRACE_IN(get_cache_write_request);
191158115Sume	assert(element->type == CET_WRITE_REQUEST);
192158115Sume	TRACE_OUT(get_cache_write_request);
193158115Sume	return (&element->c_write_request);
194158115Sume}
195158115Sume
196158115Sumevoid
197158115Sumeinit_cache_write_response(struct cache_write_response *write_response)
198158115Sume{
199158115Sume
200158115Sume	TRACE_IN(init_cache_write_response);
201158115Sume	memset(write_response, 0, sizeof(struct cache_write_response));
202158115Sume	TRACE_OUT(init_cache_write_response);
203158115Sume}
204158115Sume
205158115Sumevoid
206158115Sumefinalize_cache_write_response(struct cache_write_response *write_response)
207158115Sume{
208158115Sume
209158115Sume	TRACE_IN(finalize_cache_write_response);
210158115Sume	TRACE_OUT(finalize_cache_write_response);
211158115Sume}
212158115Sume
213158115Sumestruct cache_write_response *
214158115Sumeget_cache_write_response(struct comm_element *element)
215158115Sume{
216158115Sume
217158115Sume	TRACE_IN(get_cache_write_response);
218158115Sume	assert(element->type == CET_WRITE_RESPONSE);
219158115Sume	TRACE_OUT(get_cache_write_response);
220158115Sume	return (&element->c_write_response);
221158115Sume}
222158115Sume
223158115Sumevoid
224158115Sumeinit_cache_read_request(struct cache_read_request *read_request)
225158115Sume{
226158115Sume
227158115Sume	TRACE_IN(init_cache_read_request);
228158115Sume	memset(read_request, 0, sizeof(struct cache_read_request));
229158115Sume	TRACE_OUT(init_cache_read_request);
230158115Sume}
231158115Sume
232158115Sumevoid
233158115Sumefinalize_cache_read_request(struct cache_read_request *read_request)
234158115Sume{
235158115Sume
236158115Sume	TRACE_IN(finalize_cache_read_request);
237158115Sume	free(read_request->entry);
238158115Sume	free(read_request->cache_key);
239158115Sume	TRACE_OUT(finalize_cache_read_request);
240158115Sume}
241158115Sume
242158115Sumestruct cache_read_request *
243158115Sumeget_cache_read_request(struct comm_element *element)
244158115Sume{
245158115Sume
246158115Sume	TRACE_IN(get_cache_read_request);
247158115Sume	assert(element->type == CET_READ_REQUEST);
248158115Sume	TRACE_OUT(get_cache_read_request);
249158115Sume	return (&element->c_read_request);
250158115Sume}
251158115Sume
252158115Sumevoid
253158115Sumeinit_cache_read_response(struct cache_read_response *read_response)
254158115Sume{
255158115Sume
256158115Sume	TRACE_IN(init_cache_read_response);
257158115Sume	memset(read_response, 0, sizeof(struct cache_read_response));
258158115Sume	TRACE_OUT(init_cache_read_response);
259158115Sume}
260158115Sume
261158115Sumevoid
262158115Sumefinalize_cache_read_response(struct cache_read_response *read_response)
263158115Sume{
264158115Sume
265158115Sume	TRACE_IN(finalize_cache_read_response);
266158115Sume	free(read_response->data);
267158115Sume	TRACE_OUT(finalize_cache_read_response);
268158115Sume}
269158115Sume
270158115Sumestruct cache_read_response *
271158115Sumeget_cache_read_response(struct comm_element *element)
272158115Sume{
273158115Sume
274158115Sume	TRACE_IN(get_cache_read_response);
275158115Sume	assert(element->type == CET_READ_RESPONSE);
276158115Sume	TRACE_OUT(get_cache_read_response);
277158115Sume	return (&element->c_read_response);
278158115Sume}
279158115Sume
280158115Sumevoid
281158115Sumeinit_cache_transform_request(struct cache_transform_request *transform_request)
282158115Sume{
283158115Sume
284158115Sume	TRACE_IN(init_cache_transform_request);
285158115Sume	memset(transform_request, 0, sizeof(struct cache_transform_request));
286158115Sume	TRACE_OUT(init_cache_transform_request);
287158115Sume}
288158115Sume
289158115Sumevoid
290158115Sumefinalize_cache_transform_request(
291158115Sume	struct cache_transform_request *transform_request)
292158115Sume{
293158115Sume
294158115Sume	TRACE_IN(finalize_cache_transform_request);
295158115Sume	free(transform_request->entry);
296158115Sume	TRACE_OUT(finalize_cache_transform_request);
297158115Sume}
298158115Sume
299158115Sumestruct cache_transform_request *
300158115Sumeget_cache_transform_request(struct comm_element *element)
301158115Sume{
302158115Sume
303158115Sume	TRACE_IN(get_cache_transform_request);
304158115Sume	assert(element->type == CET_TRANSFORM_REQUEST);
305158115Sume	TRACE_OUT(get_cache_transform_request);
306158115Sume	return (&element->c_transform_request);
307158115Sume}
308158115Sume
309158115Sumevoid
310158115Sumeinit_cache_transform_response(
311158115Sume	struct cache_transform_response *transform_response)
312158115Sume{
313158115Sume
314158115Sume	TRACE_IN(init_cache_transform_request);
315158115Sume	memset(transform_response, 0, sizeof(struct cache_transform_response));
316158115Sume	TRACE_OUT(init_cache_transform_request);
317158115Sume}
318158115Sume
319158115Sumevoid
320158115Sumefinalize_cache_transform_response(
321158115Sume	struct cache_transform_response *transform_response)
322158115Sume{
323158115Sume
324158115Sume	TRACE_IN(finalize_cache_transform_response);
325158115Sume	TRACE_OUT(finalize_cache_transform_response);
326158115Sume}
327158115Sume
328158115Sumestruct cache_transform_response *
329158115Sumeget_cache_transform_response(struct comm_element *element)
330158115Sume{
331158115Sume
332158115Sume	TRACE_IN(get_cache_transform_response);
333158115Sume	assert(element->type == CET_TRANSFORM_RESPONSE);
334158115Sume	TRACE_OUT(get_cache_transform_response);
335158115Sume	return (&element->c_transform_response);
336158115Sume}
337158115Sume
338158115Sume
339158115Sumevoid
340158115Sumeinit_cache_mp_write_session_request(
341158115Sume	struct cache_mp_write_session_request *mp_ws_request)
342158115Sume{
343158115Sume
344158115Sume	TRACE_IN(init_cache_mp_write_session_request);
345158115Sume	memset(mp_ws_request, 0,
346158115Sume    		sizeof(struct cache_mp_write_session_request));
347158115Sume	TRACE_OUT(init_cache_mp_write_session_request);
348158115Sume}
349158115Sume
350158115Sumevoid
351158115Sumefinalize_cache_mp_write_session_request(
352158115Sume	struct cache_mp_write_session_request *mp_ws_request)
353158115Sume{
354158115Sume
355158115Sume	TRACE_IN(finalize_cache_mp_write_session_request);
356158115Sume	free(mp_ws_request->entry);
357158115Sume	TRACE_OUT(finalize_cache_mp_write_session_request);
358158115Sume}
359158115Sume
360158115Sumestruct cache_mp_write_session_request *
361158115Sumeget_cache_mp_write_session_request(struct comm_element *element)
362158115Sume{
363158115Sume
364158115Sume	TRACE_IN(get_cache_mp_write_session_request);
365158115Sume	assert(element->type == CET_MP_WRITE_SESSION_REQUEST);
366158115Sume	TRACE_OUT(get_cache_mp_write_session_request);
367158115Sume	return (&element->c_mp_ws_request);
368158115Sume}
369158115Sume
370158115Sumevoid
371158115Sumeinit_cache_mp_write_session_response(
372158115Sume	struct cache_mp_write_session_response *mp_ws_response)
373158115Sume{
374158115Sume
375158115Sume	TRACE_IN(init_cache_mp_write_session_response);
376158115Sume	memset(mp_ws_response, 0,
377158115Sume    		sizeof(struct cache_mp_write_session_response));
378158115Sume	TRACE_OUT(init_cache_mp_write_session_response);
379158115Sume}
380158115Sume
381158115Sumevoid
382158115Sumefinalize_cache_mp_write_session_response(
383158115Sume	struct cache_mp_write_session_response *mp_ws_response)
384158115Sume{
385158115Sume
386158115Sume	TRACE_IN(finalize_cache_mp_write_session_response);
387158115Sume	TRACE_OUT(finalize_cache_mp_write_session_response);
388158115Sume}
389158115Sume
390158115Sumestruct cache_mp_write_session_response *
391158115Sumeget_cache_mp_write_session_response(struct comm_element *element)
392158115Sume{
393158115Sume
394158115Sume	TRACE_IN(get_cache_mp_write_session_response);
395158115Sume	assert(element->type == CET_MP_WRITE_SESSION_RESPONSE);
396158115Sume	TRACE_OUT(get_cache_mp_write_session_response);
397158115Sume	return (&element->c_mp_ws_response);
398158115Sume}
399158115Sume
400158115Sumevoid
401158115Sumeinit_cache_mp_write_session_write_request(
402158115Sume	struct cache_mp_write_session_write_request *mp_ws_write_request)
403158115Sume{
404158115Sume
405158115Sume	TRACE_IN(init_cache_mp_write_session_write_request);
406158115Sume	memset(mp_ws_write_request, 0,
407158115Sume		sizeof(struct cache_mp_write_session_write_request));
408158115Sume	TRACE_OUT(init_cache_mp_write_session_write_response);
409158115Sume}
410158115Sume
411158115Sumevoid
412158115Sumefinalize_cache_mp_write_session_write_request(
413158115Sume	struct cache_mp_write_session_write_request *mp_ws_write_request)
414158115Sume{
415158115Sume
416158115Sume	TRACE_IN(finalize_cache_mp_write_session_write_request);
417158115Sume	free(mp_ws_write_request->data);
418158115Sume	TRACE_OUT(finalize_cache_mp_write_session_write_request);
419158115Sume}
420158115Sume
421158115Sumestruct cache_mp_write_session_write_request *
422158115Sumeget_cache_mp_write_session_write_request(struct comm_element *element)
423158115Sume{
424158115Sume
425158115Sume	TRACE_IN(get_cache_mp_write_session_write_request);
426158115Sume	assert(element->type == CET_MP_WRITE_SESSION_WRITE_REQUEST);
427158115Sume	TRACE_OUT(get_cache_mp_write_session_write_request);
428158115Sume	return (&element->c_mp_ws_write_request);
429158115Sume}
430158115Sume
431158115Sumevoid
432158115Sumeinit_cache_mp_write_session_write_response(
433158115Sume	struct cache_mp_write_session_write_response *mp_ws_write_response)
434158115Sume{
435158115Sume
436158115Sume	TRACE_IN(init_cache_mp_write_session_write_response);
437158115Sume	memset(mp_ws_write_response, 0,
438158115Sume		sizeof(struct cache_mp_write_session_write_response));
439158115Sume	TRACE_OUT(init_cache_mp_write_session_write_response);
440158115Sume}
441158115Sume
442158115Sumevoid
443158115Sumefinalize_cache_mp_write_session_write_response(
444158115Sume	struct cache_mp_write_session_write_response *mp_ws_write_response)
445158115Sume{
446158115Sume
447158115Sume	TRACE_IN(finalize_cache_mp_write_session_write_response);
448158115Sume	TRACE_OUT(finalize_cache_mp_write_session_write_response);
449158115Sume}
450158115Sume
451158115Sumestruct cache_mp_write_session_write_response *
452158115Sumeget_cache_mp_write_session_write_response(struct comm_element *element)
453158115Sume{
454158115Sume
455158115Sume	TRACE_IN(get_cache_mp_write_session_write_response);
456158115Sume	assert(element->type == CET_MP_WRITE_SESSION_WRITE_RESPONSE);
457158115Sume	TRACE_OUT(get_cache_mp_write_session_write_response);
458158115Sume	return (&element->c_mp_ws_write_response);
459158115Sume}
460158115Sume
461158115Sumevoid
462158115Sumeinit_cache_mp_read_session_request(
463158115Sume	struct cache_mp_read_session_request *mp_rs_request)
464158115Sume{
465158115Sume
466158115Sume	TRACE_IN(init_cache_mp_read_session_request);
467158115Sume	memset(mp_rs_request, 0, sizeof(struct cache_mp_read_session_request));
468158115Sume	TRACE_OUT(init_cache_mp_read_session_request);
469158115Sume}
470158115Sume
471158115Sumevoid
472158115Sumefinalize_cache_mp_read_session_request(
473158115Sume	struct cache_mp_read_session_request *mp_rs_request)
474158115Sume{
475158115Sume
476158115Sume	TRACE_IN(finalize_cache_mp_read_session_request);
477158115Sume	free(mp_rs_request->entry);
478158115Sume	TRACE_OUT(finalize_cache_mp_read_session_request);
479158115Sume}
480158115Sume
481158115Sumestruct cache_mp_read_session_request *
482158115Sumeget_cache_mp_read_session_request(struct comm_element *element)
483158115Sume{
484158115Sume
485158115Sume	TRACE_IN(get_cache_mp_read_session_request);
486158115Sume	assert(element->type == CET_MP_READ_SESSION_REQUEST);
487158115Sume	TRACE_OUT(get_cache_mp_read_session_request);
488158115Sume	return (&element->c_mp_rs_request);
489158115Sume}
490158115Sume
491158115Sumevoid
492158115Sumeinit_cache_mp_read_session_response(
493158115Sume	struct cache_mp_read_session_response *mp_rs_response)
494158115Sume{
495158115Sume
496158115Sume	TRACE_IN(init_cache_mp_read_session_response);
497158115Sume	memset(mp_rs_response, 0,
498158115Sume    		sizeof(struct cache_mp_read_session_response));
499158115Sume	TRACE_OUT(init_cache_mp_read_session_response);
500158115Sume}
501158115Sume
502158115Sumevoid
503158115Sumefinalize_cache_mp_read_session_response(
504158115Sume	struct cache_mp_read_session_response *mp_rs_response)
505158115Sume{
506158115Sume
507158115Sume	TRACE_IN(finalize_cache_mp_read_session_response);
508158115Sume	TRACE_OUT(finalize_cache_mp_read_session_response);
509158115Sume}
510158115Sume
511158115Sumestruct cache_mp_read_session_response *
512158115Sumeget_cache_mp_read_session_response(struct comm_element *element)
513158115Sume{
514158115Sume
515158115Sume	TRACE_IN(get_cache_mp_read_session_response);
516158115Sume	assert(element->type == CET_MP_READ_SESSION_RESPONSE);
517158115Sume	TRACE_OUT(get_cache_mp_read_session_response);
518158115Sume	return (&element->c_mp_rs_response);
519158115Sume}
520158115Sume
521158115Sumevoid
522158115Sumeinit_cache_mp_read_session_read_response(
523158115Sume	struct cache_mp_read_session_read_response *mp_ws_read_response)
524158115Sume{
525158115Sume
526158115Sume	TRACE_IN(init_cache_mp_read_session_read_response);
527158115Sume	memset(mp_ws_read_response, 0,
528158115Sume		sizeof(struct cache_mp_read_session_read_response));
529158115Sume	TRACE_OUT(init_cache_mp_read_session_read_response);
530158115Sume}
531158115Sume
532158115Sumevoid
533158115Sumefinalize_cache_mp_read_session_read_response(
534158115Sume	struct cache_mp_read_session_read_response *mp_rs_read_response)
535158115Sume{
536158115Sume
537158115Sume	TRACE_IN(finalize_cache_mp_read_session_read_response);
538158115Sume	free(mp_rs_read_response->data);
539158115Sume	TRACE_OUT(finalize_cache_mp_read_session_read_response);
540158115Sume}
541158115Sume
542158115Sumestruct cache_mp_read_session_read_response *
543158115Sumeget_cache_mp_read_session_read_response(struct comm_element *element)
544158115Sume{
545158115Sume
546158115Sume	TRACE_IN(get_cache_mp_read_session_read_response);
547158115Sume	assert(element->type == CET_MP_READ_SESSION_READ_RESPONSE);
548158115Sume	TRACE_OUT(get_cache_mp_read_session_read_response);
549158115Sume	return (&element->c_mp_rs_read_response);
550158115Sume}
551