-
Notifications
You must be signed in to change notification settings - Fork 4
/
remote_protocol.x
6068 lines (4996 loc) · 131 KB
/
remote_protocol.x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/* -*- c -*-
* remote_protocol.x: private protocol for communicating between
* remote_internal driver and libvirtd. This protocol is
* internal and may change at any time.
*
* Copyright (C) 2006-2015 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*
* Author: Richard Jones <[email protected]>
*/
/* Notes:
*
* (1) The protocol is internal and may change at any time, without
* notice. Do not use it. Instead link to libvirt and use the remote
* driver.
*
* (2) See bottom of this file for a description of the home-brew RPC.
*
* (3) Authentication/encryption is done outside this protocol.
*
* (4) For namespace reasons, all exported names begin 'remote_' or
* 'REMOTE_'. This makes names quite long.
*/
%#include <libvirt/libvirt.h>
%#include "internal.h"
%#include "virxdrdefs.h"
%#include <arpa/inet.h>
/*----- Data types. -----*/
/* Length of long, but not unbounded, strings.
* This is an arbitrary limit designed to stop the decoder from trying
* to allocate unbounded amounts of memory when fed with a bad message.
*/
const REMOTE_STRING_MAX = 4194304;
/* A long string, which may NOT be NULL. */
typedef string remote_nonnull_string<REMOTE_STRING_MAX>;
/* A long string, which may be NULL. */
typedef remote_nonnull_string *remote_string;
/* Upper limit on lists of domains. */
const REMOTE_DOMAIN_LIST_MAX = 16384;
/* Upper limit on cpumap (bytes) passed to virDomainPinVcpu. */
const REMOTE_CPUMAP_MAX = 2048;
/* Upper limit on number of info fields returned by virDomainGetVcpus. */
const REMOTE_VCPUINFO_MAX = 16384;
/* Upper limit on cpumaps (bytes) passed to virDomainGetVcpus. */
const REMOTE_CPUMAPS_MAX = 8388608;
/* Upper limit on number of info fields returned by virDomainGetIOThreads. */
const REMOTE_IOTHREAD_INFO_MAX = 16384;
/* Upper limit on migrate cookie. */
const REMOTE_MIGRATE_COOKIE_MAX = 4194304;
/* Upper limit on lists of networks. */
const REMOTE_NETWORK_LIST_MAX = 16384;
/* Upper limit on lists of interfaces. */
const REMOTE_INTERFACE_LIST_MAX = 16384;
/* Upper limit on lists of storage pools. */
const REMOTE_STORAGE_POOL_LIST_MAX = 4096;
/* Upper limit on lists of storage vols. */
const REMOTE_STORAGE_VOL_LIST_MAX = 16384;
/* Upper limit on lists of node devices. */
const REMOTE_NODE_DEVICE_LIST_MAX = 65536;
/* Upper limit on lists of node device capabilities. */
const REMOTE_NODE_DEVICE_CAPS_LIST_MAX = 65536;
/* Upper limit on lists of network filters. */
const REMOTE_NWFILTER_LIST_MAX = 1024;
/* Upper limit on list of scheduler parameters. */
const REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX = 16;
/* Upper limit on list of blkio parameters. */
const REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX = 16;
/* Upper limit on list of memory parameters. */
const REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX = 16;
/* Upper limit on list of blockio tuning parameters. */
const REMOTE_DOMAIN_BLOCK_IO_TUNE_PARAMETERS_MAX = 32;
/* Upper limit on list of numa parameters. */
const REMOTE_DOMAIN_NUMA_PARAMETERS_MAX = 16;
/* Upper limit on list of perf events. */
const REMOTE_DOMAIN_PERF_EVENTS_MAX = 64;
/* Upper limit on block copy tunable parameters. */
const REMOTE_DOMAIN_BLOCK_COPY_PARAMETERS_MAX = 16;
/* Upper limit on list of node cpu stats. */
const REMOTE_NODE_CPU_STATS_MAX = 16;
/* Upper limit on list of node memory stats. */
const REMOTE_NODE_MEMORY_STATS_MAX = 16;
/* Upper limit on list of block stats. */
const REMOTE_DOMAIN_BLOCK_STATS_PARAMETERS_MAX = 16;
/* Upper limit on number of NUMA cells */
const REMOTE_NODE_MAX_CELLS = 1024;
/* Upper limit on SASL auth negotiation packet */
const REMOTE_AUTH_SASL_DATA_MAX = 65536;
/* Maximum number of auth types */
const REMOTE_AUTH_TYPE_LIST_MAX = 20;
/* Upper limit on list of memory stats */
const REMOTE_DOMAIN_MEMORY_STATS_MAX = 1024;
/* Upper limit on lists of domain snapshots. */
const REMOTE_DOMAIN_SNAPSHOT_LIST_MAX = 1024;
/* Maximum length of a block peek buffer message.
* Note applications need to be aware of this limit and issue multiple
* requests for large amounts of data.
*/
const REMOTE_DOMAIN_BLOCK_PEEK_BUFFER_MAX = 4194304;
/* Maximum length of a memory peek buffer message.
* Note applications need to be aware of this limit and issue multiple
* requests for large amounts of data.
*/
const REMOTE_DOMAIN_MEMORY_PEEK_BUFFER_MAX = 4194304;
/*
* Maximum length of a security label list.
*/
const REMOTE_SECURITY_LABEL_LIST_MAX=64;
/*
* Maximum length of a security model field.
*/
const REMOTE_SECURITY_MODEL_MAX = VIR_SECURITY_MODEL_BUFLEN;
/*
* Maximum length of a security label field.
*/
const REMOTE_SECURITY_LABEL_MAX = VIR_SECURITY_LABEL_BUFLEN;
/*
* Maximum length of a security DOI field.
*/
const REMOTE_SECURITY_DOI_MAX = VIR_SECURITY_DOI_BUFLEN;
/*
* Maximum size of a secret value.
*/
const REMOTE_SECRET_VALUE_MAX = 65536;
/*
* Upper limit on list of secrets.
*/
const REMOTE_SECRET_LIST_MAX = 16384;
/*
* Upper limit on list of CPUs accepted when computing a baseline CPU.
*/
const REMOTE_CPU_BASELINE_MAX = 256;
/*
* Max number of sending keycodes.
*/
const REMOTE_DOMAIN_SEND_KEY_MAX = 16;
/*
* Upper limit on list of interface parameters
*/
const REMOTE_DOMAIN_INTERFACE_PARAMETERS_MAX = 16;
/*
* Upper limit on cpus involved in per-cpu stats
*/
const REMOTE_DOMAIN_GET_CPU_STATS_NCPUS_MAX = 128;
/*
* Upper limit on list of per-cpu stats:
* REMOTE_NODE_CPU_STATS_MAX * REMOTE_DOMAIN_GET_CPU_STATS_MAX
*/
const REMOTE_DOMAIN_GET_CPU_STATS_MAX = 2048;
/*
* Upper limit on number of disks with errors
*/
const REMOTE_DOMAIN_DISK_ERRORS_MAX = 256;
/*
* Upper limit on number of memory parameters
*/
const REMOTE_NODE_MEMORY_PARAMETERS_MAX = 64;
/* Upper limit on migrate parameters */
const REMOTE_DOMAIN_MIGRATE_PARAM_LIST_MAX = 64;
/* Upper limit on number of job stats */
const REMOTE_DOMAIN_JOB_STATS_MAX = 64;
/* Upper limit on number of CPU models */
const REMOTE_CONNECT_CPU_MODELS_MAX = 8192;
/* Upper limit on number of mountpoints to frozen */
const REMOTE_DOMAIN_FSFREEZE_MOUNTPOINTS_MAX = 256;
/* Upper limit on the maximum number of leases in one lease file */
const REMOTE_NETWORK_DHCP_LEASES_MAX = 65536;
/* Upper limit on count of parameters returned via bulk stats API */
const REMOTE_CONNECT_GET_ALL_DOMAIN_STATS_MAX = 4096;
/* Upper limit of message size for tunable event. */
const REMOTE_DOMAIN_EVENT_TUNABLE_MAX = 2048;
/* Upper limit on number of mountpoints in fsinfo */
const REMOTE_DOMAIN_FSINFO_MAX = 256;
/* Upper limit on number of disks per mountpoint in fsinfo */
const REMOTE_DOMAIN_FSINFO_DISKS_MAX = 256;
/* Upper limit on number of interfaces per domain */
const REMOTE_DOMAIN_INTERFACE_MAX = 2048;
/* Upper limit on number of IP addresses per interface */
const REMOTE_DOMAIN_IP_ADDR_MAX = 2048;
/* Upper limit on number of guest vcpu information entries */
const REMOTE_DOMAIN_GUEST_VCPU_PARAMS_MAX = 64;
/* UUID. VIR_UUID_BUFLEN definition comes from libvirt.h */
typedef opaque remote_uuid[VIR_UUID_BUFLEN];
/* A domain which may not be NULL. */
struct remote_nonnull_domain {
remote_nonnull_string name;
remote_uuid uuid;
int id;
};
/* A network which may not be NULL. */
struct remote_nonnull_network {
remote_nonnull_string name;
remote_uuid uuid;
};
/* A network filter which may not be NULL. */
struct remote_nonnull_nwfilter {
remote_nonnull_string name;
remote_uuid uuid;
};
/* An interface which may not be NULL. */
struct remote_nonnull_interface {
remote_nonnull_string name;
remote_nonnull_string mac;
};
/* A storage pool which may not be NULL. */
struct remote_nonnull_storage_pool {
remote_nonnull_string name;
remote_uuid uuid;
};
/* A storage vol which may not be NULL. */
struct remote_nonnull_storage_vol {
remote_nonnull_string pool;
remote_nonnull_string name;
remote_nonnull_string key;
};
/* A node device which may not be NULL. */
struct remote_nonnull_node_device {
remote_nonnull_string name;
};
/* A secret which may not be null. */
struct remote_nonnull_secret {
remote_uuid uuid;
int usageType;
remote_nonnull_string usageID;
};
/* A snapshot which may not be NULL. */
struct remote_nonnull_domain_snapshot {
remote_nonnull_string name;
remote_nonnull_domain dom;
};
/* A domain or network which may be NULL. */
typedef remote_nonnull_domain *remote_domain;
typedef remote_nonnull_network *remote_network;
typedef remote_nonnull_nwfilter *remote_nwfilter;
typedef remote_nonnull_storage_pool *remote_storage_pool;
typedef remote_nonnull_storage_vol *remote_storage_vol;
typedef remote_nonnull_node_device *remote_node_device;
typedef remote_nonnull_secret *remote_secret;
/* Error message. See <virterror.h> for explanation of fields. */
/* NB. Fields "code", "domain" and "level" are really enums. The
* numeric value should remain compatible between libvirt and
* libvirtd. This means, no changing or reordering the enums as
* defined in <virterror.h> (but we don't do that anyway, for separate
* ABI reasons).
*/
struct remote_error {
int code;
int domain;
remote_string message;
int level;
remote_domain dom;
remote_string str1;
remote_string str2;
remote_string str3;
int int1;
int int2;
remote_network net;
};
/* Authentication types available thus far.... */
enum remote_auth_type {
REMOTE_AUTH_NONE = 0,
REMOTE_AUTH_SASL = 1,
REMOTE_AUTH_POLKIT = 2
};
/* Wire encoding of virVcpuInfo. */
struct remote_vcpu_info {
unsigned int number;
int state;
unsigned hyper cpu_time;
int cpu;
};
/* Wire encoding of virTypedParameter.
* Note the enum (type) which must remain binary compatible.
*/
union remote_typed_param_value switch (int type) {
case VIR_TYPED_PARAM_INT:
int i;
case VIR_TYPED_PARAM_UINT:
unsigned int ui;
case VIR_TYPED_PARAM_LLONG:
hyper l;
case VIR_TYPED_PARAM_ULLONG:
unsigned hyper ul;
case VIR_TYPED_PARAM_DOUBLE:
double d;
case VIR_TYPED_PARAM_BOOLEAN:
int b;
case VIR_TYPED_PARAM_STRING:
remote_nonnull_string s;
};
struct remote_typed_param {
remote_nonnull_string field;
remote_typed_param_value value;
};
struct remote_node_get_cpu_stats {
remote_nonnull_string field;
unsigned hyper value;
};
struct remote_node_get_memory_stats {
remote_nonnull_string field;
unsigned hyper value;
};
struct remote_domain_disk_error {
remote_nonnull_string disk;
int error;
};
/*----- Calls. -----*/
/* For each call we may have a 'remote_CALL_args' and 'remote_CALL_ret'
* type. These are omitted when they are void. The virConnectPtr
* is not passed at all (it is inferred on the remote server from the
* connection). Errors are returned implicitly in the RPC protocol.
*
* Please follow the naming convention carefully - this file is
* parsed by 'gendispatch.pl'.
*
* 'remote_CALL_ret' members that are filled via call-by-reference must be
* annotated with a insert@<offset> comment to indicate the offset in the
* parameter list of the function to be called.
*
* If the 'remote_CALL_ret' maps to a struct in the public API then it is
* also filled via call-by-reference and must be annotated with a
* insert@<offset> comment to indicate the offset in the parameter list of
* the function to be called.
*
* For cases where the API allocates memory and fills the arguments (mostly
* typed parameters) a similar comment indicates the type and offset
* of the variable to be filled with the count of returned elements.
* alloc@<offset>@unsigned int@<count offset>
*
* Dynamic opaque and remote_nonnull_string arrays can be annotated with an
* optional typecast */
struct remote_connect_open_args {
/* NB. "name" might be NULL although in practice you can't
* yet do that using the remote_internal driver.
*/
remote_string name;
unsigned int flags;
};
struct remote_connect_supports_feature_args {
int feature;
};
struct remote_connect_supports_feature_ret {
int supported;
};
struct remote_connect_get_type_ret {
remote_nonnull_string type;
};
struct remote_connect_get_version_ret {
unsigned hyper hv_ver;
};
struct remote_connect_get_lib_version_ret {
unsigned hyper lib_ver;
};
struct remote_connect_get_hostname_ret {
remote_nonnull_string hostname;
};
struct remote_connect_get_sysinfo_args {
unsigned int flags;
};
struct remote_connect_get_sysinfo_ret {
remote_nonnull_string sysinfo;
};
struct remote_connect_get_uri_ret {
remote_nonnull_string uri;
};
struct remote_connect_get_max_vcpus_args {
/* The only backend which supports this call is Xen HV, and
* there the type is ignored so it could be NULL.
*/
remote_string type;
};
struct remote_connect_get_max_vcpus_ret {
int max_vcpus;
};
struct remote_node_get_info_ret { /* insert@1 */
char model[32];
unsigned hyper memory;
int cpus;
int mhz;
int nodes;
int sockets;
int cores;
int threads;
};
struct remote_connect_get_capabilities_ret {
remote_nonnull_string capabilities;
};
struct remote_connect_get_domain_capabilities_args {
remote_string emulatorbin;
remote_string arch;
remote_string machine;
remote_string virttype;
unsigned int flags;
};
struct remote_connect_get_domain_capabilities_ret {
remote_nonnull_string capabilities;
};
struct remote_node_get_cpu_stats_args {
int cpuNum;
int nparams;
unsigned int flags;
};
struct remote_node_get_cpu_stats_ret {
remote_node_get_cpu_stats params<REMOTE_NODE_CPU_STATS_MAX>;
int nparams;
};
struct remote_node_get_memory_stats_args {
int nparams;
int cellNum;
unsigned int flags;
};
struct remote_node_get_memory_stats_ret {
remote_node_get_memory_stats params<REMOTE_NODE_MEMORY_STATS_MAX>;
int nparams;
};
struct remote_node_get_cells_free_memory_args {
int startCell;
int maxcells;
};
struct remote_node_get_cells_free_memory_ret {
unsigned hyper cells<REMOTE_NODE_MAX_CELLS>; /* insert@1 */
};
struct remote_node_get_free_memory_ret {
unsigned hyper freeMem;
};
struct remote_domain_get_scheduler_type_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_scheduler_type_ret {
remote_nonnull_string type;
int nparams;
};
struct remote_domain_get_scheduler_parameters_args {
remote_nonnull_domain dom;
int nparams; /* call-by-reference */
};
struct remote_domain_get_scheduler_parameters_ret {
remote_typed_param params<REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX>; /* insert@1 */
};
struct remote_domain_get_scheduler_parameters_flags_args {
remote_nonnull_domain dom;
int nparams; /* call-by-reference */
unsigned int flags;
};
struct remote_domain_get_scheduler_parameters_flags_ret {
remote_typed_param params<REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX>; /* insert@1 */
};
struct remote_domain_set_scheduler_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params<REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX>;
};
struct remote_domain_set_scheduler_parameters_flags_args {
remote_nonnull_domain dom;
remote_typed_param params<REMOTE_DOMAIN_SCHEDULER_PARAMETERS_MAX>;
unsigned int flags;
};
struct remote_domain_set_blkio_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params<REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX>;
unsigned int flags;
};
struct remote_domain_get_blkio_parameters_args {
remote_nonnull_domain dom;
int nparams;
unsigned int flags;
};
struct remote_domain_get_blkio_parameters_ret {
remote_typed_param params<REMOTE_DOMAIN_BLKIO_PARAMETERS_MAX>;
int nparams;
};
struct remote_domain_set_memory_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params<REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX>;
unsigned int flags;
};
struct remote_domain_get_memory_parameters_args {
remote_nonnull_domain dom;
int nparams;
unsigned int flags;
};
struct remote_domain_get_memory_parameters_ret {
remote_typed_param params<REMOTE_DOMAIN_MEMORY_PARAMETERS_MAX>;
int nparams;
};
struct remote_domain_block_resize_args {
remote_nonnull_domain dom;
remote_nonnull_string disk;
unsigned hyper size;
unsigned int flags;
};
struct remote_domain_set_numa_parameters_args {
remote_nonnull_domain dom;
remote_typed_param params<REMOTE_DOMAIN_NUMA_PARAMETERS_MAX>;
unsigned int flags;
};
struct remote_domain_get_numa_parameters_args {
remote_nonnull_domain dom;
int nparams;
unsigned int flags;
};
struct remote_domain_get_numa_parameters_ret {
remote_typed_param params<REMOTE_DOMAIN_NUMA_PARAMETERS_MAX>;
int nparams;
};
struct remote_domain_set_perf_events_args {
remote_nonnull_domain dom;
remote_typed_param params<REMOTE_DOMAIN_PERF_EVENTS_MAX>;
unsigned int flags;
};
struct remote_domain_get_perf_events_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_perf_events_ret {
remote_typed_param params<REMOTE_DOMAIN_PERF_EVENTS_MAX>;
};
struct remote_domain_block_stats_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
};
struct remote_domain_block_stats_ret { /* insert@2 */
hyper rd_req;
hyper rd_bytes;
hyper wr_req;
hyper wr_bytes;
hyper errs;
};
struct remote_domain_block_stats_flags_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
int nparams;
unsigned int flags;
};
struct remote_domain_block_stats_flags_ret {
remote_typed_param params<REMOTE_DOMAIN_BLOCK_STATS_PARAMETERS_MAX>;
int nparams;
};
struct remote_domain_interface_stats_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
};
struct remote_domain_interface_stats_ret { /* insert@2 */
hyper rx_bytes;
hyper rx_packets;
hyper rx_errs;
hyper rx_drop;
hyper tx_bytes;
hyper tx_packets;
hyper tx_errs;
hyper tx_drop;
};
struct remote_domain_set_interface_parameters_args {
remote_nonnull_domain dom;
remote_nonnull_string device;
remote_typed_param params<REMOTE_DOMAIN_INTERFACE_PARAMETERS_MAX>;
unsigned int flags;
};
struct remote_domain_get_interface_parameters_args {
remote_nonnull_domain dom;
remote_nonnull_string device;
int nparams;
unsigned int flags;
};
struct remote_domain_get_interface_parameters_ret {
remote_typed_param params<REMOTE_DOMAIN_INTERFACE_PARAMETERS_MAX>;
int nparams;
};
struct remote_domain_memory_stats_args {
remote_nonnull_domain dom;
unsigned int maxStats;
unsigned int flags;
};
struct remote_domain_memory_stat {
int tag;
unsigned hyper val;
};
struct remote_domain_memory_stats_ret {
remote_domain_memory_stat stats<REMOTE_DOMAIN_MEMORY_STATS_MAX>;
};
struct remote_domain_block_peek_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned hyper offset;
unsigned int size;
unsigned int flags;
};
struct remote_domain_block_peek_ret {
opaque buffer<REMOTE_DOMAIN_BLOCK_PEEK_BUFFER_MAX>;
};
struct remote_domain_memory_peek_args {
remote_nonnull_domain dom;
unsigned hyper offset;
unsigned int size;
unsigned int flags;
};
struct remote_domain_memory_peek_ret {
opaque buffer<REMOTE_DOMAIN_MEMORY_PEEK_BUFFER_MAX>;
};
struct remote_domain_get_block_info_args {
remote_nonnull_domain dom;
remote_nonnull_string path;
unsigned int flags;
};
struct remote_domain_get_block_info_ret { /* insert@2 */
unsigned hyper allocation;
unsigned hyper capacity;
unsigned hyper physical;
};
struct remote_connect_list_domains_args {
int maxids;
};
struct remote_connect_list_domains_ret {
int ids<REMOTE_DOMAIN_LIST_MAX>; /* insert@1 */
};
struct remote_connect_num_of_domains_ret {
int num;
};
struct remote_domain_create_xml_args {
remote_nonnull_string xml_desc;
unsigned int flags;
};
struct remote_domain_create_xml_ret {
remote_nonnull_domain dom;
};
struct remote_domain_create_xml_with_files_args {
remote_nonnull_string xml_desc;
unsigned int flags;
};
struct remote_domain_create_xml_with_files_ret {
remote_nonnull_domain dom;
};
struct remote_domain_lookup_by_id_args {
int id;
};
struct remote_domain_lookup_by_id_ret {
remote_nonnull_domain dom;
};
struct remote_domain_lookup_by_uuid_args {
remote_uuid uuid;
};
struct remote_domain_lookup_by_uuid_ret {
remote_nonnull_domain dom;
};
struct remote_domain_lookup_by_name_args {
remote_nonnull_string name;
};
struct remote_domain_lookup_by_name_ret {
remote_nonnull_domain dom;
};
struct remote_domain_suspend_args {
remote_nonnull_domain dom;
};
struct remote_domain_resume_args {
remote_nonnull_domain dom;
};
struct remote_domain_pm_suspend_for_duration_args {
remote_nonnull_domain dom;
unsigned int target;
unsigned hyper duration;
unsigned int flags;
};
struct remote_domain_pm_wakeup_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_shutdown_args {
remote_nonnull_domain dom;
};
struct remote_domain_reboot_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_reset_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_destroy_args {
remote_nonnull_domain dom;
};
struct remote_domain_destroy_flags_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_os_type_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_os_type_ret {
remote_nonnull_string type;
};
struct remote_domain_get_max_memory_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_max_memory_ret {
unsigned hyper memory;
};
struct remote_domain_set_max_memory_args {
remote_nonnull_domain dom;
unsigned hyper memory;
};
struct remote_domain_set_memory_args {
remote_nonnull_domain dom;
unsigned hyper memory;
};
struct remote_domain_set_memory_flags_args {
remote_nonnull_domain dom;
unsigned hyper memory;
unsigned int flags;
};
struct remote_domain_set_memory_stats_period_args {
remote_nonnull_domain dom;
int period;
unsigned int flags;
};
struct remote_domain_get_info_args {
remote_nonnull_domain dom;
};
struct remote_domain_get_info_ret { /* insert@1 */
unsigned char state;
unsigned hyper maxMem;
unsigned hyper memory;
unsigned short nrVirtCpu;
unsigned hyper cpuTime;
};
struct remote_domain_save_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
};
struct remote_domain_save_flags_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
remote_string dxml;
unsigned int flags;
};
struct remote_domain_restore_args {
remote_nonnull_string from;
};
struct remote_domain_restore_flags_args {
remote_nonnull_string from;
remote_string dxml;
unsigned int flags;
};
struct remote_domain_save_image_get_xml_desc_args {
remote_nonnull_string file;
unsigned int flags;
};
struct remote_domain_save_image_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_domain_save_image_define_xml_args {
remote_nonnull_string file;
remote_nonnull_string dxml;
unsigned int flags;
};
struct remote_domain_core_dump_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
unsigned int flags;
};
struct remote_domain_core_dump_with_format_args {
remote_nonnull_domain dom;
remote_nonnull_string to;
unsigned int dumpformat;
unsigned int flags;
};
struct remote_domain_screenshot_args {
remote_nonnull_domain dom;
unsigned int screen;
unsigned int flags;
};
struct remote_domain_screenshot_ret {
remote_string mime;
};
struct remote_domain_get_xml_desc_args {
remote_nonnull_domain dom;
unsigned int flags;
};
struct remote_domain_get_xml_desc_ret {
remote_nonnull_string xml;
};
struct remote_domain_migrate_prepare_args {
remote_string uri_in;
unsigned hyper flags;
remote_string dname;
unsigned hyper resource;
};
struct remote_domain_migrate_prepare_ret {
opaque cookie<REMOTE_MIGRATE_COOKIE_MAX>;
remote_string uri_out;
};
struct remote_domain_migrate_perform_args {
remote_nonnull_domain dom;
opaque cookie<REMOTE_MIGRATE_COOKIE_MAX>;
remote_nonnull_string uri;
unsigned hyper flags;