Home | History | Annotate | Download | only in vki
      1 /*--------------------------------------------------------------------*/
      2 /*--- Solaris-specific kernel interface for the repository cache   ---*/
      3 /*--- protocol.                             vki-solaris-repcache.h ---*/
      4 /*--------------------------------------------------------------------*/
      5 
      6 /*
      7    This file is part of Valgrind, a dynamic binary instrumentation
      8    framework.
      9 
     10    Copyright (C) 2015-2017 Ivo Raisr
     11       ivosh (at) ivosh.net
     12 
     13    This program is free software; you can redistribute it and/or
     14    modify it under the terms of the GNU General Public License as
     15    published by the Free Software Foundation; either version 2 of the
     16    License, or (at your option) any later version.
     17 
     18    This program is distributed in the hope that it will be useful, but
     19    WITHOUT ANY WARRANTY; without even the implied warranty of
     20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     21    General Public License for more details.
     22 
     23    You should have received a copy of the GNU General Public License
     24    along with this program; if not, write to the Free Software
     25    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
     26    02111-1307, USA.
     27 
     28    The GNU General Public License is contained in the file COPYING.
     29 */
     30 
     31 /* Copyright 2015-2017, Tomas Jedlicka <jedlickat (at) gmail.com>. */
     32 
     33 #ifndef __VKI_SOLARIS_REPCACHE_H
     34 #define __VKI_SOLARIS_REPCACHE_H
     35 
     36 /* From <repcache_protocol.h> which is consolidation private. */
     37 #define VKI_REPOSITORY_DOOR_BASEVER (('R' << 24) | ('e' << 16) | ('p' << 8))
     38 
     39 #if (SOLARIS_REPCACHE_PROTOCOL_VERSION == 21)
     40 #define VKI_REPOSITORY_DOOR_VERSION (21 + VKI_REPOSITORY_DOOR_BASEVER)
     41 enum vki_rep_protocol_requestid {
     42    VKI_REP_PROTOCOL_CLOSE = ('C' << 8),
     43    VKI_REP_PROTOCOL_ENTITY_SETUP,
     44    VKI_REP_PROTOCOL_ENTITY_NAME,
     45    VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE,
     46    VKI_REP_PROTOCOL_ENTITY_GET_CHILD,
     47    VKI_REP_PROTOCOL_ENTITY_GET_PARENT,
     48    VKI_REP_PROTOCOL_ENTITY_GET,
     49    VKI_REP_PROTOCOL_ENTITY_UPDATE,
     50    VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD,
     51    VKI_REP_PROTOCOL_ENTITY_CREATE_PG,
     52    VKI_REP_PROTOCOL_ENTITY_DELETE,
     53    VKI_REP_PROTOCOL_ENTITY_RESET,
     54    VKI_REP_PROTOCOL_ENTITY_TEARDOWN,
     55    VKI_REP_PROTOCOL_ITER_SETUP,
     56    VKI_REP_PROTOCOL_ITER_START,
     57    VKI_REP_PROTOCOL_ITER_READ,
     58    VKI_REP_PROTOCOL_ITER_READ_VALUE,
     59    VKI_REP_PROTOCOL_ITER_RESET,
     60    VKI_REP_PROTOCOL_ITER_TEARDOWN,
     61    VKI_REP_PROTOCOL_NEXT_SNAPLEVEL,
     62    VKI_REP_PROTOCOL_SNAPSHOT_TAKE,
     63    VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED,
     64    VKI_REP_PROTOCOL_SNAPSHOT_ATTACH,
     65    VKI_REP_PROTOCOL_PROPERTY_GET_TYPE,
     66    VKI_REP_PROTOCOL_PROPERTY_GET_VALUE,
     67    VKI_REP_PROTOCOL_PROPERTYGRP_SETUP_WAIT,
     68    VKI_REP_PROTOCOL_PROPERTYGRP_TX_START,
     69    VKI_REP_PROTOCOL_PROPERTYGRP_TX_COMMIT,
     70    VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY,
     71    VKI_REP_PROTOCOL_CLIENT_WAIT,
     72    VKI_REP_PROTOCOL_BACKUP,
     73    VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION,
     74    VKI_REP_PROTOCOL_SWITCH,
     75 };
     76 #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 23)
     77 #define VKI_REPOSITORY_DOOR_VERSION (23 + VKI_REPOSITORY_DOOR_BASEVER)
     78 enum vki_rep_protocol_requestid {
     79    VKI_REP_PROTOCOL_CLOSE = ('C' << 8),
     80    VKI_REP_PROTOCOL_ENTITY_SETUP,
     81    VKI_REP_PROTOCOL_ENTITY_NAME,
     82    VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE,
     83    VKI_REP_PROTOCOL_ENTITY_GET_CHILD,
     84    VKI_REP_PROTOCOL_ENTITY_GET_PARENT,
     85    VKI_REP_PROTOCOL_ENTITY_GET,
     86    VKI_REP_PROTOCOL_ENTITY_UPDATE,
     87    VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD,
     88    VKI_REP_PROTOCOL_ENTITY_CREATE_PG,
     89    VKI_REP_PROTOCOL_ENTITY_DELETE,
     90    VKI_REP_PROTOCOL_ENTITY_UNDELETE,
     91    VKI_REP_PROTOCOL_ENTITY_REMOVE,
     92    VKI_REP_PROTOCOL_ENTITY_DELCUST,
     93    VKI_REP_PROTOCOL_BUNDLE_REMOVE,
     94    VKI_REP_PROTOCOL_ENTITY_RESET,
     95    VKI_REP_PROTOCOL_ENTITY_TEARDOWN,
     96    VKI_REP_PROTOCOL_ITER_SETUP,
     97    VKI_REP_PROTOCOL_ITER_START,
     98    VKI_REP_PROTOCOL_ITER_READ,
     99    VKI_REP_PROTOCOL_ITER_READ_VALUE,
    100    VKI_REP_PROTOCOL_ITER_RESET,
    101    VKI_REP_PROTOCOL_ITER_TEARDOWN,
    102    VKI_REP_PROTOCOL_NEXT_SNAPLEVEL,
    103    VKI_REP_PROTOCOL_SNAPSHOT_TAKE,
    104    VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED,
    105    VKI_REP_PROTOCOL_SNAPSHOT_ATTACH,
    106    VKI_REP_PROTOCOL_PROPERTY_GET_TYPE,
    107    VKI_REP_PROTOCOL_PROPERTY_GET_VALUE,
    108    VKI_REP_PROTOCOL_PG_SETUP_WAIT,
    109    VKI_REP_PROTOCOL_PG_TX_START,
    110    VKI_REP_PROTOCOL_PG_TX_COMMIT,
    111    VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE,
    112    VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY,
    113    VKI_REP_PROTOCOL_CLIENT_WAIT,
    114    VKI_REP_PROTOCOL_BACKUP,
    115    VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION,
    116    VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION,
    117    VKI_REP_PROTOCOL_SET_TX_DECORATION,
    118    VKI_REP_PROTOCOL_SWITCH,
    119    VKI_REP_PROTOCOL_DECORATION_GET_LAYER,
    120    VKI_REP_PROTOCOL_DECORATION_GET_TYPE,
    121    VKI_REP_PROTOCOL_DECORATION_GET_VALUE,
    122    VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE,
    123    VKI_REP_PROTOCOL_ENTITY_INCONFLICT,
    124    VKI_REP_PROTOCOL_ENTITY_IS_MASKED,
    125    VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY,
    126 };
    127 #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 25)
    128 #define VKI_REPOSITORY_DOOR_VERSION (25 + VKI_REPOSITORY_DOOR_BASEVER)
    129 enum vki_rep_protocol_requestid {
    130    VKI_REP_PROTOCOL_CLOSE = ('C' << 8),
    131    VKI_REP_PROTOCOL_ENTITY_SETUP,
    132    VKI_REP_PROTOCOL_ENTITY_NAME,
    133    VKI_REP_PROTOCOL_ENTITY_FMRI,
    134    VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE,
    135    VKI_REP_PROTOCOL_ENTITY_GET_CHILD,
    136    VKI_REP_PROTOCOL_ENTITY_GET_PARENT,
    137    VKI_REP_PROTOCOL_ENTITY_GET_ROOT,
    138    VKI_REP_PROTOCOL_ENTITY_GET,
    139    VKI_REP_PROTOCOL_ENTITY_UPDATE,
    140    VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD,
    141    VKI_REP_PROTOCOL_ENTITY_CREATE_PG,
    142    VKI_REP_PROTOCOL_ENTITY_DELETE,
    143    VKI_REP_PROTOCOL_ENTITY_UNDELETE,
    144    VKI_REP_PROTOCOL_ENTITY_REMOVE,
    145    VKI_REP_PROTOCOL_ENTITY_DELCUST,
    146    VKI_REP_PROTOCOL_BUNDLE_REMOVE,
    147    VKI_REP_PROTOCOL_ENTITY_RESET,
    148    VKI_REP_PROTOCOL_ENTITY_TEARDOWN,
    149    VKI_REP_PROTOCOL_ITER_SETUP,
    150    VKI_REP_PROTOCOL_ITER_START,
    151    VKI_REP_PROTOCOL_ITER_READ,
    152    VKI_REP_PROTOCOL_ITER_READ_VALUE,
    153    VKI_REP_PROTOCOL_ITER_RESET,
    154    VKI_REP_PROTOCOL_ITER_TEARDOWN,
    155    VKI_REP_PROTOCOL_NEXT_SNAPLEVEL,
    156    VKI_REP_PROTOCOL_SNAPSHOT_TAKE,
    157    VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED,
    158    VKI_REP_PROTOCOL_SNAPSHOT_ATTACH,
    159    VKI_REP_PROTOCOL_PROPERTY_GET_TYPE,
    160    VKI_REP_PROTOCOL_PROPERTY_GET_VALUE,
    161    VKI_REP_PROTOCOL_PG_SETUP_WAIT,
    162    VKI_REP_PROTOCOL_PG_TX_START,
    163    VKI_REP_PROTOCOL_PG_TX_COMMIT,
    164    VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE,
    165    VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY,
    166    VKI_REP_PROTOCOL_CLIENT_WAIT,
    167    VKI_REP_PROTOCOL_BACKUP,
    168    VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION,
    169    VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION,
    170    VKI_REP_PROTOCOL_SET_TX_DECORATION,
    171    VKI_REP_PROTOCOL_SWITCH,
    172    VKI_REP_PROTOCOL_DECORATION_GET_LAYER,
    173    VKI_REP_PROTOCOL_DECORATION_GET_TYPE,
    174    VKI_REP_PROTOCOL_DECORATION_GET_VALUE,
    175    VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE,
    176    VKI_REP_PROTOCOL_ENTITY_INCONFLICT,
    177    VKI_REP_PROTOCOL_ENTITY_IS_MASKED,
    178    VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY,
    179 };
    180 #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 26)
    181 #define VKI_REPOSITORY_DOOR_VERSION (26 + VKI_REPOSITORY_DOOR_BASEVER)
    182 enum vki_rep_protocol_requestid {
    183    VKI_REP_PROTOCOL_CLOSE = ('C' << 8),
    184    VKI_REP_PROTOCOL_ENTITY_SETUP,
    185    VKI_REP_PROTOCOL_ENTITY_NAME,
    186    VKI_REP_PROTOCOL_ENTITY_FMRI,
    187    VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE,
    188    VKI_REP_PROTOCOL_ENTITY_GET_CHILD,
    189    VKI_REP_PROTOCOL_ENTITY_GET_PARENT,
    190    VKI_REP_PROTOCOL_ENTITY_GET_ROOT,
    191    VKI_REP_PROTOCOL_ENTITY_GET,
    192    VKI_REP_PROTOCOL_ENTITY_UPDATE,
    193    VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD,
    194    VKI_REP_PROTOCOL_ENTITY_CREATE_PG,
    195    VKI_REP_PROTOCOL_ENTITY_DELETE,
    196    VKI_REP_PROTOCOL_ENTITY_UNDELETE,
    197    VKI_REP_PROTOCOL_ENTITY_REMOVE,
    198    VKI_REP_PROTOCOL_ENTITY_DELCUST,
    199    VKI_REP_PROTOCOL_BUNDLE_REMOVE,
    200    VKI_REP_PROTOCOL_ENTITY_RESET,
    201    VKI_REP_PROTOCOL_ENTITY_TEARDOWN,
    202    VKI_REP_PROTOCOL_ITER_SETUP,
    203    VKI_REP_PROTOCOL_ITER_START,
    204    VKI_REP_PROTOCOL_ITER_READ,
    205    VKI_REP_PROTOCOL_ITER_READ_VALUE,
    206    VKI_REP_PROTOCOL_ITER_RESET,
    207    VKI_REP_PROTOCOL_ITER_TEARDOWN,
    208    VKI_REP_PROTOCOL_NEXT_SNAPLEVEL,
    209    VKI_REP_PROTOCOL_SNAPSHOT_TAKE,
    210    VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED,
    211    VKI_REP_PROTOCOL_SNAPSHOT_ATTACH,
    212    VKI_REP_PROTOCOL_PROPERTY_GET_TYPE,
    213    VKI_REP_PROTOCOL_PROPERTY_GET_VALUE,
    214    VKI_REP_PROTOCOL_PG_SETUP_WAIT,
    215    VKI_REP_PROTOCOL_PG_TX_START,
    216    VKI_REP_PROTOCOL_PG_TX_COMMIT,
    217    VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE,
    218    VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY,
    219    VKI_REP_PROTOCOL_CLIENT_WAIT,
    220    VKI_REP_PROTOCOL_BACKUP,
    221    VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION,
    222    VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION,
    223    VKI_REP_PROTOCOL_SET_TX_DECORATION,
    224    VKI_REP_PROTOCOL_SWITCH,
    225    VKI_REP_PROTOCOL_DECORATION_GET_LAYER,
    226    VKI_REP_PROTOCOL_DECORATION_GET_TYPE,
    227    VKI_REP_PROTOCOL_DECORATION_GET_VALUE,
    228    VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE,
    229    VKI_REP_PROTOCOL_ENTITY_INCONFLICT,
    230    VKI_REP_PROTOCOL_ENTITY_IS_MASKED,
    231    VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY,
    232    VKI_REP_PROTOCOL_MAX_REQUEST
    233 };
    234 #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 27)
    235 #define VKI_REPOSITORY_DOOR_VERSION (27 + VKI_REPOSITORY_DOOR_BASEVER)
    236 enum vki_rep_protocol_requestid {
    237    VKI_REP_PROTOCOL_CLOSE = ('C' << 8),
    238    VKI_REP_PROTOCOL_ENTITY_SETUP,
    239    VKI_REP_PROTOCOL_ENTITY_NAME,
    240    VKI_REP_PROTOCOL_ENTITY_FMRI,
    241    VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE,
    242    VKI_REP_PROTOCOL_ENTITY_GET_CHILD,
    243    VKI_REP_PROTOCOL_ENTITY_GET_PARENT,
    244    VKI_REP_PROTOCOL_ENTITY_GET_ROOT,
    245    VKI_REP_PROTOCOL_ENTITY_GET,
    246    VKI_REP_PROTOCOL_ENTITY_UPDATE,
    247    VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD,
    248    VKI_REP_PROTOCOL_ENTITY_CREATE_PG,
    249    VKI_REP_PROTOCOL_ENTITY_DELETE,
    250    VKI_REP_PROTOCOL_ENTITY_UNDELETE,
    251    VKI_REP_PROTOCOL_ENTITY_REMOVE,
    252    VKI_REP_PROTOCOL_ENTITY_DELCUST,
    253    VKI_REP_PROTOCOL_BUNDLE_REMOVE,
    254    VKI_REP_PROTOCOL_ENTITY_RESET,
    255    VKI_REP_PROTOCOL_ENTITY_TEARDOWN,
    256    VKI_REP_PROTOCOL_ITER_SETUP,
    257    VKI_REP_PROTOCOL_ITER_START,
    258    VKI_REP_PROTOCOL_ITER_READ,
    259    VKI_REP_PROTOCOL_ITER_READ_VALUE,
    260    VKI_REP_PROTOCOL_ITER_RESET,
    261    VKI_REP_PROTOCOL_ITER_TEARDOWN,
    262    VKI_REP_PROTOCOL_NEXT_SNAPLEVEL,
    263    VKI_REP_PROTOCOL_SNAPSHOT_TAKE,
    264    VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED,
    265    VKI_REP_PROTOCOL_SNAPSHOT_ATTACH,
    266    VKI_REP_PROTOCOL_PROPERTY_GET_TYPE,
    267    VKI_REP_PROTOCOL_PROPERTY_GET_VALUE,
    268    VKI_REP_PROTOCOL_PG_SETUP_WAIT,
    269    VKI_REP_PROTOCOL_PG_TX_START,
    270    VKI_REP_PROTOCOL_PG_TX_COMMIT,
    271    VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE,
    272    VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY,
    273    VKI_REP_PROTOCOL_CLIENT_WAIT,
    274    VKI_REP_PROTOCOL_BACKUP,
    275    VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION,
    276    VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION,
    277    VKI_REP_PROTOCOL_SET_TX_DECORATION,
    278    VKI_REP_PROTOCOL_SWITCH,
    279    VKI_REP_PROTOCOL_DECORATION_GET_LAYER,
    280    VKI_REP_PROTOCOL_DECORATION_GET_TYPE,
    281    VKI_REP_PROTOCOL_DECORATION_GET_VALUE,
    282    VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE,
    283    VKI_REP_PROTOCOL_ENTITY_INCONFLICT,
    284    VKI_REP_PROTOCOL_ENTITY_IS_MASKED,
    285    VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY,
    286    VKI_REP_PROTOCOL_MAX_REQUEST
    287 };
    288 #elif (SOLARIS_REPCACHE_PROTOCOL_VERSION == 31)
    289 #define VKI_REPOSITORY_DOOR_VERSION (31 + VKI_REPOSITORY_DOOR_BASEVER)
    290 enum vki_rep_protocol_requestid {
    291    VKI_REP_PROTOCOL_CLOSE = ('C' << 8),
    292    VKI_REP_PROTOCOL_ENTITY_SETUP,
    293    VKI_REP_PROTOCOL_ENTITY_NAME,
    294    VKI_REP_PROTOCOL_ENTITY_PARENT_TYPE,
    295    VKI_REP_PROTOCOL_ENTITY_GET_CHILD,
    296    VKI_REP_PROTOCOL_ENTITY_GET_CHILD_COMPOSED,
    297    VKI_REP_PROTOCOL_ENTITY_GET_PARENT,
    298    VKI_REP_PROTOCOL_ENTITY_GET_ROOT,
    299    VKI_REP_PROTOCOL_ENTITY_GET,
    300    VKI_REP_PROTOCOL_ENTITY_UPDATE,
    301    VKI_REP_PROTOCOL_ENTITY_CREATE_CHILD,
    302    VKI_REP_PROTOCOL_ENTITY_CREATE_PG,
    303    VKI_REP_PROTOCOL_ENTITY_DELETE,
    304    VKI_REP_PROTOCOL_ENTITY_UNDELETE,
    305    VKI_REP_PROTOCOL_ENTITY_REMOVE,
    306    VKI_REP_PROTOCOL_ENTITY_DELCUST,
    307    VKI_REP_PROTOCOL_BUNDLE_REMOVE,
    308    VKI_REP_PROTOCOL_ENTITY_RESET,
    309    VKI_REP_PROTOCOL_ENTITY_TEARDOWN,
    310    VKI_REP_PROTOCOL_ITER_SETUP,
    311    VKI_REP_PROTOCOL_ITER_START,
    312    VKI_REP_PROTOCOL_ITER_READ,
    313    VKI_REP_PROTOCOL_ITER_READ_VALUE,
    314    VKI_REP_PROTOCOL_ITER_RESET,
    315    VKI_REP_PROTOCOL_ITER_TEARDOWN,
    316    VKI_REP_PROTOCOL_NEXT_SNAPLEVEL,
    317    VKI_REP_PROTOCOL_SNAPSHOT_TAKE,
    318    VKI_REP_PROTOCOL_SNAPSHOT_TAKE_NAMED,
    319    VKI_REP_PROTOCOL_SNAPSHOT_ATTACH,
    320    VKI_REP_PROTOCOL_PROPERTY_GET_TYPE,
    321    VKI_REP_PROTOCOL_PROPERTY_GET_VALUE,
    322    VKI_REP_PROTOCOL_PG_SETUP_WAIT,
    323    VKI_REP_PROTOCOL_PG_TX_START,
    324    VKI_REP_PROTOCOL_PG_TX_COMMIT,
    325    VKI_REP_PROTOCOL_PROP_BUNDLE_REMOVE,
    326    VKI_REP_PROTOCOL_CLIENT_ADD_NOTIFY,
    327    VKI_REP_PROTOCOL_CLIENT_WAIT,
    328    VKI_REP_PROTOCOL_BACKUP,
    329    VKI_REP_PROTOCOL_SET_AUDIT_ANNOTATION,
    330    VKI_REP_PROTOCOL_UNSET_AUDIT_ANNOTATION,
    331    VKI_REP_PROTOCOL_SET_LAYER,
    332    VKI_REP_PROTOCOL_SWITCH,
    333    VKI_REP_PROTOCOL_DECORATION_GET_LAYER,
    334    VKI_REP_PROTOCOL_DECORATION_GET_TYPE,
    335    VKI_REP_PROTOCOL_DECORATION_GET_VALUE,
    336    VKI_REP_PROTOCOL_DECORATION_GET_BUNDLE,
    337    VKI_REP_PROTOCOL_ENTITY_INCONFLICT,
    338    VKI_REP_PROTOCOL_ENTITY_IS_MASKED,
    339    VKI_REP_PROTOCOL_CLIENT_REMOVE_NOTIFY,
    340    VKI_REP_PROTOCOL_MAX_REQUEST
    341 };
    342 #else
    343 #error Unsupported repcache protocol version
    344 #endif
    345 
    346 /* The following definitions are currently stable across all repcache protocol
    347    versions. If there is any change to them, they need to be versioned
    348    properly so that Valgrind works on older versions. */
    349 
    350 #define VKI_REPOSITORY_DOOR_NAME "/system/volatile/repository_door"
    351 #define VKI_REP_PROTOCOL_NAME_LEN 120
    352 typedef vki_uint32_t vki_repcache_entity_id_t;
    353 enum vki_repository_door_requestid {
    354    VKI_REPOSITORY_DOOR_REQUEST_CONNECT = (('M' << 8) | 1)
    355 };
    356 enum vki_repository_door_statusid {
    357    VKI_REPOSITORY_DOOR_SUCCESS                = 0,
    358    VKI_REPOSITORY_DOOR_FAIL_BAD_REQUEST       = 1,
    359    VKI_REPOSITORY_DOOR_FAIL_VERSION_MISMATCH  = 2,
    360    VKI_REPOSITORY_DOOR_FAIL_BAD_FLAG          = 3,
    361    VKI_REPOSITORY_DOOR_FAIL_NO_RESOURCES      = 4,
    362    VKI_REPOSITORY_DOOR_FAIL_PERMISSION_DENIED = 5
    363 };
    364 typedef struct vki_repository_door_request {
    365    vki_uint32_t rdr_version;
    366    enum vki_repository_door_requestid rdr_request;
    367    vki_uint32_t rdr_flags;
    368    vki_uint32_t rdr_debug;
    369 } vki_repository_door_request_t;
    370 typedef struct vki_repository_door_response {
    371    enum vki_repository_door_statusid rdr_status;
    372 } vki_repository_door_response_t;
    373 typedef struct vki_rep_protocol_request {
    374    enum vki_rep_protocol_requestid rpr_request;
    375 } vki_rep_protocol_request_t;
    376 struct vki_rep_protocol_entity_setup {
    377    enum vki_rep_protocol_requestid rpr_request;
    378    vki_repcache_entity_id_t rpr_entityid;
    379    vki_uint32_t rpr_entitytype;
    380 };
    381 struct vki_rep_protocol_entity_name {
    382    enum vki_rep_protocol_requestid rpr_request;
    383    vki_repcache_entity_id_t rpr_entityid;
    384    vki_uint32_t rpr_answertype;
    385 };
    386 struct vki_rep_protocol_entity_fmri {
    387    enum vki_rep_protocol_requestid rpr_request;
    388    vki_repcache_entity_id_t rpr_entityid;
    389 };
    390 struct vki_rep_protocol_entity_get {
    391    enum vki_rep_protocol_requestid rpr_request;
    392    vki_repcache_entity_id_t rpr_entityid;
    393    vki_uint32_t rpr_object;
    394 };
    395 struct vki_rep_protocol_entity_get_child {
    396    enum vki_rep_protocol_requestid rpr_request;
    397    vki_repcache_entity_id_t rpr_entityid;
    398    vki_repcache_entity_id_t rpr_childid;
    399    char rpr_name[VKI_REP_PROTOCOL_NAME_LEN];
    400 };
    401 struct vki_rep_protocol_entity_parent {
    402    enum vki_rep_protocol_requestid rpr_request;
    403    vki_repcache_entity_id_t rpr_entityid;
    404    vki_repcache_entity_id_t rpr_outid;
    405 };
    406 struct vki_rep_protocol_entity_root {
    407    enum vki_rep_protocol_requestid rpr_request;
    408    vki_repcache_entity_id_t rpr_entityid;
    409    vki_repcache_entity_id_t rpr_outid;
    410 };
    411 struct vki_rep_protocol_entity_reset {
    412    enum vki_rep_protocol_requestid rpr_request;
    413    vki_repcache_entity_id_t rpr_entityid;
    414 };
    415 struct vki_rep_protocol_entity_teardown {
    416    enum vki_rep_protocol_requestid rpr_request;
    417    vki_repcache_entity_id_t rpr_entityid;
    418 };
    419 struct vki_rep_protocol_iter_read {
    420    enum vki_rep_protocol_requestid rpr_request;
    421    vki_uint32_t rpr_iterid;
    422    vki_uint32_t rpr_sequence;
    423    vki_repcache_entity_id_t rpr_entityid;
    424 };
    425 struct vki_rep_protocol_iter_read_value {
    426    enum vki_rep_protocol_requestid rpr_request;
    427    vki_uint32_t rpr_iterid;
    428    vki_uint32_t rpr_sequence;
    429 };
    430 struct vki_rep_protocol_iter_request {
    431    enum vki_rep_protocol_requestid rpr_request;
    432    vki_uint32_t rpr_iterid;
    433 };
    434 struct vki_rep_protocol_iter_start {
    435    enum vki_rep_protocol_requestid rpr_request;
    436    vki_uint32_t rpr_iterid;
    437    vki_repcache_entity_id_t rpr_entity;
    438    vki_uint32_t rpr_itertype;
    439    vki_uint32_t rpr_flags;
    440    char rpr_pattern[VKI_REP_PROTOCOL_NAME_LEN];
    441 };
    442 struct vki_rep_protocol_property_request {
    443    enum vki_rep_protocol_requestid rpr_request;
    444    vki_repcache_entity_id_t rpr_entityid;
    445 };
    446 
    447 
    448 
    449 
    450 #endif /* __VKI_SOLARIS_REPCACHE_H */
    451