xref: /freebsd/usr.sbin/nscd/protocol.c (revision a5a5d924d237e1dd18cf4ce8eca4317c14940dd6)
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>
34a5a5d924SDag-Erling Smørgrav 
3506a99fe3SHajimu UMEMOTO #include "debug.h"
3606a99fe3SHajimu UMEMOTO #include "log.h"
3706a99fe3SHajimu UMEMOTO #include "protocol.h"
3806a99fe3SHajimu UMEMOTO 
3906a99fe3SHajimu UMEMOTO /*
4006a99fe3SHajimu UMEMOTO  * Initializes the comm_element with any given type of data
4106a99fe3SHajimu UMEMOTO  */
4206a99fe3SHajimu UMEMOTO void
4306a99fe3SHajimu UMEMOTO init_comm_element(struct comm_element *element, enum comm_element_t type)
4406a99fe3SHajimu UMEMOTO {
4506a99fe3SHajimu UMEMOTO 
4606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_comm_element);
4706a99fe3SHajimu UMEMOTO 	memset(element, 0, sizeof(struct comm_element));
4806a99fe3SHajimu UMEMOTO 
4906a99fe3SHajimu UMEMOTO 	switch (type) {
5006a99fe3SHajimu UMEMOTO 	case CET_WRITE_REQUEST:
5106a99fe3SHajimu UMEMOTO 		init_cache_write_request(&element->c_write_request);
5206a99fe3SHajimu UMEMOTO 		break;
5306a99fe3SHajimu UMEMOTO 	case CET_WRITE_RESPONSE:
5406a99fe3SHajimu UMEMOTO 		init_cache_write_response(&element->c_write_response);
5506a99fe3SHajimu UMEMOTO 		break;
5606a99fe3SHajimu UMEMOTO 	case CET_READ_REQUEST:
5706a99fe3SHajimu UMEMOTO 		init_cache_read_request(&element->c_read_request);
5806a99fe3SHajimu UMEMOTO 		break;
5906a99fe3SHajimu UMEMOTO 	case CET_READ_RESPONSE:
6006a99fe3SHajimu UMEMOTO 		init_cache_read_response(&element->c_read_response);
6106a99fe3SHajimu UMEMOTO 		break;
6206a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_REQUEST:
6306a99fe3SHajimu UMEMOTO 		init_cache_transform_request(&element->c_transform_request);
6406a99fe3SHajimu UMEMOTO 		break;
6506a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_RESPONSE:
6606a99fe3SHajimu UMEMOTO 		init_cache_transform_response(&element->c_transform_response);
6706a99fe3SHajimu UMEMOTO 		break;
6806a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_REQUEST:
6906a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_request(&element->c_mp_ws_request);
7006a99fe3SHajimu UMEMOTO 		break;
7106a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_RESPONSE:
7206a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_response(&element->c_mp_ws_response);
7306a99fe3SHajimu UMEMOTO 		break;
7406a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_REQUEST:
7506a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_write_request(
7606a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_request);
7706a99fe3SHajimu UMEMOTO 		break;
7806a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_RESPONSE:
7906a99fe3SHajimu UMEMOTO 		init_cache_mp_write_session_write_response(
8006a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_response);
8106a99fe3SHajimu UMEMOTO 		break;
8206a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_REQUEST:
8306a99fe3SHajimu UMEMOTO 		init_cache_mp_read_session_request(&element->c_mp_rs_request);
8406a99fe3SHajimu UMEMOTO 		break;
8506a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_RESPONSE:
8606a99fe3SHajimu UMEMOTO 		init_cache_mp_read_session_response(&element->c_mp_rs_response);
8706a99fe3SHajimu UMEMOTO 		break;
8806a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_READ_RESPONSE:
8906a99fe3SHajimu UMEMOTO 		init_cache_mp_read_session_read_response(
9006a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_read_response);
9106a99fe3SHajimu UMEMOTO 		break;
9206a99fe3SHajimu UMEMOTO 	case CET_UNDEFINED:
9306a99fe3SHajimu UMEMOTO 		break;
9406a99fe3SHajimu UMEMOTO 	default:
9506a99fe3SHajimu UMEMOTO 		LOG_ERR_2("init_comm_element", "invalid communication element");
9606a99fe3SHajimu UMEMOTO 		TRACE_OUT(init_comm_element);
9706a99fe3SHajimu UMEMOTO 	return;
9806a99fe3SHajimu UMEMOTO 	}
9906a99fe3SHajimu UMEMOTO 
10006a99fe3SHajimu UMEMOTO 	element->type = type;
10106a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_comm_element);
10206a99fe3SHajimu UMEMOTO }
10306a99fe3SHajimu UMEMOTO 
10406a99fe3SHajimu UMEMOTO void
10506a99fe3SHajimu UMEMOTO finalize_comm_element(struct comm_element *element)
10606a99fe3SHajimu UMEMOTO {
10706a99fe3SHajimu UMEMOTO 
10806a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_comm_element);
10906a99fe3SHajimu UMEMOTO 	switch (element->type) {
11006a99fe3SHajimu UMEMOTO 	case CET_WRITE_REQUEST:
11106a99fe3SHajimu UMEMOTO 		finalize_cache_write_request(&element->c_write_request);
11206a99fe3SHajimu UMEMOTO 		break;
11306a99fe3SHajimu UMEMOTO 	case CET_WRITE_RESPONSE:
11406a99fe3SHajimu UMEMOTO 		finalize_cache_write_response(&element->c_write_response);
11506a99fe3SHajimu UMEMOTO 		break;
11606a99fe3SHajimu UMEMOTO 	case CET_READ_REQUEST:
11706a99fe3SHajimu UMEMOTO 		finalize_cache_read_request(&element->c_read_request);
11806a99fe3SHajimu UMEMOTO 		break;
11906a99fe3SHajimu UMEMOTO 	case CET_READ_RESPONSE:
12006a99fe3SHajimu UMEMOTO 		finalize_cache_read_response(&element->c_read_response);
12106a99fe3SHajimu UMEMOTO 		break;
12206a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_REQUEST:
12306a99fe3SHajimu UMEMOTO 		finalize_cache_transform_request(&element->c_transform_request);
12406a99fe3SHajimu UMEMOTO 		break;
12506a99fe3SHajimu UMEMOTO 	case CET_TRANSFORM_RESPONSE:
12606a99fe3SHajimu UMEMOTO 		finalize_cache_transform_response(
12706a99fe3SHajimu UMEMOTO 			&element->c_transform_response);
12806a99fe3SHajimu UMEMOTO 		break;
12906a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_REQUEST:
13006a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_request(
13106a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_request);
13206a99fe3SHajimu UMEMOTO 		break;
13306a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_RESPONSE:
13406a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_response(
13506a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_response);
13606a99fe3SHajimu UMEMOTO 		break;
13706a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_REQUEST:
13806a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_write_request(
13906a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_request);
14006a99fe3SHajimu UMEMOTO 		break;
14106a99fe3SHajimu UMEMOTO 	case CET_MP_WRITE_SESSION_WRITE_RESPONSE:
14206a99fe3SHajimu UMEMOTO 		finalize_cache_mp_write_session_write_response(
14306a99fe3SHajimu UMEMOTO 			&element->c_mp_ws_write_response);
14406a99fe3SHajimu UMEMOTO 		break;
14506a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_REQUEST:
14606a99fe3SHajimu UMEMOTO 		finalize_cache_mp_read_session_request(
14706a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_request);
14806a99fe3SHajimu UMEMOTO 		break;
14906a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_RESPONSE:
15006a99fe3SHajimu UMEMOTO 		finalize_cache_mp_read_session_response(
15106a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_response);
15206a99fe3SHajimu UMEMOTO 		break;
15306a99fe3SHajimu UMEMOTO 	case CET_MP_READ_SESSION_READ_RESPONSE:
15406a99fe3SHajimu UMEMOTO 		finalize_cache_mp_read_session_read_response(
15506a99fe3SHajimu UMEMOTO 			&element->c_mp_rs_read_response);
15606a99fe3SHajimu UMEMOTO 		break;
15706a99fe3SHajimu UMEMOTO 	case CET_UNDEFINED:
15806a99fe3SHajimu UMEMOTO 		break;
15906a99fe3SHajimu UMEMOTO 	default:
16006a99fe3SHajimu UMEMOTO 	break;
16106a99fe3SHajimu UMEMOTO 	}
16206a99fe3SHajimu UMEMOTO 
16306a99fe3SHajimu UMEMOTO 	element->type = CET_UNDEFINED;
16406a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_comm_element);
16506a99fe3SHajimu UMEMOTO }
16606a99fe3SHajimu UMEMOTO 
16706a99fe3SHajimu UMEMOTO void
16806a99fe3SHajimu UMEMOTO init_cache_write_request(struct cache_write_request *write_request)
16906a99fe3SHajimu UMEMOTO {
17006a99fe3SHajimu UMEMOTO 
17106a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_write_request);
17206a99fe3SHajimu UMEMOTO 	memset(write_request, 0, sizeof(struct cache_write_request));
17306a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_write_request);
17406a99fe3SHajimu UMEMOTO }
17506a99fe3SHajimu UMEMOTO 
17606a99fe3SHajimu UMEMOTO void
17706a99fe3SHajimu UMEMOTO finalize_cache_write_request(struct cache_write_request *write_request)
17806a99fe3SHajimu UMEMOTO {
17906a99fe3SHajimu UMEMOTO 
18006a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_write_request);
18106a99fe3SHajimu UMEMOTO 	free(write_request->entry);
18206a99fe3SHajimu UMEMOTO 	free(write_request->cache_key);
18306a99fe3SHajimu UMEMOTO 	free(write_request->data);
18406a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_write_request);
18506a99fe3SHajimu UMEMOTO }
18606a99fe3SHajimu UMEMOTO 
18706a99fe3SHajimu UMEMOTO struct cache_write_request *
18806a99fe3SHajimu UMEMOTO get_cache_write_request(struct comm_element *element)
18906a99fe3SHajimu UMEMOTO {
19006a99fe3SHajimu UMEMOTO 
19106a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_write_request);
19206a99fe3SHajimu UMEMOTO 	assert(element->type == CET_WRITE_REQUEST);
19306a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_write_request);
19406a99fe3SHajimu UMEMOTO 	return (&element->c_write_request);
19506a99fe3SHajimu UMEMOTO }
19606a99fe3SHajimu UMEMOTO 
19706a99fe3SHajimu UMEMOTO void
19806a99fe3SHajimu UMEMOTO init_cache_write_response(struct cache_write_response *write_response)
19906a99fe3SHajimu UMEMOTO {
20006a99fe3SHajimu UMEMOTO 
20106a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_write_response);
20206a99fe3SHajimu UMEMOTO 	memset(write_response, 0, sizeof(struct cache_write_response));
20306a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_write_response);
20406a99fe3SHajimu UMEMOTO }
20506a99fe3SHajimu UMEMOTO 
20606a99fe3SHajimu UMEMOTO void
20706a99fe3SHajimu UMEMOTO finalize_cache_write_response(struct cache_write_response *write_response)
20806a99fe3SHajimu UMEMOTO {
20906a99fe3SHajimu UMEMOTO 
21006a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_write_response);
21106a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_write_response);
21206a99fe3SHajimu UMEMOTO }
21306a99fe3SHajimu UMEMOTO 
21406a99fe3SHajimu UMEMOTO struct cache_write_response *
21506a99fe3SHajimu UMEMOTO get_cache_write_response(struct comm_element *element)
21606a99fe3SHajimu UMEMOTO {
21706a99fe3SHajimu UMEMOTO 
21806a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_write_response);
21906a99fe3SHajimu UMEMOTO 	assert(element->type == CET_WRITE_RESPONSE);
22006a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_write_response);
22106a99fe3SHajimu UMEMOTO 	return (&element->c_write_response);
22206a99fe3SHajimu UMEMOTO }
22306a99fe3SHajimu UMEMOTO 
22406a99fe3SHajimu UMEMOTO void
22506a99fe3SHajimu UMEMOTO init_cache_read_request(struct cache_read_request *read_request)
22606a99fe3SHajimu UMEMOTO {
22706a99fe3SHajimu UMEMOTO 
22806a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_read_request);
22906a99fe3SHajimu UMEMOTO 	memset(read_request, 0, sizeof(struct cache_read_request));
23006a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_read_request);
23106a99fe3SHajimu UMEMOTO }
23206a99fe3SHajimu UMEMOTO 
23306a99fe3SHajimu UMEMOTO void
23406a99fe3SHajimu UMEMOTO finalize_cache_read_request(struct cache_read_request *read_request)
23506a99fe3SHajimu UMEMOTO {
23606a99fe3SHajimu UMEMOTO 
23706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_read_request);
23806a99fe3SHajimu UMEMOTO 	free(read_request->entry);
23906a99fe3SHajimu UMEMOTO 	free(read_request->cache_key);
24006a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_read_request);
24106a99fe3SHajimu UMEMOTO }
24206a99fe3SHajimu UMEMOTO 
24306a99fe3SHajimu UMEMOTO struct cache_read_request *
24406a99fe3SHajimu UMEMOTO get_cache_read_request(struct comm_element *element)
24506a99fe3SHajimu UMEMOTO {
24606a99fe3SHajimu UMEMOTO 
24706a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_read_request);
24806a99fe3SHajimu UMEMOTO 	assert(element->type == CET_READ_REQUEST);
24906a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_read_request);
25006a99fe3SHajimu UMEMOTO 	return (&element->c_read_request);
25106a99fe3SHajimu UMEMOTO }
25206a99fe3SHajimu UMEMOTO 
25306a99fe3SHajimu UMEMOTO void
25406a99fe3SHajimu UMEMOTO init_cache_read_response(struct cache_read_response *read_response)
25506a99fe3SHajimu UMEMOTO {
25606a99fe3SHajimu UMEMOTO 
25706a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_read_response);
25806a99fe3SHajimu UMEMOTO 	memset(read_response, 0, sizeof(struct cache_read_response));
25906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_read_response);
26006a99fe3SHajimu UMEMOTO }
26106a99fe3SHajimu UMEMOTO 
26206a99fe3SHajimu UMEMOTO void
26306a99fe3SHajimu UMEMOTO finalize_cache_read_response(struct cache_read_response *read_response)
26406a99fe3SHajimu UMEMOTO {
26506a99fe3SHajimu UMEMOTO 
26606a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_read_response);
26706a99fe3SHajimu UMEMOTO 	free(read_response->data);
26806a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_read_response);
26906a99fe3SHajimu UMEMOTO }
27006a99fe3SHajimu UMEMOTO 
27106a99fe3SHajimu UMEMOTO struct cache_read_response *
27206a99fe3SHajimu UMEMOTO get_cache_read_response(struct comm_element *element)
27306a99fe3SHajimu UMEMOTO {
27406a99fe3SHajimu UMEMOTO 
27506a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_read_response);
27606a99fe3SHajimu UMEMOTO 	assert(element->type == CET_READ_RESPONSE);
27706a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_read_response);
27806a99fe3SHajimu UMEMOTO 	return (&element->c_read_response);
27906a99fe3SHajimu UMEMOTO }
28006a99fe3SHajimu UMEMOTO 
28106a99fe3SHajimu UMEMOTO void
28206a99fe3SHajimu UMEMOTO init_cache_transform_request(struct cache_transform_request *transform_request)
28306a99fe3SHajimu UMEMOTO {
28406a99fe3SHajimu UMEMOTO 
28506a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_transform_request);
28606a99fe3SHajimu UMEMOTO 	memset(transform_request, 0, sizeof(struct cache_transform_request));
28706a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_transform_request);
28806a99fe3SHajimu UMEMOTO }
28906a99fe3SHajimu UMEMOTO 
29006a99fe3SHajimu UMEMOTO void
29106a99fe3SHajimu UMEMOTO finalize_cache_transform_request(
29206a99fe3SHajimu UMEMOTO 	struct cache_transform_request *transform_request)
29306a99fe3SHajimu UMEMOTO {
29406a99fe3SHajimu UMEMOTO 
29506a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_transform_request);
29606a99fe3SHajimu UMEMOTO 	free(transform_request->entry);
29706a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_transform_request);
29806a99fe3SHajimu UMEMOTO }
29906a99fe3SHajimu UMEMOTO 
30006a99fe3SHajimu UMEMOTO struct cache_transform_request *
30106a99fe3SHajimu UMEMOTO get_cache_transform_request(struct comm_element *element)
30206a99fe3SHajimu UMEMOTO {
30306a99fe3SHajimu UMEMOTO 
30406a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_transform_request);
30506a99fe3SHajimu UMEMOTO 	assert(element->type == CET_TRANSFORM_REQUEST);
30606a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_transform_request);
30706a99fe3SHajimu UMEMOTO 	return (&element->c_transform_request);
30806a99fe3SHajimu UMEMOTO }
30906a99fe3SHajimu UMEMOTO 
31006a99fe3SHajimu UMEMOTO void
31106a99fe3SHajimu UMEMOTO init_cache_transform_response(
31206a99fe3SHajimu UMEMOTO 	struct cache_transform_response *transform_response)
31306a99fe3SHajimu UMEMOTO {
31406a99fe3SHajimu UMEMOTO 
31506a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_transform_request);
31606a99fe3SHajimu UMEMOTO 	memset(transform_response, 0, sizeof(struct cache_transform_response));
31706a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_transform_request);
31806a99fe3SHajimu UMEMOTO }
31906a99fe3SHajimu UMEMOTO 
32006a99fe3SHajimu UMEMOTO void
32106a99fe3SHajimu UMEMOTO finalize_cache_transform_response(
32206a99fe3SHajimu UMEMOTO 	struct cache_transform_response *transform_response)
32306a99fe3SHajimu UMEMOTO {
32406a99fe3SHajimu UMEMOTO 
32506a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_transform_response);
32606a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_transform_response);
32706a99fe3SHajimu UMEMOTO }
32806a99fe3SHajimu UMEMOTO 
32906a99fe3SHajimu UMEMOTO struct cache_transform_response *
33006a99fe3SHajimu UMEMOTO get_cache_transform_response(struct comm_element *element)
33106a99fe3SHajimu UMEMOTO {
33206a99fe3SHajimu UMEMOTO 
33306a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_transform_response);
33406a99fe3SHajimu UMEMOTO 	assert(element->type == CET_TRANSFORM_RESPONSE);
33506a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_transform_response);
33606a99fe3SHajimu UMEMOTO 	return (&element->c_transform_response);
33706a99fe3SHajimu UMEMOTO }
33806a99fe3SHajimu UMEMOTO 
33906a99fe3SHajimu UMEMOTO 
34006a99fe3SHajimu UMEMOTO void
34106a99fe3SHajimu UMEMOTO init_cache_mp_write_session_request(
34206a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_request *mp_ws_request)
34306a99fe3SHajimu UMEMOTO {
34406a99fe3SHajimu UMEMOTO 
34506a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_request);
34606a99fe3SHajimu UMEMOTO 	memset(mp_ws_request, 0,
34706a99fe3SHajimu UMEMOTO     		sizeof(struct cache_mp_write_session_request));
34806a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_request);
34906a99fe3SHajimu UMEMOTO }
35006a99fe3SHajimu UMEMOTO 
35106a99fe3SHajimu UMEMOTO void
35206a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_request(
35306a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_request *mp_ws_request)
35406a99fe3SHajimu UMEMOTO {
35506a99fe3SHajimu UMEMOTO 
35606a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_request);
35706a99fe3SHajimu UMEMOTO 	free(mp_ws_request->entry);
35806a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_request);
35906a99fe3SHajimu UMEMOTO }
36006a99fe3SHajimu UMEMOTO 
36106a99fe3SHajimu UMEMOTO struct cache_mp_write_session_request *
36206a99fe3SHajimu UMEMOTO get_cache_mp_write_session_request(struct comm_element *element)
36306a99fe3SHajimu UMEMOTO {
36406a99fe3SHajimu UMEMOTO 
36506a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_request);
36606a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_REQUEST);
36706a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_request);
36806a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_request);
36906a99fe3SHajimu UMEMOTO }
37006a99fe3SHajimu UMEMOTO 
37106a99fe3SHajimu UMEMOTO void
37206a99fe3SHajimu UMEMOTO init_cache_mp_write_session_response(
37306a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_response *mp_ws_response)
37406a99fe3SHajimu UMEMOTO {
37506a99fe3SHajimu UMEMOTO 
37606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_response);
37706a99fe3SHajimu UMEMOTO 	memset(mp_ws_response, 0,
37806a99fe3SHajimu UMEMOTO     		sizeof(struct cache_mp_write_session_response));
37906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_response);
38006a99fe3SHajimu UMEMOTO }
38106a99fe3SHajimu UMEMOTO 
38206a99fe3SHajimu UMEMOTO void
38306a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_response(
38406a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_response *mp_ws_response)
38506a99fe3SHajimu UMEMOTO {
38606a99fe3SHajimu UMEMOTO 
38706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_response);
38806a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_response);
38906a99fe3SHajimu UMEMOTO }
39006a99fe3SHajimu UMEMOTO 
39106a99fe3SHajimu UMEMOTO struct cache_mp_write_session_response *
39206a99fe3SHajimu UMEMOTO get_cache_mp_write_session_response(struct comm_element *element)
39306a99fe3SHajimu UMEMOTO {
39406a99fe3SHajimu UMEMOTO 
39506a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_response);
39606a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_RESPONSE);
39706a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_response);
39806a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_response);
39906a99fe3SHajimu UMEMOTO }
40006a99fe3SHajimu UMEMOTO 
40106a99fe3SHajimu UMEMOTO void
40206a99fe3SHajimu UMEMOTO init_cache_mp_write_session_write_request(
40306a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_request *mp_ws_write_request)
40406a99fe3SHajimu UMEMOTO {
40506a99fe3SHajimu UMEMOTO 
40606a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_write_request);
40706a99fe3SHajimu UMEMOTO 	memset(mp_ws_write_request, 0,
40806a99fe3SHajimu UMEMOTO 		sizeof(struct cache_mp_write_session_write_request));
40906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_write_response);
41006a99fe3SHajimu UMEMOTO }
41106a99fe3SHajimu UMEMOTO 
41206a99fe3SHajimu UMEMOTO void
41306a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_write_request(
41406a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_request *mp_ws_write_request)
41506a99fe3SHajimu UMEMOTO {
41606a99fe3SHajimu UMEMOTO 
41706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_write_request);
41806a99fe3SHajimu UMEMOTO 	free(mp_ws_write_request->data);
41906a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_write_request);
42006a99fe3SHajimu UMEMOTO }
42106a99fe3SHajimu UMEMOTO 
42206a99fe3SHajimu UMEMOTO struct cache_mp_write_session_write_request *
42306a99fe3SHajimu UMEMOTO get_cache_mp_write_session_write_request(struct comm_element *element)
42406a99fe3SHajimu UMEMOTO {
42506a99fe3SHajimu UMEMOTO 
42606a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_write_request);
42706a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_WRITE_REQUEST);
42806a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_write_request);
42906a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_write_request);
43006a99fe3SHajimu UMEMOTO }
43106a99fe3SHajimu UMEMOTO 
43206a99fe3SHajimu UMEMOTO void
43306a99fe3SHajimu UMEMOTO init_cache_mp_write_session_write_response(
43406a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_response *mp_ws_write_response)
43506a99fe3SHajimu UMEMOTO {
43606a99fe3SHajimu UMEMOTO 
43706a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_write_session_write_response);
43806a99fe3SHajimu UMEMOTO 	memset(mp_ws_write_response, 0,
43906a99fe3SHajimu UMEMOTO 		sizeof(struct cache_mp_write_session_write_response));
44006a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_write_session_write_response);
44106a99fe3SHajimu UMEMOTO }
44206a99fe3SHajimu UMEMOTO 
44306a99fe3SHajimu UMEMOTO void
44406a99fe3SHajimu UMEMOTO finalize_cache_mp_write_session_write_response(
44506a99fe3SHajimu UMEMOTO 	struct cache_mp_write_session_write_response *mp_ws_write_response)
44606a99fe3SHajimu UMEMOTO {
44706a99fe3SHajimu UMEMOTO 
44806a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_write_session_write_response);
44906a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_write_session_write_response);
45006a99fe3SHajimu UMEMOTO }
45106a99fe3SHajimu UMEMOTO 
45206a99fe3SHajimu UMEMOTO struct cache_mp_write_session_write_response *
45306a99fe3SHajimu UMEMOTO get_cache_mp_write_session_write_response(struct comm_element *element)
45406a99fe3SHajimu UMEMOTO {
45506a99fe3SHajimu UMEMOTO 
45606a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_write_session_write_response);
45706a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_WRITE_SESSION_WRITE_RESPONSE);
45806a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_write_session_write_response);
45906a99fe3SHajimu UMEMOTO 	return (&element->c_mp_ws_write_response);
46006a99fe3SHajimu UMEMOTO }
46106a99fe3SHajimu UMEMOTO 
46206a99fe3SHajimu UMEMOTO void
46306a99fe3SHajimu UMEMOTO init_cache_mp_read_session_request(
46406a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_request *mp_rs_request)
46506a99fe3SHajimu UMEMOTO {
46606a99fe3SHajimu UMEMOTO 
46706a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_read_session_request);
46806a99fe3SHajimu UMEMOTO 	memset(mp_rs_request, 0, sizeof(struct cache_mp_read_session_request));
46906a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_read_session_request);
47006a99fe3SHajimu UMEMOTO }
47106a99fe3SHajimu UMEMOTO 
47206a99fe3SHajimu UMEMOTO void
47306a99fe3SHajimu UMEMOTO finalize_cache_mp_read_session_request(
47406a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_request *mp_rs_request)
47506a99fe3SHajimu UMEMOTO {
47606a99fe3SHajimu UMEMOTO 
47706a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_read_session_request);
47806a99fe3SHajimu UMEMOTO 	free(mp_rs_request->entry);
47906a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_read_session_request);
48006a99fe3SHajimu UMEMOTO }
48106a99fe3SHajimu UMEMOTO 
48206a99fe3SHajimu UMEMOTO struct cache_mp_read_session_request *
48306a99fe3SHajimu UMEMOTO get_cache_mp_read_session_request(struct comm_element *element)
48406a99fe3SHajimu UMEMOTO {
48506a99fe3SHajimu UMEMOTO 
48606a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_read_session_request);
48706a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_READ_SESSION_REQUEST);
48806a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_read_session_request);
48906a99fe3SHajimu UMEMOTO 	return (&element->c_mp_rs_request);
49006a99fe3SHajimu UMEMOTO }
49106a99fe3SHajimu UMEMOTO 
49206a99fe3SHajimu UMEMOTO void
49306a99fe3SHajimu UMEMOTO init_cache_mp_read_session_response(
49406a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_response *mp_rs_response)
49506a99fe3SHajimu UMEMOTO {
49606a99fe3SHajimu UMEMOTO 
49706a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_read_session_response);
49806a99fe3SHajimu UMEMOTO 	memset(mp_rs_response, 0,
49906a99fe3SHajimu UMEMOTO     		sizeof(struct cache_mp_read_session_response));
50006a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_read_session_response);
50106a99fe3SHajimu UMEMOTO }
50206a99fe3SHajimu UMEMOTO 
50306a99fe3SHajimu UMEMOTO void
50406a99fe3SHajimu UMEMOTO finalize_cache_mp_read_session_response(
50506a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_response *mp_rs_response)
50606a99fe3SHajimu UMEMOTO {
50706a99fe3SHajimu UMEMOTO 
50806a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_read_session_response);
50906a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_read_session_response);
51006a99fe3SHajimu UMEMOTO }
51106a99fe3SHajimu UMEMOTO 
51206a99fe3SHajimu UMEMOTO struct cache_mp_read_session_response *
51306a99fe3SHajimu UMEMOTO get_cache_mp_read_session_response(struct comm_element *element)
51406a99fe3SHajimu UMEMOTO {
51506a99fe3SHajimu UMEMOTO 
51606a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_read_session_response);
51706a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_READ_SESSION_RESPONSE);
51806a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_read_session_response);
51906a99fe3SHajimu UMEMOTO 	return (&element->c_mp_rs_response);
52006a99fe3SHajimu UMEMOTO }
52106a99fe3SHajimu UMEMOTO 
52206a99fe3SHajimu UMEMOTO void
52306a99fe3SHajimu UMEMOTO init_cache_mp_read_session_read_response(
52406a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_read_response *mp_ws_read_response)
52506a99fe3SHajimu UMEMOTO {
52606a99fe3SHajimu UMEMOTO 
52706a99fe3SHajimu UMEMOTO 	TRACE_IN(init_cache_mp_read_session_read_response);
52806a99fe3SHajimu UMEMOTO 	memset(mp_ws_read_response, 0,
52906a99fe3SHajimu UMEMOTO 		sizeof(struct cache_mp_read_session_read_response));
53006a99fe3SHajimu UMEMOTO 	TRACE_OUT(init_cache_mp_read_session_read_response);
53106a99fe3SHajimu UMEMOTO }
53206a99fe3SHajimu UMEMOTO 
53306a99fe3SHajimu UMEMOTO void
53406a99fe3SHajimu UMEMOTO finalize_cache_mp_read_session_read_response(
53506a99fe3SHajimu UMEMOTO 	struct cache_mp_read_session_read_response *mp_rs_read_response)
53606a99fe3SHajimu UMEMOTO {
53706a99fe3SHajimu UMEMOTO 
53806a99fe3SHajimu UMEMOTO 	TRACE_IN(finalize_cache_mp_read_session_read_response);
53906a99fe3SHajimu UMEMOTO 	free(mp_rs_read_response->data);
54006a99fe3SHajimu UMEMOTO 	TRACE_OUT(finalize_cache_mp_read_session_read_response);
54106a99fe3SHajimu UMEMOTO }
54206a99fe3SHajimu UMEMOTO 
54306a99fe3SHajimu UMEMOTO struct cache_mp_read_session_read_response *
54406a99fe3SHajimu UMEMOTO get_cache_mp_read_session_read_response(struct comm_element *element)
54506a99fe3SHajimu UMEMOTO {
54606a99fe3SHajimu UMEMOTO 
54706a99fe3SHajimu UMEMOTO 	TRACE_IN(get_cache_mp_read_session_read_response);
54806a99fe3SHajimu UMEMOTO 	assert(element->type == CET_MP_READ_SESSION_READ_RESPONSE);
54906a99fe3SHajimu UMEMOTO 	TRACE_OUT(get_cache_mp_read_session_read_response);
55006a99fe3SHajimu UMEMOTO 	return (&element->c_mp_rs_read_response);
55106a99fe3SHajimu UMEMOTO }
552