xref: /freebsd/usr.sbin/nscd/protocol.c (revision 06a99fe36f0aac93e7689da6b3f07b727750691f)
106a99fe3SHajimu UMEMOTO /*-
206a99fe3SHajimu UMEMOTO  * Copyright (c) 2005 Michael Bushkov <bushman@rsu.ru>
306a99fe3SHajimu UMEMOTO  * All rights reserved.
406a99fe3SHajimu UMEMOTO  *
506a99fe3SHajimu UMEMOTO  * Redistribution and use in source and binary forms, with or without
606a99fe3SHajimu UMEMOTO  * modification, are permitted provided that the following conditions
706a99fe3SHajimu UMEMOTO  * are met:
806a99fe3SHajimu UMEMOTO  * 1. Redistributions of source code must retain the above copyright
906a99fe3SHajimu UMEMOTO  *    notice, this list of conditions and the following disclaimer.
1006a99fe3SHajimu UMEMOTO  * 2. Redistributions in binary form must reproduce the above copyright
1106a99fe3SHajimu UMEMOTO  *    notice, this list of conditions and the following disclaimer in the
1206a99fe3SHajimu UMEMOTO  *    documentation and/or other materials provided with the distribution.
1306a99fe3SHajimu UMEMOTO  *
1406a99fe3SHajimu UMEMOTO  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1506a99fe3SHajimu UMEMOTO  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1606a99fe3SHajimu UMEMOTO  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1706a99fe3SHajimu UMEMOTO  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1806a99fe3SHajimu UMEMOTO  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1906a99fe3SHajimu UMEMOTO  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2006a99fe3SHajimu UMEMOTO  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2106a99fe3SHajimu UMEMOTO  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2206a99fe3SHajimu UMEMOTO  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2306a99fe3SHajimu UMEMOTO  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2406a99fe3SHajimu UMEMOTO  * SUCH DAMAGE.
2506a99fe3SHajimu UMEMOTO  *
2606a99fe3SHajimu UMEMOTO  */
2706a99fe3SHajimu UMEMOTO 
2806a99fe3SHajimu UMEMOTO #include <sys/cdefs.h>
2906a99fe3SHajimu UMEMOTO __FBSDID("$FreeBSD$");
3006a99fe3SHajimu UMEMOTO 
3106a99fe3SHajimu UMEMOTO #include <assert.h>
3206a99fe3SHajimu UMEMOTO #include <stdlib.h>
3306a99fe3SHajimu UMEMOTO #include <string.h>
3406a99fe3SHajimu UMEMOTO #include "debug.h"
3506a99fe3SHajimu UMEMOTO #include "log.h"
3606a99fe3SHajimu UMEMOTO #include "protocol.h"
3706a99fe3SHajimu UMEMOTO 
3806a99fe3SHajimu UMEMOTO /*
3906a99fe3SHajimu UMEMOTO  * Initializes the comm_element with any given type of data
4006a99fe3SHajimu UMEMOTO  */
4106a99fe3SHajimu UMEMOTO void
4206a99fe3SHajimu UMEMOTO init_comm_element(struct comm_element *element, enum comm_element_t type)
4306a99fe3SHajimu UMEMOTO {
4406a99fe3SHajimu UMEMOTO 
4506a99fe3SHajimu UMEMOTO 	TRACE_IN(init_comm_element);
4606a99fe3SHajimu UMEMOTO 	memset(element, 0, sizeof(struct comm_element));
4706a99fe3SHajimu UMEMOTO 
4806a99fe3SHajimu UMEMOTO 	switch (type) {
4906a99fe3SHajimu UMEMOTO 	case CET_WRITE_REQUEST:
5006a99fe3SHajimu UMEMOTO 		init_cache_write_request(&element->c_write_request);
5106a99fe3SHajimu UMEMOTO 		break;
5206a99fe3SHajimu UMEMOTO 	case CET_WRITE_RESPONSE:
5306a99fe3SHajimu UMEMOTO 		init_cache_write_response(&element->c_write_response);
5406a99fe3SHajimu UMEMOTO 		break;
5506a99fe3SHajimu UMEMOTO 	case CET_READ_REQUEST:
5606a99fe3SHajimu UMEMOTO 		init_cache_read_request(&element->c_read_request);
5706a99fe3SHajimu UMEMOTO 		break;
5806a99fe3SHajimu UMEMOTO 	case CET_READ_RESPONSE:
5906a99fe3SHajimu UMEMOTO 		init_cache_read_response(&element->c_read_response);
6006a99fe3SHajimu UMEMOTO 		break;
6106a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_REQUEST:
6206a99fe3SHajimu UMEMOTO 		init_cache_transform_request(&element->c_transform_request);
6306a99fe3SHajimu UMEMOTO 		break;
6406a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_RESPONSE:
6506a99fe3SHajimu UMEMOTO 		init_cache_transform_response(&element->c_transform_response);
6606a99fe3SHajimu UMEMOTO 		break;
6706a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_REQUEST:
6806a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_request(&element->c_mp_ws_request);
6906a99fe3SHajimu UMEMOTO 		break;
7006a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_RESPONSE:
7106a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_response(&element->c_mp_ws_response);
7206a99fe3SHajimu UMEMOTO 		break;
7306a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_REQUEST:
7406a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_write_request(
7506a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_request);
7606a99fe3SHajimu UMEMOTO 		break;
7706a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_RESPONSE:
7806a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_write_response(
7906a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_response);
8006a99fe3SHajimu UMEMOTO 		break;
8106a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_REQUEST:
8206a99fe3SHajimu UMEMOTO 		init_cache_mp_read_session_request(&element->c_mp_rs_request);
8306a99fe3SHajimu UMEMOTO 		break;
8406a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_RESPONSE:
8506a99fe3SHajimu UMEMOTO 		init_cache_mp_read_session_response(&element->c_mp_rs_response);
8606a99fe3SHajimu UMEMOTO 		break;
8706a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_READ_RESPONSE:
8806a99fe3SHajimu UMEMOTO 		init_cache_mp_read_session_read_response(
8906a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_read_response);
9006a99fe3SHajimu UMEMOTO 		break;
9106a99fe3SHajimu UMEMOTO 	case CET_UNDEFINED:
9206a99fe3SHajimu UMEMOTO 		break;
9306a99fe3SHajimu UMEMOTO 	default:
9406a99fe3SHajimu UMEMOTO 		LOG_ERR_2("init_comm_element", "invalid communication element");
9506a99fe3SHajimu UMEMOTO 		TRACE_OUT(init_comm_element);
9606a99fe3SHajimu UMEMOTO 	return;
9706a99fe3SHajimu UMEMOTO 	}
9806a99fe3SHajimu UMEMOTO 
9906a99fe3SHajimu UMEMOTO 	element->type = type;
10006a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_comm_element);
10106a99fe3SHajimu UMEMOTO }
10206a99fe3SHajimu UMEMOTO 
10306a99fe3SHajimu UMEMOTO void
10406a99fe3SHajimu UMEMOTO finalize_comm_element(struct comm_element *element)
10506a99fe3SHajimu UMEMOTO {
10606a99fe3SHajimu UMEMOTO 
10706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_comm_element);
10806a99fe3SHajimu UMEMOTO 	switch (element->type) {
10906a99fe3SHajimu UMEMOTO 	case CET_WRITE_REQUEST:
11006a99fe3SHajimu UMEMOTO 		finalize_cache_write_request(&element->c_write_request);
11106a99fe3SHajimu UMEMOTO 		break;
11206a99fe3SHajimu UMEMOTO 	case CET_WRITE_RESPONSE:
11306a99fe3SHajimu UMEMOTO 		finalize_cache_write_response(&element->c_write_response);
11406a99fe3SHajimu UMEMOTO 		break;
11506a99fe3SHajimu UMEMOTO 	case CET_READ_REQUEST:
11606a99fe3SHajimu UMEMOTO 		finalize_cache_read_request(&element->c_read_request);
11706a99fe3SHajimu UMEMOTO 		break;
11806a99fe3SHajimu UMEMOTO 	case CET_READ_RESPONSE:
11906a99fe3SHajimu UMEMOTO 		finalize_cache_read_response(&element->c_read_response);
12006a99fe3SHajimu UMEMOTO 		break;
12106a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_REQUEST:
12206a99fe3SHajimu UMEMOTO 		finalize_cache_transform_request(&element->c_transform_request);
12306a99fe3SHajimu UMEMOTO 		break;
12406a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_RESPONSE:
12506a99fe3SHajimu UMEMOTO 		finalize_cache_transform_response(
12606a99fe3SHajimu UMEMOTO 			&element->c_transform_response);
12706a99fe3SHajimu UMEMOTO 		break;
12806a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_REQUEST:
12906a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_request(
13006a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_request);
13106a99fe3SHajimu UMEMOTO 		break;
13206a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_RESPONSE:
13306a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_response(
13406a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_response);
13506a99fe3SHajimu UMEMOTO 		break;
13606a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_REQUEST:
13706a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_write_request(
13806a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_request);
13906a99fe3SHajimu UMEMOTO 		break;
14006a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_RESPONSE:
14106a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_write_response(
14206a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_response);
14306a99fe3SHajimu UMEMOTO 		break;
14406a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_REQUEST:
14506a99fe3SHajimu UMEMOTO 		finalize_cache_mp_read_session_request(
14606a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_request);
14706a99fe3SHajimu UMEMOTO 		break;
14806a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_RESPONSE:
14906a99fe3SHajimu UMEMOTO 		finalize_cache_mp_read_session_response(
15006a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_response);
15106a99fe3SHajimu UMEMOTO 		break;
15206a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_READ_RESPONSE:
15306a99fe3SHajimu UMEMOTO 		finalize_cache_mp_read_session_read_response(
15406a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_read_response);
15506a99fe3SHajimu UMEMOTO 		break;
15606a99fe3SHajimu UMEMOTO 	case CET_UNDEFINED:
15706a99fe3SHajimu UMEMOTO 		break;
15806a99fe3SHajimu UMEMOTO 	default:
15906a99fe3SHajimu UMEMOTO 	break;
16006a99fe3SHajimu UMEMOTO 	}
16106a99fe3SHajimu UMEMOTO 
16206a99fe3SHajimu UMEMOTO 	element->type = CET_UNDEFINED;
16306a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_comm_element);
16406a99fe3SHajimu UMEMOTO }
16506a99fe3SHajimu UMEMOTO 
16606a99fe3SHajimu UMEMOTO void
16706a99fe3SHajimu UMEMOTO init_cache_write_request(struct cache_write_request *write_request)
16806a99fe3SHajimu UMEMOTO {
16906a99fe3SHajimu UMEMOTO 
17006a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_write_request);
17106a99fe3SHajimu UMEMOTO 	memset(write_request, 0, sizeof(struct cache_write_request));
17206a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_write_request);
17306a99fe3SHajimu UMEMOTO }
17406a99fe3SHajimu UMEMOTO 
17506a99fe3SHajimu UMEMOTO void
17606a99fe3SHajimu UMEMOTO finalize_cache_write_request(struct cache_write_request *write_request)
17706a99fe3SHajimu UMEMOTO {
17806a99fe3SHajimu UMEMOTO 
17906a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_write_request);
18006a99fe3SHajimu UMEMOTO 	free(write_request->entry);
18106a99fe3SHajimu UMEMOTO 	free(write_request->cache_key);
18206a99fe3SHajimu UMEMOTO 	free(write_request->data);
18306a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_write_request);
18406a99fe3SHajimu UMEMOTO }
18506a99fe3SHajimu UMEMOTO 
18606a99fe3SHajimu UMEMOTO struct cache_write_request *
18706a99fe3SHajimu UMEMOTO get_cache_write_request(struct comm_element *element)
18806a99fe3SHajimu UMEMOTO {
18906a99fe3SHajimu UMEMOTO 
19006a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_write_request);
19106a99fe3SHajimu UMEMOTO 	assert(element->type == CET_WRITE_REQUEST);
19206a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_write_request);
19306a99fe3SHajimu UMEMOTO 	return (&element->c_write_request);
19406a99fe3SHajimu UMEMOTO }
19506a99fe3SHajimu UMEMOTO 
19606a99fe3SHajimu UMEMOTO void
19706a99fe3SHajimu UMEMOTO init_cache_write_response(struct cache_write_response *write_response)
19806a99fe3SHajimu UMEMOTO {
19906a99fe3SHajimu UMEMOTO 
20006a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_write_response);
20106a99fe3SHajimu UMEMOTO 	memset(write_response, 0, sizeof(struct cache_write_response));
20206a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_write_response);
20306a99fe3SHajimu UMEMOTO }
20406a99fe3SHajimu UMEMOTO 
20506a99fe3SHajimu UMEMOTO void
20606a99fe3SHajimu UMEMOTO finalize_cache_write_response(struct cache_write_response *write_response)
20706a99fe3SHajimu UMEMOTO {
20806a99fe3SHajimu UMEMOTO 
20906a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_write_response);
21006a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_write_response);
21106a99fe3SHajimu UMEMOTO }
21206a99fe3SHajimu UMEMOTO 
21306a99fe3SHajimu UMEMOTO struct cache_write_response *
21406a99fe3SHajimu UMEMOTO get_cache_write_response(struct comm_element *element)
21506a99fe3SHajimu UMEMOTO {
21606a99fe3SHajimu UMEMOTO 
21706a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_write_response);
21806a99fe3SHajimu UMEMOTO 	assert(element->type == CET_WRITE_RESPONSE);
21906a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_write_response);
22006a99fe3SHajimu UMEMOTO 	return (&element->c_write_response);
22106a99fe3SHajimu UMEMOTO }
22206a99fe3SHajimu UMEMOTO 
22306a99fe3SHajimu UMEMOTO void
22406a99fe3SHajimu UMEMOTO init_cache_read_request(struct cache_read_request *read_request)
22506a99fe3SHajimu UMEMOTO {
22606a99fe3SHajimu UMEMOTO 
22706a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_read_request);
22806a99fe3SHajimu UMEMOTO 	memset(read_request, 0, sizeof(struct cache_read_request));
22906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_read_request);
23006a99fe3SHajimu UMEMOTO }
23106a99fe3SHajimu UMEMOTO 
23206a99fe3SHajimu UMEMOTO void
23306a99fe3SHajimu UMEMOTO finalize_cache_read_request(struct cache_read_request *read_request)
23406a99fe3SHajimu UMEMOTO {
23506a99fe3SHajimu UMEMOTO 
23606a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_read_request);
23706a99fe3SHajimu UMEMOTO 	free(read_request->entry);
23806a99fe3SHajimu UMEMOTO 	free(read_request->cache_key);
23906a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_read_request);
24006a99fe3SHajimu UMEMOTO }
24106a99fe3SHajimu UMEMOTO 
24206a99fe3SHajimu UMEMOTO struct cache_read_request *
24306a99fe3SHajimu UMEMOTO get_cache_read_request(struct comm_element *element)
24406a99fe3SHajimu UMEMOTO {
24506a99fe3SHajimu UMEMOTO 
24606a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_read_request);
24706a99fe3SHajimu UMEMOTO 	assert(element->type == CET_READ_REQUEST);
24806a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_read_request);
24906a99fe3SHajimu UMEMOTO 	return (&element->c_read_request);
25006a99fe3SHajimu UMEMOTO }
25106a99fe3SHajimu UMEMOTO 
25206a99fe3SHajimu UMEMOTO void
25306a99fe3SHajimu UMEMOTO init_cache_read_response(struct cache_read_response *read_response)
25406a99fe3SHajimu UMEMOTO {
25506a99fe3SHajimu UMEMOTO 
25606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_read_response);
25706a99fe3SHajimu UMEMOTO 	memset(read_response, 0, sizeof(struct cache_read_response));
25806a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_read_response);
25906a99fe3SHajimu UMEMOTO }
26006a99fe3SHajimu UMEMOTO 
26106a99fe3SHajimu UMEMOTO void
26206a99fe3SHajimu UMEMOTO finalize_cache_read_response(struct cache_read_response *read_response)
26306a99fe3SHajimu UMEMOTO {
26406a99fe3SHajimu UMEMOTO 
26506a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_read_response);
26606a99fe3SHajimu UMEMOTO 	free(read_response->data);
26706a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_read_response);
26806a99fe3SHajimu UMEMOTO }
26906a99fe3SHajimu UMEMOTO 
27006a99fe3SHajimu UMEMOTO struct cache_read_response *
27106a99fe3SHajimu UMEMOTO get_cache_read_response(struct comm_element *element)
27206a99fe3SHajimu UMEMOTO {
27306a99fe3SHajimu UMEMOTO 
27406a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_read_response);
27506a99fe3SHajimu UMEMOTO 	assert(element->type == CET_READ_RESPONSE);
27606a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_read_response);
27706a99fe3SHajimu UMEMOTO 	return (&element->c_read_response);
27806a99fe3SHajimu UMEMOTO }
27906a99fe3SHajimu UMEMOTO 
28006a99fe3SHajimu UMEMOTO void
28106a99fe3SHajimu UMEMOTO init_cache_transform_request(struct cache_transform_request *transform_request)
28206a99fe3SHajimu UMEMOTO {
28306a99fe3SHajimu UMEMOTO 
28406a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_transform_request);
28506a99fe3SHajimu UMEMOTO 	memset(transform_request, 0, sizeof(struct cache_transform_request));
28606a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_transform_request);
28706a99fe3SHajimu UMEMOTO }
28806a99fe3SHajimu UMEMOTO 
28906a99fe3SHajimu UMEMOTO void
29006a99fe3SHajimu UMEMOTO finalize_cache_transform_request(
29106a99fe3SHajimu UMEMOTO 	struct cache_transform_request *transform_request)
29206a99fe3SHajimu UMEMOTO {
29306a99fe3SHajimu UMEMOTO 
29406a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_transform_request);
29506a99fe3SHajimu UMEMOTO 	free(transform_request->entry);
29606a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_transform_request);
29706a99fe3SHajimu UMEMOTO }
29806a99fe3SHajimu UMEMOTO 
29906a99fe3SHajimu UMEMOTO struct cache_transform_request *
30006a99fe3SHajimu UMEMOTO get_cache_transform_request(struct comm_element *element)
30106a99fe3SHajimu UMEMOTO {
30206a99fe3SHajimu UMEMOTO 
30306a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_transform_request);
30406a99fe3SHajimu UMEMOTO 	assert(element->type == CET_TRANSFORM_REQUEST);
30506a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_transform_request);
30606a99fe3SHajimu UMEMOTO 	return (&element->c_transform_request);
30706a99fe3SHajimu UMEMOTO }
30806a99fe3SHajimu UMEMOTO 
30906a99fe3SHajimu UMEMOTO void
31006a99fe3SHajimu UMEMOTO init_cache_transform_response(
31106a99fe3SHajimu UMEMOTO 	struct cache_transform_response *transform_response)
31206a99fe3SHajimu UMEMOTO {
31306a99fe3SHajimu UMEMOTO 
31406a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_transform_request);
31506a99fe3SHajimu UMEMOTO 	memset(transform_response, 0, sizeof(struct cache_transform_response));
31606a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_transform_request);
31706a99fe3SHajimu UMEMOTO }
31806a99fe3SHajimu UMEMOTO 
31906a99fe3SHajimu UMEMOTO void
32006a99fe3SHajimu UMEMOTO finalize_cache_transform_response(
32106a99fe3SHajimu UMEMOTO 	struct cache_transform_response *transform_response)
32206a99fe3SHajimu UMEMOTO {
32306a99fe3SHajimu UMEMOTO 
32406a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_transform_response);
32506a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_transform_response);
32606a99fe3SHajimu UMEMOTO }
32706a99fe3SHajimu UMEMOTO 
32806a99fe3SHajimu UMEMOTO struct cache_transform_response *
32906a99fe3SHajimu UMEMOTO get_cache_transform_response(struct comm_element *element)
33006a99fe3SHajimu UMEMOTO {
33106a99fe3SHajimu UMEMOTO 
33206a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_transform_response);
33306a99fe3SHajimu UMEMOTO 	assert(element->type == CET_TRANSFORM_RESPONSE);
33406a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_transform_response);
33506a99fe3SHajimu UMEMOTO 	return (&element->c_transform_response);
33606a99fe3SHajimu UMEMOTO }
33706a99fe3SHajimu UMEMOTO 
33806a99fe3SHajimu UMEMOTO 
33906a99fe3SHajimu UMEMOTO void
34006a99fe3SHajimu UMEMOTO init_cache_mp_write_session_request(
34106a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_request *mp_ws_request)
34206a99fe3SHajimu UMEMOTO {
34306a99fe3SHajimu UMEMOTO 
34406a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_request);
34506a99fe3SHajimu UMEMOTO 	memset(mp_ws_request, 0,
34606a99fe3SHajimu UMEMOTO     		sizeof(struct cache_mp_write_session_request));
34706a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_request);
34806a99fe3SHajimu UMEMOTO }
34906a99fe3SHajimu UMEMOTO 
35006a99fe3SHajimu UMEMOTO void
35106a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_request(
35206a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_request *mp_ws_request)
35306a99fe3SHajimu UMEMOTO {
35406a99fe3SHajimu UMEMOTO 
35506a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_request);
35606a99fe3SHajimu UMEMOTO 	free(mp_ws_request->entry);
35706a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_request);
35806a99fe3SHajimu UMEMOTO }
35906a99fe3SHajimu UMEMOTO 
36006a99fe3SHajimu UMEMOTO struct cache_mp_write_session_request *
36106a99fe3SHajimu UMEMOTO get_cache_mp_write_session_request(struct comm_element *element)
36206a99fe3SHajimu UMEMOTO {
36306a99fe3SHajimu UMEMOTO 
36406a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_request);
36506a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_REQUEST);
36606a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_request);
36706a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_request);
36806a99fe3SHajimu UMEMOTO }
36906a99fe3SHajimu UMEMOTO 
37006a99fe3SHajimu UMEMOTO void
37106a99fe3SHajimu UMEMOTO init_cache_mp_write_session_response(
37206a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_response *mp_ws_response)
37306a99fe3SHajimu UMEMOTO {
37406a99fe3SHajimu UMEMOTO 
37506a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_response);
37606a99fe3SHajimu UMEMOTO 	memset(mp_ws_response, 0,
37706a99fe3SHajimu UMEMOTO     		sizeof(struct cache_mp_write_session_response));
37806a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_response);
37906a99fe3SHajimu UMEMOTO }
38006a99fe3SHajimu UMEMOTO 
38106a99fe3SHajimu UMEMOTO void
38206a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_response(
38306a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_response *mp_ws_response)
38406a99fe3SHajimu UMEMOTO {
38506a99fe3SHajimu UMEMOTO 
38606a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_response);
38706a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_response);
38806a99fe3SHajimu UMEMOTO }
38906a99fe3SHajimu UMEMOTO 
39006a99fe3SHajimu UMEMOTO struct cache_mp_write_session_response *
39106a99fe3SHajimu UMEMOTO get_cache_mp_write_session_response(struct comm_element *element)
39206a99fe3SHajimu UMEMOTO {
39306a99fe3SHajimu UMEMOTO 
39406a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_response);
39506a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_RESPONSE);
39606a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_response);
39706a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_response);
39806a99fe3SHajimu UMEMOTO }
39906a99fe3SHajimu UMEMOTO 
40006a99fe3SHajimu UMEMOTO void
40106a99fe3SHajimu UMEMOTO init_cache_mp_write_session_write_request(
40206a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_request *mp_ws_write_request)
40306a99fe3SHajimu UMEMOTO {
40406a99fe3SHajimu UMEMOTO 
40506a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_write_request);
40606a99fe3SHajimu UMEMOTO 	memset(mp_ws_write_request, 0,
40706a99fe3SHajimu UMEMOTO 		sizeof(struct cache_mp_write_session_write_request));
40806a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_write_response);
40906a99fe3SHajimu UMEMOTO }
41006a99fe3SHajimu UMEMOTO 
41106a99fe3SHajimu UMEMOTO void
41206a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_write_request(
41306a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_request *mp_ws_write_request)
41406a99fe3SHajimu UMEMOTO {
41506a99fe3SHajimu UMEMOTO 
41606a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_write_request);
41706a99fe3SHajimu UMEMOTO 	free(mp_ws_write_request->data);
41806a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_write_request);
41906a99fe3SHajimu UMEMOTO }
42006a99fe3SHajimu UMEMOTO 
42106a99fe3SHajimu UMEMOTO struct cache_mp_write_session_write_request *
42206a99fe3SHajimu UMEMOTO get_cache_mp_write_session_write_request(struct comm_element *element)
42306a99fe3SHajimu UMEMOTO {
42406a99fe3SHajimu UMEMOTO 
42506a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_write_request);
42606a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_WRITE_REQUEST);
42706a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_write_request);
42806a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_write_request);
42906a99fe3SHajimu UMEMOTO }
43006a99fe3SHajimu UMEMOTO 
43106a99fe3SHajimu UMEMOTO void
43206a99fe3SHajimu UMEMOTO init_cache_mp_write_session_write_response(
43306a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_response *mp_ws_write_response)
43406a99fe3SHajimu UMEMOTO {
43506a99fe3SHajimu UMEMOTO 
43606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_write_response);
43706a99fe3SHajimu UMEMOTO 	memset(mp_ws_write_response, 0,
43806a99fe3SHajimu UMEMOTO 		sizeof(struct cache_mp_write_session_write_response));
43906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_write_response);
44006a99fe3SHajimu UMEMOTO }
44106a99fe3SHajimu UMEMOTO 
44206a99fe3SHajimu UMEMOTO void
44306a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_write_response(
44406a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_response *mp_ws_write_response)
44506a99fe3SHajimu UMEMOTO {
44606a99fe3SHajimu UMEMOTO 
44706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_write_response);
44806a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_write_response);
44906a99fe3SHajimu UMEMOTO }
45006a99fe3SHajimu UMEMOTO 
45106a99fe3SHajimu UMEMOTO struct cache_mp_write_session_write_response *
45206a99fe3SHajimu UMEMOTO get_cache_mp_write_session_write_response(struct comm_element *element)
45306a99fe3SHajimu UMEMOTO {
45406a99fe3SHajimu UMEMOTO 
45506a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_write_response);
45606a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_WRITE_RESPONSE);
45706a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_write_response);
45806a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_write_response);
45906a99fe3SHajimu UMEMOTO }
46006a99fe3SHajimu UMEMOTO 
46106a99fe3SHajimu UMEMOTO void
46206a99fe3SHajimu UMEMOTO init_cache_mp_read_session_request(
46306a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_request *mp_rs_request)
46406a99fe3SHajimu UMEMOTO {
46506a99fe3SHajimu UMEMOTO 
46606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_read_session_request);
46706a99fe3SHajimu UMEMOTO 	memset(mp_rs_request, 0, sizeof(struct cache_mp_read_session_request));
46806a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_read_session_request);
46906a99fe3SHajimu UMEMOTO }
47006a99fe3SHajimu UMEMOTO 
47106a99fe3SHajimu UMEMOTO void
47206a99fe3SHajimu UMEMOTO finalize_cache_mp_read_session_request(
47306a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_request *mp_rs_request)
47406a99fe3SHajimu UMEMOTO {
47506a99fe3SHajimu UMEMOTO 
47606a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_read_session_request);
47706a99fe3SHajimu UMEMOTO 	free(mp_rs_request->entry);
47806a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_read_session_request);
47906a99fe3SHajimu UMEMOTO }
48006a99fe3SHajimu UMEMOTO 
48106a99fe3SHajimu UMEMOTO struct cache_mp_read_session_request *
48206a99fe3SHajimu UMEMOTO get_cache_mp_read_session_request(struct comm_element *element)
48306a99fe3SHajimu UMEMOTO {
48406a99fe3SHajimu UMEMOTO 
48506a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_read_session_request);
48606a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_READ_SESSION_REQUEST);
48706a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_read_session_request);
48806a99fe3SHajimu UMEMOTO 	return (&element->c_mp_rs_request);
48906a99fe3SHajimu UMEMOTO }
49006a99fe3SHajimu UMEMOTO 
49106a99fe3SHajimu UMEMOTO void
49206a99fe3SHajimu UMEMOTO init_cache_mp_read_session_response(
49306a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_response *mp_rs_response)
49406a99fe3SHajimu UMEMOTO {
49506a99fe3SHajimu UMEMOTO 
49606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_read_session_response);
49706a99fe3SHajimu UMEMOTO 	memset(mp_rs_response, 0,
49806a99fe3SHajimu UMEMOTO     		sizeof(struct cache_mp_read_session_response));
49906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_read_session_response);
50006a99fe3SHajimu UMEMOTO }
50106a99fe3SHajimu UMEMOTO 
50206a99fe3SHajimu UMEMOTO void
50306a99fe3SHajimu UMEMOTO finalize_cache_mp_read_session_response(
50406a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_response *mp_rs_response)
50506a99fe3SHajimu UMEMOTO {
50606a99fe3SHajimu UMEMOTO 
50706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_read_session_response);
50806a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_read_session_response);
50906a99fe3SHajimu UMEMOTO }
51006a99fe3SHajimu UMEMOTO 
51106a99fe3SHajimu UMEMOTO struct cache_mp_read_session_response *
51206a99fe3SHajimu UMEMOTO get_cache_mp_read_session_response(struct comm_element *element)
51306a99fe3SHajimu UMEMOTO {
51406a99fe3SHajimu UMEMOTO 
51506a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_read_session_response);
51606a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_READ_SESSION_RESPONSE);
51706a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_read_session_response);
51806a99fe3SHajimu UMEMOTO 	return (&element->c_mp_rs_response);
51906a99fe3SHajimu UMEMOTO }
52006a99fe3SHajimu UMEMOTO 
52106a99fe3SHajimu UMEMOTO void
52206a99fe3SHajimu UMEMOTO init_cache_mp_read_session_read_response(
52306a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_read_response *mp_ws_read_response)
52406a99fe3SHajimu UMEMOTO {
52506a99fe3SHajimu UMEMOTO 
52606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_read_session_read_response);
52706a99fe3SHajimu UMEMOTO 	memset(mp_ws_read_response, 0,
52806a99fe3SHajimu UMEMOTO 		sizeof(struct cache_mp_read_session_read_response));
52906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_read_session_read_response);
53006a99fe3SHajimu UMEMOTO }
53106a99fe3SHajimu UMEMOTO 
53206a99fe3SHajimu UMEMOTO void
53306a99fe3SHajimu UMEMOTO finalize_cache_mp_read_session_read_response(
53406a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_read_response *mp_rs_read_response)
53506a99fe3SHajimu UMEMOTO {
53606a99fe3SHajimu UMEMOTO 
53706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_read_session_read_response);
53806a99fe3SHajimu UMEMOTO 	free(mp_rs_read_response->data);
53906a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_read_session_read_response);
54006a99fe3SHajimu UMEMOTO }
54106a99fe3SHajimu UMEMOTO 
54206a99fe3SHajimu UMEMOTO struct cache_mp_read_session_read_response *
54306a99fe3SHajimu UMEMOTO get_cache_mp_read_session_read_response(struct comm_element *element)
54406a99fe3SHajimu UMEMOTO {
54506a99fe3SHajimu UMEMOTO 
54606a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_read_session_read_response);
54706a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_READ_SESSION_READ_RESPONSE);
54806a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_read_session_read_response);
54906a99fe3SHajimu UMEMOTO 	return (&element->c_mp_rs_read_response);
55006a99fe3SHajimu UMEMOTO }
551