1/* 2 * Please do not edit this file. 3 * It was generated using rpcgen. 4 */ 5 6#ifndef _XCOM_VP_H_RPCGEN 7#define _XCOM_VP_H_RPCGEN 8 9#include <rpc/rpc.h> 10 11 12#ifdef __cplusplus 13extern "C" { 14#endif 15 16/* Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved. 17 18 This program is free software; you can redistribute it and/or modify 19 it under the terms of the GNU General Public License, version 2.0, 20 as published by the Free Software Foundation. 21 22 This program is also distributed with certain software (including 23 but not limited to OpenSSL) that is licensed under separate terms, 24 as designated in a particular file or component or in included license 25 documentation. The authors of MySQL hereby grant you an additional 26 permission to link the program and your derivative works with the 27 separately licensed software that they have included with MySQL. 28 29 This program is distributed in the hope that it will be useful, 30 but WITHOUT ANY WARRANTY; without even the implied warranty of 31 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 32 GNU General Public License, version 2.0, for more details. 33 34 You should have received a copy of the GNU General Public License 35 along with this program; if not, write to the Free Software 36 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ 37 38#include "xcom/xcom_vp_platform.h" 39#include "xcom/xcom_limits.h" 40#include "xcom/xcom_profile.h" 41 42enum xcom_proto { 43 x_unknown_proto = 0, 44 x_1_0 = 1, 45 x_1_1 = 2, 46 x_1_2 = 3, 47 x_1_3 = 4, 48 x_1_4 = 5, 49 x_1_5 = 6, 50 x_1_6 = 7, 51 x_1_7 = 8, 52 x_1_8 = 9 53}; 54typedef enum xcom_proto xcom_proto; 55 56enum delivery_status { 57 delivery_ok = 0, 58 delivery_failure = 1 59}; 60typedef enum delivery_status delivery_status; 61 62enum cons_type { 63 cons_majority = 0, 64 cons_all = 1 65}; 66typedef enum cons_type cons_type; 67 68enum cargo_type { 69 unified_boot_type = 0, 70 xcom_boot_type = 1, 71 xcom_set_group = 2, 72 app_type = 4, 73 exit_type = 7, 74 reset_type = 8, 75 begin_trans = 9, 76 prepared_trans = 10, 77 abort_trans = 11, 78 view_msg = 12, 79 remove_reset_type = 13, 80 add_node_type = 14, 81 remove_node_type = 15, 82 enable_arbitrator = 16, 83 disable_arbitrator = 17, 84 force_config_type = 18, 85 x_terminate_and_exit = 19, 86 set_cache_limit = 20, 87 get_event_horizon_type = 21, 88 set_event_horizon_type = 22, 89 get_synode_app_data_type = 23, 90 convert_into_local_server_type = 24 91}; 92typedef enum cargo_type cargo_type; 93 94enum recover_action { 95 rec_block = 0, 96 rec_delay = 1, 97 rec_send = 2 98}; 99typedef enum recover_action recover_action; 100 101enum pax_op { 102 client_msg = 0, 103 initial_op = 1, 104 prepare_op = 2, 105 ack_prepare_op = 3, 106 ack_prepare_empty_op = 4, 107 accept_op = 5, 108 ack_accept_op = 6, 109 learn_op = 7, 110 recover_learn_op = 8, 111 multi_prepare_op = 9, 112 multi_ack_prepare_empty_op = 10, 113 multi_accept_op = 11, 114 multi_ack_accept_op = 12, 115 multi_learn_op = 13, 116 skip_op = 14, 117 i_am_alive_op = 15, 118 are_you_alive_op = 16, 119 need_boot_op = 17, 120 snapshot_op = 18, 121 die_op = 19, 122 read_op = 20, 123 gcs_snapshot_op = 21, 124 xcom_client_reply = 22, 125 tiny_learn_op = 23, 126 LAST_OP = 23 + 1 127}; 128typedef enum pax_op pax_op; 129 130enum pax_msg_type { 131 normal = 0, 132 no_op = 1, 133 multi_no_op = 2 134}; 135typedef enum pax_msg_type pax_msg_type; 136 137enum client_reply_code { 138 REQUEST_OK = 0, 139 REQUEST_FAIL = 1, 140 REQUEST_RETRY = 2 141}; 142typedef enum client_reply_code client_reply_code; 143 144enum start_t { 145 IDLE = 0, 146 BOOT = 1, 147 RECOVER = 2 148}; 149typedef enum start_t start_t; 150 151typedef uint32_t xcom_event_horizon; 152 153typedef uint32_t node_no; 154 155typedef struct { 156 u_int node_set_len; 157 bool_t *node_set_val; 158} node_set; 159 160typedef uint32_t bit_mask; 161 162struct bit_set { 163 struct { 164 u_int bits_len; 165 bit_mask *bits_val; 166 } bits; 167}; 168typedef struct bit_set bit_set; 169#define BITS_PER_BYTE 8 170#define MASK_BITS ((bit_mask)(sizeof (bit_mask) * BITS_PER_BYTE)) /* bits per mask */ 171#define howmany_words(x, y) (((x)+((y)-1))/(y)) 172 173#define BIT_OP(__n, __p, __op, __inv) ((__p)->bits.bits_val[(__n)/MASK_BITS] __op __inv (1u << ((__n) % MASK_BITS))) 174#define BIT_XOR(__n, __p) BIT_OP(__n, __p, ^=,(bit_mask)) 175#define BIT_SET(__n, __p) BIT_OP(__n, __p, |=,(bit_mask)) 176#define BIT_CLR(__n, __p) BIT_OP(__n, __p, &=,(bit_mask) ~) 177#define BIT_ISSET(__n, __p) (BIT_OP(__n, __p, &,(bit_mask)) != 0ul) 178#define BIT_ZERO(__p) memset((__p)->bits.bits_val, 0, (__p)->bits.bits_len * sizeof(*(__p)->bits.bits_val)) 179extern bit_set *new_bit_set(uint32_t bits); 180extern bit_set *clone_bit_set(bit_set *orig); 181extern void free_bit_set(bit_set *bs); 182#ifndef CHECKED_DATA 183#define CHECKED_DATA 184typedef struct { 185 u_int data_len; 186 char *data_val; 187} checked_data; 188extern bool_t xdr_checked_data (XDR *, checked_data*); 189#endif 190 191struct blob { 192 struct { 193 u_int data_len; 194 char *data_val; 195 } data; 196}; 197typedef struct blob blob; 198 199struct x_proto_range { 200 xcom_proto min_proto; 201 xcom_proto max_proto; 202}; 203typedef struct x_proto_range x_proto_range; 204 205struct synode_no { 206 uint32_t group_id; 207 uint64_t msgno; 208 node_no node; 209}; 210typedef struct synode_no synode_no; 211 212struct trans_id { 213 synode_no cfg; 214 uint32_t pc; 215}; 216typedef struct trans_id trans_id; 217 218struct node_address { 219 char *address; 220 blob uuid; 221 x_proto_range proto; 222}; 223typedef struct node_address node_address; 224 225typedef struct { 226 u_int node_list_len; 227 node_address *node_list_val; 228} node_list; 229 230typedef struct { 231 u_int node_no_array_len; 232 node_no *node_no_array_val; 233} node_no_array; 234 235typedef struct { 236 u_int synode_no_array_len; 237 synode_no *synode_no_array_val; 238} synode_no_array; 239 240struct uncommitted_list { 241 uint32_t active; 242 synode_no_array vers; 243}; 244typedef struct uncommitted_list uncommitted_list; 245 246struct repository { 247 synode_no vers; 248 synode_no_array msg_list; 249 uncommitted_list u_list; 250}; 251typedef struct repository repository; 252 253struct x_error { 254 int32_t nodeid; 255 int32_t code; 256 char *message; 257}; 258typedef struct x_error x_error; 259 260struct trans_data { 261 trans_id tid; 262 int32_t pc; 263 char *cluster_name; 264 x_error errmsg; 265}; 266typedef struct trans_data trans_data; 267 268struct app_u { 269 cargo_type c_t; 270 union { 271 node_list nodes; 272 checked_data data; 273 trans_data td; 274 node_set present; 275 uint64_t cache_limit; 276 xcom_event_horizon event_horizon; 277 synode_no_array synodes; 278 } app_u_u; 279}; 280typedef struct app_u app_u; 281 282struct app_data { 283 synode_no unique_id; 284 uint32_t group_id; 285 uint64_t lsn; 286 synode_no app_key; 287 cons_type consensus; 288 double expiry_time; 289 bool_t notused; 290 bool_t log_it; 291 bool_t chosen; 292 recover_action recover; 293 app_u body; 294 struct app_data *next; 295}; 296typedef struct app_data app_data; 297 298typedef app_data *app_data_ptr; 299 300typedef struct { 301 u_int app_data_ptr_array_len; 302 app_data_ptr *app_data_ptr_array_val; 303} app_data_ptr_array; 304 305typedef app_data_ptr *app_data_list; 306 307struct key_range { 308 synode_no k1; 309 synode_no k2; 310}; 311typedef struct key_range key_range; 312 313struct ballot { 314 int32_t cnt; 315 node_no node; 316}; 317typedef struct ballot ballot; 318 319struct snapshot { 320 synode_no vers; 321 app_data_ptr_array snap; 322 uncommitted_list u_list; 323}; 324typedef struct snapshot snapshot; 325 326struct config { 327 synode_no start; 328 synode_no boot_key; 329 node_list nodes; 330 node_set global_node_set; 331 xcom_event_horizon event_horizon; 332}; 333typedef struct config config; 334 335typedef config *config_ptr; 336 337typedef struct { 338 u_int configs_len; 339 config_ptr *configs_val; 340} configs; 341 342struct gcs_snapshot { 343 synode_no log_start; 344 synode_no log_end; 345 configs cfg; 346 blob app_snap; 347}; 348typedef struct gcs_snapshot gcs_snapshot; 349 350struct synode_app_data { 351 synode_no synode; 352 checked_data data; 353}; 354typedef struct synode_app_data synode_app_data; 355 356typedef struct { 357 u_int synode_app_data_array_len; 358 synode_app_data *synode_app_data_array_val; 359} synode_app_data_array; 360 361struct pax_msg { 362 node_no to; 363 node_no from; 364 uint32_t group_id; 365 synode_no max_synode; 366 start_t start_type; 367 ballot reply_to; 368 ballot proposal; 369 pax_op op; 370 synode_no synode; 371 pax_msg_type msg_type; 372 bit_set *receivers; 373 app_data *a; 374 snapshot *snap; 375 gcs_snapshot *gcs_snap; 376 client_reply_code cli_err; 377 bool_t force_delivery; 378 int32_t refcnt; 379 synode_no delivered_msg; 380 xcom_event_horizon event_horizon; 381 synode_app_data_array requested_synode_app_data; 382}; 383typedef struct pax_msg pax_msg; 384 385/* the xdr functions */ 386 387#if defined(__STDC__) || defined(__cplusplus) 388extern bool_t xdr_xcom_proto (XDR *, xcom_proto*); 389extern bool_t xdr_delivery_status (XDR *, delivery_status*); 390extern bool_t xdr_cons_type (XDR *, cons_type*); 391extern bool_t xdr_cargo_type (XDR *, cargo_type*); 392extern bool_t xdr_recover_action (XDR *, recover_action*); 393extern bool_t xdr_pax_op (XDR *, pax_op*); 394extern bool_t xdr_pax_msg_type (XDR *, pax_msg_type*); 395extern bool_t xdr_client_reply_code (XDR *, client_reply_code*); 396extern bool_t xdr_start_t (XDR *, start_t*); 397extern bool_t xdr_xcom_event_horizon (XDR *, xcom_event_horizon*); 398extern bool_t xdr_node_no (XDR *, node_no*); 399extern bool_t xdr_node_set (XDR *, node_set*); 400extern bool_t xdr_bit_mask (XDR *, bit_mask*); 401extern bool_t xdr_bit_set (XDR *, bit_set*); 402extern bool_t xdr_blob (XDR *, blob*); 403extern bool_t xdr_x_proto_range (XDR *, x_proto_range*); 404extern bool_t xdr_synode_no (XDR *, synode_no*); 405extern bool_t xdr_trans_id (XDR *, trans_id*); 406extern bool_t xdr_node_address (XDR *, node_address*); 407extern bool_t xdr_node_list (XDR *, node_list*); 408extern bool_t xdr_node_no_array (XDR *, node_no_array*); 409extern bool_t xdr_synode_no_array (XDR *, synode_no_array*); 410extern bool_t xdr_uncommitted_list (XDR *, uncommitted_list*); 411extern bool_t xdr_repository (XDR *, repository*); 412extern bool_t xdr_x_error (XDR *, x_error*); 413extern bool_t xdr_trans_data (XDR *, trans_data*); 414extern bool_t xdr_app_u (XDR *, app_u*); 415extern bool_t xdr_app_data (XDR *, app_data*); 416extern bool_t xdr_app_data_ptr (XDR *, app_data_ptr*); 417extern bool_t xdr_app_data_ptr_array (XDR *, app_data_ptr_array*); 418extern bool_t xdr_app_data_list (XDR *, app_data_list*); 419extern bool_t xdr_key_range (XDR *, key_range*); 420extern bool_t xdr_ballot (XDR *, ballot*); 421extern bool_t xdr_snapshot (XDR *, snapshot*); 422extern bool_t xdr_config (XDR *, config*); 423extern bool_t xdr_config_ptr (XDR *, config_ptr*); 424extern bool_t xdr_configs (XDR *, configs*); 425extern bool_t xdr_gcs_snapshot (XDR *, gcs_snapshot*); 426extern bool_t xdr_synode_app_data (XDR *, synode_app_data*); 427extern bool_t xdr_synode_app_data_array (XDR *, synode_app_data_array*); 428extern bool_t xdr_pax_msg (XDR *, pax_msg*); 429 430#else /* K&R C */ 431extern bool_t xdr_xcom_proto (); 432extern bool_t xdr_delivery_status (); 433extern bool_t xdr_cons_type (); 434extern bool_t xdr_cargo_type (); 435extern bool_t xdr_recover_action (); 436extern bool_t xdr_pax_op (); 437extern bool_t xdr_pax_msg_type (); 438extern bool_t xdr_client_reply_code (); 439extern bool_t xdr_start_t (); 440extern bool_t xdr_xcom_event_horizon (); 441extern bool_t xdr_node_no (); 442extern bool_t xdr_node_set (); 443extern bool_t xdr_bit_mask (); 444extern bool_t xdr_bit_set (); 445extern bool_t xdr_blob (); 446extern bool_t xdr_x_proto_range (); 447extern bool_t xdr_synode_no (); 448extern bool_t xdr_trans_id (); 449extern bool_t xdr_node_address (); 450extern bool_t xdr_node_list (); 451extern bool_t xdr_node_no_array (); 452extern bool_t xdr_synode_no_array (); 453extern bool_t xdr_uncommitted_list (); 454extern bool_t xdr_repository (); 455extern bool_t xdr_x_error (); 456extern bool_t xdr_trans_data (); 457extern bool_t xdr_app_u (); 458extern bool_t xdr_app_data (); 459extern bool_t xdr_app_data_ptr (); 460extern bool_t xdr_app_data_ptr_array (); 461extern bool_t xdr_app_data_list (); 462extern bool_t xdr_key_range (); 463extern bool_t xdr_ballot (); 464extern bool_t xdr_snapshot (); 465extern bool_t xdr_config (); 466extern bool_t xdr_config_ptr (); 467extern bool_t xdr_configs (); 468extern bool_t xdr_gcs_snapshot (); 469extern bool_t xdr_synode_app_data (); 470extern bool_t xdr_synode_app_data_array (); 471extern bool_t xdr_pax_msg (); 472 473#endif /* K&R C */ 474 475#ifdef __cplusplus 476} 477#endif 478 479#endif /* !_XCOM_VP_H_RPCGEN */ 480