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, 2021, Oracle and/or its affiliates. 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_vp_platform.h" 39 40enum xcom_proto { 41 x_unknown_proto = 0, 42 x_1_0 = 1, 43 x_1_1 = 2, 44 x_1_2 = 3 45}; 46typedef enum xcom_proto xcom_proto; 47 48 49struct x_proto_range { 50 xcom_proto min_proto; 51 xcom_proto max_proto; 52}; 53typedef struct x_proto_range x_proto_range; 54 55enum delivery_status { 56 delivery_ok = 0, 57 delivery_failure = 1, 58}; 59typedef enum delivery_status delivery_status; 60 61enum cons_type { 62 cons_majority = 0, 63 cons_all = 1, 64 cons_none = 2, 65}; 66typedef enum cons_type cons_type; 67 68typedef uint32_t node_no; 69 70struct synode_no { 71 uint32_t group_id; 72 uint64_t msgno; 73 node_no node; 74}; 75typedef struct synode_no synode_no; 76 77struct trans_id { 78 synode_no cfg; 79 uint32_t pc; 80}; 81typedef struct trans_id trans_id; 82 83typedef struct { 84 u_int node_set_len; 85 bool_t *node_set_val; 86} node_set; 87 88struct blob { 89 struct { 90 u_int data_len; 91 char *data_val; 92 } data; 93}; 94typedef struct blob blob; 95 96struct node_address_1_0 { 97 char *address; 98 blob uuid; 99}; 100typedef struct node_address_1_0 node_address_1_0; 101 102typedef struct { 103 u_int node_list_1_0_len; 104 node_address_1_0 *node_list_1_0_val; 105} node_list_1_0; 106 107struct node_address { 108 char *address; 109 blob uuid; 110 x_proto_range proto; 111}; 112typedef struct node_address node_address; 113 114typedef struct { 115 u_int node_list_len; 116 node_address *node_list_val; 117} node_list; 118/* 119 Custom xdr functions to coerce rpcgen into handling different protocol versions. 120 Protocol version is passed in an extended XDR object. 121*/ 122 123#ifndef VERSION_CONTROL 124#define VERSION_CONTROL 125 126extern xcom_proto const my_min_xcom_version; /* The minimum protocol version I am able to understand */ 127extern xcom_proto const my_xcom_version; /* The maximum protocol version I am able to understand */ 128 129typedef node_list node_list_1_1; /* Alias for real type to avoid generating xdr call to xdr_node_list */ 130 131extern bool_t xdr_node_list_1_1 (XDR *, node_list_1_1*); 132 133#endif 134#ifndef CHECKED_DATA 135#define CHECKED_DATA 136typedef struct { 137 u_int data_len; 138 char *data_val; 139} checked_data; 140extern bool_t xdr_checked_data (XDR *, checked_data*); 141#endif 142 143enum cargo_type { 144 unified_boot_type = 0, 145 xcom_boot_type = 1, 146 xcom_set_group = 2, 147 xcom_recover = 3, 148 app_type = 4, 149 query_type = 5, 150 query_next_log = 6, 151 exit_type = 7, 152 reset_type = 8, 153 begin_trans = 9, 154 prepared_trans = 10, 155 abort_trans = 11, 156 view_msg = 12, 157 remove_reset_type = 13, 158 add_node_type = 14, 159 remove_node_type = 15, 160 enable_arbitrator = 16, 161 disable_arbitrator = 17, 162 force_config_type = 18, 163 x_terminate_and_exit = 19, 164 set_cache_limit = 20, 165}; 166typedef enum cargo_type cargo_type; 167 168typedef struct { 169 u_int node_no_array_len; 170 node_no *node_no_array_val; 171} node_no_array; 172 173typedef struct { 174 u_int synode_no_array_len; 175 synode_no *synode_no_array_val; 176} synode_no_array; 177 178struct uncommitted_list { 179 uint32_t active; 180 synode_no_array vers; 181}; 182typedef struct uncommitted_list uncommitted_list; 183 184struct repository { 185 synode_no vers; 186 synode_no_array msg_list; 187 uncommitted_list u_list; 188}; 189typedef struct repository repository; 190 191struct x_error { 192 int32_t nodeid; 193 int32_t code; 194 char *message; 195}; 196typedef struct x_error x_error; 197 198struct trans_data { 199 trans_id tid; 200 int32_t pc; 201 char *cluster_name; 202 x_error errmsg; 203}; 204typedef struct trans_data trans_data; 205 206struct app_u { 207 cargo_type c_t; 208 union { 209 node_list_1_1 nodes; 210 repository rep; 211 checked_data data; 212 trans_data td; 213 node_set present; 214 uint64_t cache_limit; 215 } app_u_u; 216}; 217typedef struct app_u app_u; 218 219enum recover_action { 220 rec_block = 0, 221 rec_delay = 1, 222 rec_send = 2, 223}; 224typedef enum recover_action recover_action; 225 226struct app_data { 227 synode_no unique_id; 228 uint32_t group_id; 229 uint64_t lsn; 230 synode_no app_key; 231 cons_type consensus; 232 double expiry_time; 233 bool_t notused; 234 bool_t log_it; 235 bool_t chosen; 236 recover_action recover; 237 app_u body; 238 struct app_data *next; 239}; 240typedef struct app_data app_data; 241 242typedef app_data *app_data_ptr; 243 244typedef struct { 245 u_int app_data_ptr_array_len; 246 app_data_ptr *app_data_ptr_array_val; 247} app_data_ptr_array; 248 249typedef app_data_ptr *app_data_list; 250 251struct key_range { 252 synode_no k1; 253 synode_no k2; 254}; 255typedef struct key_range key_range; 256 257typedef uint32_t bit_mask; 258 259#define BITS_PER_BYTE 8 260#define MASK_BITS ((uint32_t)(sizeof (bit_mask) * BITS_PER_BYTE)) /* bits per mask */ 261#define howmany_words(x, y) (((x)+((y)-1))/(y)) 262 263 264struct bit_set { 265 struct { 266 u_int bits_len; 267 bit_mask *bits_val; 268 } bits; 269}; 270typedef struct bit_set bit_set; 271#define BIT_OP(__n, __p, __op, __inv) ((__p)->bits.bits_val[(__n)/MASK_BITS] __op __inv (1u << ((__n) % MASK_BITS))) 272#define BIT_XOR(__n, __p) BIT_OP(__n, __p, ^=, ) 273#define BIT_SET(__n, __p) BIT_OP(__n, __p, |=, ) 274#define BIT_CLR(__n, __p) BIT_OP(__n, __p, &=, ~) 275#define BIT_ISSET(__n, __p) (BIT_OP(__n, __p, &, ) != 0ul) 276#define BIT_ZERO(__p) memset((__p)->bits.bits_val, 0, (__p)->bits.bits_len * sizeof(*(__p)->bits.bits_val)) 277extern bit_set *new_bit_set(uint32_t bits); 278extern bit_set *clone_bit_set(bit_set *orig); 279extern void free_bit_set(bit_set *bs); 280 281struct ballot { 282 int32_t cnt; 283 node_no node; 284}; 285typedef struct ballot ballot; 286 287enum pax_op { 288 client_msg = 0, 289 initial_op = 1, 290 prepare_op = 2, 291 ack_prepare_op = 3, 292 ack_prepare_empty_op = 4, 293 accept_op = 5, 294 ack_accept_op = 6, 295 learn_op = 7, 296 recover_learn_op = 8, 297 multi_prepare_op = 9, 298 multi_ack_prepare_empty_op = 10, 299 multi_accept_op = 11, 300 multi_ack_accept_op = 12, 301 multi_learn_op = 13, 302 skip_op = 14, 303 i_am_alive_op = 15, 304 are_you_alive_op = 16, 305 need_boot_op = 17, 306 snapshot_op = 18, 307 die_op = 19, 308 read_op = 20, 309 gcs_snapshot_op = 21, 310 xcom_client_reply = 22, 311 tiny_learn_op = 23, 312 LAST_OP = 24, 313}; 314typedef enum pax_op pax_op; 315 316enum pax_msg_type { 317 normal = 0, 318 no_op = 1, 319 multi_no_op = 2, 320}; 321typedef enum pax_msg_type pax_msg_type; 322 323enum start_t { 324 IDLE = 0, 325 BOOT = 1, 326 RECOVER = 2, 327}; 328typedef enum start_t start_t; 329 330struct snapshot { 331 synode_no vers; 332 app_data_ptr_array snap; 333 uncommitted_list u_list; 334}; 335typedef struct snapshot snapshot; 336 337struct config { 338 synode_no start; 339 synode_no boot_key; 340 node_list_1_1 nodes; 341}; 342typedef struct config config; 343 344typedef config *config_ptr; 345 346typedef struct { 347 u_int configs_len; 348 config_ptr *configs_val; 349} configs; 350 351struct gcs_snapshot { 352 synode_no log_start; 353 configs cfg; 354 blob app_snap; 355}; 356typedef struct gcs_snapshot gcs_snapshot; 357 358enum client_reply_code { 359 REQUEST_OK = 0, 360 REQUEST_FAIL = 1, 361 REQUEST_RETRY = 2, 362}; 363typedef enum client_reply_code client_reply_code; 364 365struct pax_msg_1_1 { 366 node_no to; 367 node_no from; 368 uint32_t group_id; 369 synode_no max_synode; 370 start_t start_type; 371 ballot reply_to; 372 ballot proposal; 373 pax_op op; 374 synode_no synode; 375 pax_msg_type msg_type; 376 bit_set *receivers; 377 app_data *a; 378 snapshot *snap; 379 gcs_snapshot *gcs_snap; 380 client_reply_code cli_err; 381 bool_t force_delivery; 382 int32_t refcnt; 383}; 384typedef struct pax_msg_1_1 pax_msg_1_1; 385 386struct pax_msg_1_2 { 387 node_no to; 388 node_no from; 389 uint32_t group_id; 390 synode_no max_synode; 391 start_t start_type; 392 ballot reply_to; 393 ballot proposal; 394 pax_op op; 395 synode_no synode; 396 pax_msg_type msg_type; 397 bit_set *receivers; 398 app_data *a; 399 snapshot *snap; 400 gcs_snapshot *gcs_snap; 401 client_reply_code cli_err; 402 bool_t force_delivery; 403 int32_t refcnt; 404 synode_no delivered_msg; 405}; 406typedef struct pax_msg_1_2 pax_msg_1_2; 407#ifndef PAX_MSG_TYPEDEF 408#define PAX_MSG_TYPEDEF 409typedef pax_msg_1_2 pax_msg; 410extern bool_t xdr_pax_msg (XDR *, pax_msg*); 411#endif 412 413typedef char *file_name; 414 415typedef struct { 416 u_int file_name_array_len; 417 file_name *file_name_array_val; 418} file_name_array; 419 420struct file_copy_data { 421 char *clustername; 422 char *copydir; 423 char *server; 424 int32_t copy_port; 425}; 426typedef struct file_copy_data file_copy_data; 427 428/* the xdr functions */ 429 430#if defined(__STDC__) || defined(__cplusplus) 431extern bool_t xdr_xcom_proto (XDR *, xcom_proto*); 432extern bool_t xdr_xcom_proto (XDR *, xcom_proto*); 433extern bool_t xdr_x_proto_range (XDR *, x_proto_range*); 434extern bool_t xdr_delivery_status (XDR *, delivery_status*); 435extern bool_t xdr_cons_type (XDR *, cons_type*); 436extern bool_t xdr_node_no (XDR *, node_no*); 437extern bool_t xdr_synode_no (XDR *, synode_no*); 438extern bool_t xdr_trans_id (XDR *, trans_id*); 439extern bool_t xdr_node_set (XDR *, node_set*); 440extern bool_t xdr_blob (XDR *, blob*); 441extern bool_t xdr_node_address_1_0 (XDR *, node_address_1_0*); 442extern bool_t xdr_node_list_1_0 (XDR *, node_list_1_0*); 443extern bool_t xdr_node_address (XDR *, node_address*); 444extern bool_t xdr_node_list (XDR *, node_list*); 445extern bool_t xdr_cargo_type (XDR *, cargo_type*); 446extern bool_t xdr_node_no_array (XDR *, node_no_array*); 447extern bool_t xdr_synode_no_array (XDR *, synode_no_array*); 448extern bool_t xdr_uncommitted_list (XDR *, uncommitted_list*); 449extern bool_t xdr_repository (XDR *, repository*); 450extern bool_t xdr_x_error (XDR *, x_error*); 451extern bool_t xdr_trans_data (XDR *, trans_data*); 452extern bool_t xdr_app_u (XDR *, app_u*); 453extern bool_t xdr_recover_action (XDR *, recover_action*); 454extern bool_t xdr_app_data (XDR *, app_data*); 455extern bool_t xdr_app_data_ptr (XDR *, app_data_ptr*); 456extern bool_t xdr_app_data_ptr_array (XDR *, app_data_ptr_array*); 457extern bool_t xdr_app_data_list (XDR *, app_data_list*); 458extern bool_t xdr_key_range (XDR *, key_range*); 459extern bool_t xdr_bit_mask (XDR *, bit_mask*); 460extern bool_t xdr_bit_set (XDR *, bit_set*); 461extern bool_t xdr_ballot (XDR *, ballot*); 462extern bool_t xdr_pax_op (XDR *, pax_op*); 463extern bool_t xdr_pax_msg_type (XDR *, pax_msg_type*); 464extern bool_t xdr_start_t (XDR *, start_t*); 465extern bool_t xdr_snapshot (XDR *, snapshot*); 466extern bool_t xdr_config (XDR *, config*); 467extern bool_t xdr_config_ptr (XDR *, config_ptr*); 468extern bool_t xdr_configs (XDR *, configs*); 469extern bool_t xdr_gcs_snapshot (XDR *, gcs_snapshot*); 470extern bool_t xdr_client_reply_code (XDR *, client_reply_code*); 471extern bool_t xdr_pax_msg_1_1 (XDR *, pax_msg_1_1*); 472extern bool_t xdr_pax_msg_1_2 (XDR *, pax_msg_1_2*); 473extern bool_t xdr_file_name (XDR *, file_name*); 474extern bool_t xdr_file_name_array (XDR *, file_name_array*); 475extern bool_t xdr_file_copy_data (XDR *, file_copy_data*); 476 477#else /* K&R C */ 478extern bool_t xdr_xcom_proto (); 479extern bool_t xdr_xcom_proto (); 480extern bool_t xdr_x_proto_range (); 481extern bool_t xdr_delivery_status (); 482extern bool_t xdr_cons_type (); 483extern bool_t xdr_node_no (); 484extern bool_t xdr_synode_no (); 485extern bool_t xdr_trans_id (); 486extern bool_t xdr_node_set (); 487extern bool_t xdr_blob (); 488extern bool_t xdr_node_address_1_0 (); 489extern bool_t xdr_node_list_1_0 (); 490extern bool_t xdr_node_address (); 491extern bool_t xdr_node_list (); 492extern bool_t xdr_cargo_type (); 493extern bool_t xdr_node_no_array (); 494extern bool_t xdr_synode_no_array (); 495extern bool_t xdr_uncommitted_list (); 496extern bool_t xdr_repository (); 497extern bool_t xdr_x_error (); 498extern bool_t xdr_trans_data (); 499extern bool_t xdr_app_u (); 500extern bool_t xdr_recover_action (); 501extern bool_t xdr_app_data (); 502extern bool_t xdr_app_data_ptr (); 503extern bool_t xdr_app_data_ptr_array (); 504extern bool_t xdr_app_data_list (); 505extern bool_t xdr_key_range (); 506extern bool_t xdr_bit_mask (); 507extern bool_t xdr_bit_set (); 508extern bool_t xdr_ballot (); 509extern bool_t xdr_pax_op (); 510extern bool_t xdr_pax_msg_type (); 511extern bool_t xdr_start_t (); 512extern bool_t xdr_snapshot (); 513extern bool_t xdr_config (); 514extern bool_t xdr_config_ptr (); 515extern bool_t xdr_configs (); 516extern bool_t xdr_gcs_snapshot (); 517extern bool_t xdr_client_reply_code (); 518extern bool_t xdr_pax_msg_1_1 (); 519extern bool_t xdr_pax_msg_1_2 (); 520extern bool_t xdr_file_name (); 521extern bool_t xdr_file_name_array (); 522extern bool_t xdr_file_copy_data (); 523 524#endif /* K&R C */ 525 526#ifdef __cplusplus 527} 528#endif 529 530#endif /* !_XCOM_VP_H_RPCGEN */ 531