/*--------------------------------------------------------------------*/ /*--- Solaris-specific kernel interface for the repository cache ---*/ /*--- protocol. vki-solaris-repcache.h ---*/ /*--------------------------------------------------------------------*/ /* This file is part of Valgrind, a dynamic binary instrumentation framework. Copyright (C) 2015-2017 Ivo Raisr ivosh@ivosh.net This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. The GNU General Public License is contained in the file COPYING. */ /* Copyright 2015-2017, Tomas Jedlicka <jedlickat@gmail.com>. */ #ifndef __VKI_SOLARIS_REPCACHE_H #define __VKI_SOLARIS_REPCACHE_H /* From <repcache_protocol.h> which is consolidation private. */ #define VKI_REPOSITORY_DOOR_BASEVER (('R' << 24) | ('e' << 16) | ('p' << 8)) #if (SOLARIS_REPCACHE_PROTOCOL_VERSION == 21) #define VKI_REPOSITORY_DOOR_VERSION (21 + VKI_REPOSITORY_DOOR_BASEVER) enum vki_rep_protocol_requestid { VKI_REP_PROTOCOL_CLOSE = ('C' << 8), VKI_REP_PROTOCOL_ENTITY_SETUP, VKI_REP_PROTOCOL_ENTITY_NAME, VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE, VKI_REP_PROTOCOL_ENTITY_GET_CHILD, VKI_REP_PROTOCOL_ENTITY_GET_PARENT, VKI_REP_PROTOCOL_ENTITY_GET, VKI_REP_PROTOCOL_ENTITY_UPDATE, VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD, VKI_REP_PROTOCOL_ENTITY_CREATE_PG, VKI_REP_PROTOCOL_ENTITY_DELETE, VKI_REP_PROTOCOL_ENTITY_RESET, VKI_REP_PROTOCOL_ENTITY_TEARDOWN, VKI_REP_PROTOCOL_ITER_SETUP, VKI_REP_PROTOCOL_ITER_START, VKI_REP_PROTOCOL_ITER_READ, VKI_REP_PROTOCOL_ITER_READ_VALUE, VKI_REP_PROTOCOL_ITER_RESET, VKI_REP_PROTOCOL_ITER_TEARDOWN, VKI_REP_PROTOCOL_NEXT_SNAPLEVEL, VKI_REP_PROTOCOL_SNAPSHOT_TAKE, VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED, VKI_REP_PROTOCOL_SNAPSHOT_ATTACH, VKI_REP_PROTOCOL_PROPERTY_GET_TYPE, VKI_REP_PROTOCOL_PROPERTY_GET_VALUE, VKI_REP_PROTOCOL_PROPERTYGRP_SETUP_WAIT, VKI_REP_PROTOCOL_PROPERTYGRP_TX_START, VKI_REP_PROTOCOL_PROPERTYGRP_TX_COMMIT, VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY, VKI_REP_PROTOCOL_CLIENT_WAIT, VKI_REP_PROTOCOL_BACKUP, VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_SWITCH, }; #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 23) #define VKI_REPOSITORY_DOOR_VERSION (23 + VKI_REPOSITORY_DOOR_BASEVER) enum vki_rep_protocol_requestid { VKI_REP_PROTOCOL_CLOSE = ('C' << 8), VKI_REP_PROTOCOL_ENTITY_SETUP, VKI_REP_PROTOCOL_ENTITY_NAME, VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE, VKI_REP_PROTOCOL_ENTITY_GET_CHILD, VKI_REP_PROTOCOL_ENTITY_GET_PARENT, VKI_REP_PROTOCOL_ENTITY_GET, VKI_REP_PROTOCOL_ENTITY_UPDATE, VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD, VKI_REP_PROTOCOL_ENTITY_CREATE_PG, VKI_REP_PROTOCOL_ENTITY_DELETE, VKI_REP_PROTOCOL_ENTITY_UNDELETE, VKI_REP_PROTOCOL_ENTITY_REMOVE, VKI_REP_PROTOCOL_ENTITY_DELCUST, VKI_REP_PROTOCOL_BUNDLE_REMOVE, VKI_REP_PROTOCOL_ENTITY_RESET, VKI_REP_PROTOCOL_ENTITY_TEARDOWN, VKI_REP_PROTOCOL_ITER_SETUP, VKI_REP_PROTOCOL_ITER_START, VKI_REP_PROTOCOL_ITER_READ, VKI_REP_PROTOCOL_ITER_READ_VALUE, VKI_REP_PROTOCOL_ITER_RESET, VKI_REP_PROTOCOL_ITER_TEARDOWN, VKI_REP_PROTOCOL_NEXT_SNAPLEVEL, VKI_REP_PROTOCOL_SNAPSHOT_TAKE, VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED, VKI_REP_PROTOCOL_SNAPSHOT_ATTACH, VKI_REP_PROTOCOL_PROPERTY_GET_TYPE, VKI_REP_PROTOCOL_PROPERTY_GET_VALUE, VKI_REP_PROTOCOL_PG_SETUP_WAIT, VKI_REP_PROTOCOL_PG_TX_START, VKI_REP_PROTOCOL_PG_TX_COMMIT, VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE, VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY, VKI_REP_PROTOCOL_CLIENT_WAIT, VKI_REP_PROTOCOL_BACKUP, VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_SET_TX_DECORATION, VKI_REP_PROTOCOL_SWITCH, VKI_REP_PROTOCOL_DECORATION_GET_LAYER, VKI_REP_PROTOCOL_DECORATION_GET_TYPE, VKI_REP_PROTOCOL_DECORATION_GET_VALUE, VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE, VKI_REP_PROTOCOL_ENTITY_INCONFLICT, VKI_REP_PROTOCOL_ENTITY_IS_MASKED, VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY, }; #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 25) #define VKI_REPOSITORY_DOOR_VERSION (25 + VKI_REPOSITORY_DOOR_BASEVER) enum vki_rep_protocol_requestid { VKI_REP_PROTOCOL_CLOSE = ('C' << 8), VKI_REP_PROTOCOL_ENTITY_SETUP, VKI_REP_PROTOCOL_ENTITY_NAME, VKI_REP_PROTOCOL_ENTITY_FMRI, VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE, VKI_REP_PROTOCOL_ENTITY_GET_CHILD, VKI_REP_PROTOCOL_ENTITY_GET_PARENT, VKI_REP_PROTOCOL_ENTITY_GET_ROOT, VKI_REP_PROTOCOL_ENTITY_GET, VKI_REP_PROTOCOL_ENTITY_UPDATE, VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD, VKI_REP_PROTOCOL_ENTITY_CREATE_PG, VKI_REP_PROTOCOL_ENTITY_DELETE, VKI_REP_PROTOCOL_ENTITY_UNDELETE, VKI_REP_PROTOCOL_ENTITY_REMOVE, VKI_REP_PROTOCOL_ENTITY_DELCUST, VKI_REP_PROTOCOL_BUNDLE_REMOVE, VKI_REP_PROTOCOL_ENTITY_RESET, VKI_REP_PROTOCOL_ENTITY_TEARDOWN, VKI_REP_PROTOCOL_ITER_SETUP, VKI_REP_PROTOCOL_ITER_START, VKI_REP_PROTOCOL_ITER_READ, VKI_REP_PROTOCOL_ITER_READ_VALUE, VKI_REP_PROTOCOL_ITER_RESET, VKI_REP_PROTOCOL_ITER_TEARDOWN, VKI_REP_PROTOCOL_NEXT_SNAPLEVEL, VKI_REP_PROTOCOL_SNAPSHOT_TAKE, VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED, VKI_REP_PROTOCOL_SNAPSHOT_ATTACH, VKI_REP_PROTOCOL_PROPERTY_GET_TYPE, VKI_REP_PROTOCOL_PROPERTY_GET_VALUE, VKI_REP_PROTOCOL_PG_SETUP_WAIT, VKI_REP_PROTOCOL_PG_TX_START, VKI_REP_PROTOCOL_PG_TX_COMMIT, VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE, VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY, VKI_REP_PROTOCOL_CLIENT_WAIT, VKI_REP_PROTOCOL_BACKUP, VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_SET_TX_DECORATION, VKI_REP_PROTOCOL_SWITCH, VKI_REP_PROTOCOL_DECORATION_GET_LAYER, VKI_REP_PROTOCOL_DECORATION_GET_TYPE, VKI_REP_PROTOCOL_DECORATION_GET_VALUE, VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE, VKI_REP_PROTOCOL_ENTITY_INCONFLICT, VKI_REP_PROTOCOL_ENTITY_IS_MASKED, VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY, }; #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 26) #define VKI_REPOSITORY_DOOR_VERSION (26 + VKI_REPOSITORY_DOOR_BASEVER) enum vki_rep_protocol_requestid { VKI_REP_PROTOCOL_CLOSE = ('C' << 8), VKI_REP_PROTOCOL_ENTITY_SETUP, VKI_REP_PROTOCOL_ENTITY_NAME, VKI_REP_PROTOCOL_ENTITY_FMRI, VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE, VKI_REP_PROTOCOL_ENTITY_GET_CHILD, VKI_REP_PROTOCOL_ENTITY_GET_PARENT, VKI_REP_PROTOCOL_ENTITY_GET_ROOT, VKI_REP_PROTOCOL_ENTITY_GET, VKI_REP_PROTOCOL_ENTITY_UPDATE, VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD, VKI_REP_PROTOCOL_ENTITY_CREATE_PG, VKI_REP_PROTOCOL_ENTITY_DELETE, VKI_REP_PROTOCOL_ENTITY_UNDELETE, VKI_REP_PROTOCOL_ENTITY_REMOVE, VKI_REP_PROTOCOL_ENTITY_DELCUST, VKI_REP_PROTOCOL_BUNDLE_REMOVE, VKI_REP_PROTOCOL_ENTITY_RESET, VKI_REP_PROTOCOL_ENTITY_TEARDOWN, VKI_REP_PROTOCOL_ITER_SETUP, VKI_REP_PROTOCOL_ITER_START, VKI_REP_PROTOCOL_ITER_READ, VKI_REP_PROTOCOL_ITER_READ_VALUE, VKI_REP_PROTOCOL_ITER_RESET, VKI_REP_PROTOCOL_ITER_TEARDOWN, VKI_REP_PROTOCOL_NEXT_SNAPLEVEL, VKI_REP_PROTOCOL_SNAPSHOT_TAKE, VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED, VKI_REP_PROTOCOL_SNAPSHOT_ATTACH, VKI_REP_PROTOCOL_PROPERTY_GET_TYPE, VKI_REP_PROTOCOL_PROPERTY_GET_VALUE, VKI_REP_PROTOCOL_PG_SETUP_WAIT, VKI_REP_PROTOCOL_PG_TX_START, VKI_REP_PROTOCOL_PG_TX_COMMIT, VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE, VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY, VKI_REP_PROTOCOL_CLIENT_WAIT, VKI_REP_PROTOCOL_BACKUP, VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_SET_TX_DECORATION, VKI_REP_PROTOCOL_SWITCH, VKI_REP_PROTOCOL_DECORATION_GET_LAYER, VKI_REP_PROTOCOL_DECORATION_GET_TYPE, VKI_REP_PROTOCOL_DECORATION_GET_VALUE, VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE, VKI_REP_PROTOCOL_ENTITY_INCONFLICT, VKI_REP_PROTOCOL_ENTITY_IS_MASKED, VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY, VKI_REP_PROTOCOL_MAX_REQUEST }; #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 27) #define VKI_REPOSITORY_DOOR_VERSION (27 + VKI_REPOSITORY_DOOR_BASEVER) enum vki_rep_protocol_requestid { VKI_REP_PROTOCOL_CLOSE = ('C' << 8), VKI_REP_PROTOCOL_ENTITY_SETUP, VKI_REP_PROTOCOL_ENTITY_NAME, VKI_REP_PROTOCOL_ENTITY_FMRI, VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE, VKI_REP_PROTOCOL_ENTITY_GET_CHILD, VKI_REP_PROTOCOL_ENTITY_GET_PARENT, VKI_REP_PROTOCOL_ENTITY_GET_ROOT, VKI_REP_PROTOCOL_ENTITY_GET, VKI_REP_PROTOCOL_ENTITY_UPDATE, VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD, VKI_REP_PROTOCOL_ENTITY_CREATE_PG, VKI_REP_PROTOCOL_ENTITY_DELETE, VKI_REP_PROTOCOL_ENTITY_UNDELETE, VKI_REP_PROTOCOL_ENTITY_REMOVE, VKI_REP_PROTOCOL_ENTITY_DELCUST, VKI_REP_PROTOCOL_BUNDLE_REMOVE, VKI_REP_PROTOCOL_ENTITY_RESET, VKI_REP_PROTOCOL_ENTITY_TEARDOWN, VKI_REP_PROTOCOL_ITER_SETUP, VKI_REP_PROTOCOL_ITER_START, VKI_REP_PROTOCOL_ITER_READ, VKI_REP_PROTOCOL_ITER_READ_VALUE, VKI_REP_PROTOCOL_ITER_RESET, VKI_REP_PROTOCOL_ITER_TEARDOWN, VKI_REP_PROTOCOL_NEXT_SNAPLEVEL, VKI_REP_PROTOCOL_SNAPSHOT_TAKE, VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED, VKI_REP_PROTOCOL_SNAPSHOT_ATTACH, VKI_REP_PROTOCOL_PROPERTY_GET_TYPE, VKI_REP_PROTOCOL_PROPERTY_GET_VALUE, VKI_REP_PROTOCOL_PG_SETUP_WAIT, VKI_REP_PROTOCOL_PG_TX_START, VKI_REP_PROTOCOL_PG_TX_COMMIT, VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE, VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY, VKI_REP_PROTOCOL_CLIENT_WAIT, VKI_REP_PROTOCOL_BACKUP, VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_SET_TX_DECORATION, VKI_REP_PROTOCOL_SWITCH, VKI_REP_PROTOCOL_DECORATION_GET_LAYER, VKI_REP_PROTOCOL_DECORATION_GET_TYPE, VKI_REP_PROTOCOL_DECORATION_GET_VALUE, VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE, VKI_REP_PROTOCOL_ENTITY_INCONFLICT, VKI_REP_PROTOCOL_ENTITY_IS_MASKED, VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY, VKI_REP_PROTOCOL_MAX_REQUEST }; #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 31) #define VKI_REPOSITORY_DOOR_VERSION (31 + VKI_REPOSITORY_DOOR_BASEVER) enum vki_rep_protocol_requestid { VKI_REP_PROTOCOL_CLOSE = ('C' << 8), VKI_REP_PROTOCOL_ENTITY_SETUP, VKI_REP_PROTOCOL_ENTITY_NAME, VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE, VKI_REP_PROTOCOL_ENTITY_GET_CHILD, VKI_REP_PROTOCOL_ENTITY_GET_CHILD_COMPOSED, VKI_REP_PROTOCOL_ENTITY_GET_PARENT, VKI_REP_PROTOCOL_ENTITY_GET_ROOT, VKI_REP_PROTOCOL_ENTITY_GET, VKI_REP_PROTOCOL_ENTITY_UPDATE, VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD, VKI_REP_PROTOCOL_ENTITY_CREATE_PG, VKI_REP_PROTOCOL_ENTITY_DELETE, VKI_REP_PROTOCOL_ENTITY_UNDELETE, VKI_REP_PROTOCOL_ENTITY_REMOVE, VKI_REP_PROTOCOL_ENTITY_DELCUST, VKI_REP_PROTOCOL_BUNDLE_REMOVE, VKI_REP_PROTOCOL_ENTITY_RESET, VKI_REP_PROTOCOL_ENTITY_TEARDOWN, VKI_REP_PROTOCOL_ITER_SETUP, VKI_REP_PROTOCOL_ITER_START, VKI_REP_PROTOCOL_ITER_READ, VKI_REP_PROTOCOL_ITER_READ_VALUE, VKI_REP_PROTOCOL_ITER_RESET, VKI_REP_PROTOCOL_ITER_TEARDOWN, VKI_REP_PROTOCOL_NEXT_SNAPLEVEL, VKI_REP_PROTOCOL_SNAPSHOT_TAKE, VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED, VKI_REP_PROTOCOL_SNAPSHOT_ATTACH, VKI_REP_PROTOCOL_PROPERTY_GET_TYPE, VKI_REP_PROTOCOL_PROPERTY_GET_VALUE, VKI_REP_PROTOCOL_PG_SETUP_WAIT, VKI_REP_PROTOCOL_PG_TX_START, VKI_REP_PROTOCOL_PG_TX_COMMIT, VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE, VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY, VKI_REP_PROTOCOL_CLIENT_WAIT, VKI_REP_PROTOCOL_BACKUP, VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION, VKI_REP_PROTOCOL_SET_LAYER, VKI_REP_PROTOCOL_SWITCH, VKI_REP_PROTOCOL_DECORATION_GET_LAYER, VKI_REP_PROTOCOL_DECORATION_GET_TYPE, VKI_REP_PROTOCOL_DECORATION_GET_VALUE, VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE, VKI_REP_PROTOCOL_ENTITY_INCONFLICT, VKI_REP_PROTOCOL_ENTITY_IS_MASKED, VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY, VKI_REP_PROTOCOL_MAX_REQUEST }; #else #error Unsupported repcache protocol version #endif /* The following definitions are currently stable across all repcache protocol versions. If there is any change to them, they need to be versioned properly so that Valgrind works on older versions. */ #define VKI_REPOSITORY_DOOR_NAME "/system/volatile/repository_door" #define VKI_REP_PROTOCOL_NAME_LEN 120 typedef vki_uint32_t vki_repcache_entity_id_t; enum vki_repository_door_requestid { VKI_REPOSITORY_DOOR_REQUEST_CONNECT = (('M' << 8) | 1) }; enum vki_repository_door_statusid { VKI_REPOSITORY_DOOR_SUCCESS = 0, VKI_REPOSITORY_DOOR_FAIL_BAD_REQUEST = 1, VKI_REPOSITORY_DOOR_FAIL_VERSION_MISMATCH = 2, VKI_REPOSITORY_DOOR_FAIL_BAD_FLAG = 3, VKI_REPOSITORY_DOOR_FAIL_NO_RESOURCES = 4, VKI_REPOSITORY_DOOR_FAIL_PERMISSION_DENIED = 5 }; typedef struct vki_repository_door_request { vki_uint32_t rdr_version; enum vki_repository_door_requestid rdr_request; vki_uint32_t rdr_flags; vki_uint32_t rdr_debug; } vki_repository_door_request_t; typedef struct vki_repository_door_response { enum vki_repository_door_statusid rdr_status; } vki_repository_door_response_t; typedef struct vki_rep_protocol_request { enum vki_rep_protocol_requestid rpr_request; } vki_rep_protocol_request_t; struct vki_rep_protocol_entity_setup { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; vki_uint32_t rpr_entitytype; }; struct vki_rep_protocol_entity_name { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; vki_uint32_t rpr_answertype; }; struct vki_rep_protocol_entity_fmri { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_entity_get { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; vki_uint32_t rpr_object; }; struct vki_rep_protocol_entity_get_child { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; vki_repcache_entity_id_t rpr_childid; char rpr_name[VKI_REP_PROTOCOL_NAME_LEN]; }; struct vki_rep_protocol_entity_parent { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; vki_repcache_entity_id_t rpr_outid; }; struct vki_rep_protocol_entity_root { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; vki_repcache_entity_id_t rpr_outid; }; struct vki_rep_protocol_entity_reset { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_entity_teardown { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_iter_read { enum vki_rep_protocol_requestid rpr_request; vki_uint32_t rpr_iterid; vki_uint32_t rpr_sequence; vki_repcache_entity_id_t rpr_entityid; }; struct vki_rep_protocol_iter_read_value { enum vki_rep_protocol_requestid rpr_request; vki_uint32_t rpr_iterid; vki_uint32_t rpr_sequence; }; struct vki_rep_protocol_iter_request { enum vki_rep_protocol_requestid rpr_request; vki_uint32_t rpr_iterid; }; struct vki_rep_protocol_iter_start { enum vki_rep_protocol_requestid rpr_request; vki_uint32_t rpr_iterid; vki_repcache_entity_id_t rpr_entity; vki_uint32_t rpr_itertype; vki_uint32_t rpr_flags; char rpr_pattern[VKI_REP_PROTOCOL_NAME_LEN]; }; struct vki_rep_protocol_property_request { enum vki_rep_protocol_requestid rpr_request; vki_repcache_entity_id_t rpr_entityid; }; #endif /* __VKI_SOLARIS_REPCACHE_H */