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