Make all relevant changes to admin protocol, in order to achieve $(subj)
---
cfg.mk | 2 +-
src/admin/admin_protocol.x | 24 ++++++++++++++++++++++++
src/admin_protocol-structs | 25 +++++++++++++++++++++++++
3 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/cfg.mk b/cfg.mk
index 5b864af..d1e58be 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -1225,7 +1225,7 @@
exclude_file_name_regexp--sc_prohibit_include_public_headers_brackets = \
^(tools/|examples/|include/libvirt/(virterror|libvirt(-(admin|qemu|lxc))?)\.h$$)
exclude_file_name_regexp--sc_prohibit_int_ijk = \
- ^(src/remote_protocol-structs|src/remote/remote_protocol.x|cfg.mk|include/)$
+
^(src/remote_protocol-structs|src/remote/remote_protocol.x|cfg.mk|include/|src/admin_protocol-structs|src/admin/admin_protocol.x)$
exclude_file_name_regexp--sc_prohibit_getenv = \
^tests/.*\.[ch]$$
diff --git a/src/admin/admin_protocol.x b/src/admin/admin_protocol.x
index 089ce57..7b0a3b3 100644
--- a/src/admin/admin_protocol.x
+++ b/src/admin/admin_protocol.x
@@ -22,6 +22,7 @@
* Author: Martin Kletzander <mkletzan(a)redhat.com>
*/
+%#include <libvirt/libvirt-admin.h>
%#include "virxdrdefs.h"
/*----- Data types. -----*/
@@ -41,12 +42,35 @@ typedef string admin_nonnull_string<ADMIN_STRING_MAX>;
/* A long string, which may be NULL. */
typedef admin_nonnull_string *admin_string;
+union admin_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:
+ admin_nonnull_string s;
+};
+
+struct admin_typed_param {
+ admin_nonnull_string field;
+ admin_typed_param_value value;
+};
+
/* A server which may NOT be NULL */
struct admin_nonnull_server {
admin_nonnull_string name;
};
/*----- Protocol. -----*/
+
struct admin_connect_open_args {
unsigned int flags;
};
diff --git a/src/admin_protocol-structs b/src/admin_protocol-structs
index 8f2633a..7153a89 100644
--- a/src/admin_protocol-structs
+++ b/src/admin_protocol-structs
@@ -1,4 +1,29 @@
/* -*- c -*- */
+enum {
+ VIR_TYPED_PARAM_INT = 1,
+ VIR_TYPED_PARAM_UINT = 2,
+ VIR_TYPED_PARAM_LLONG = 3,
+ VIR_TYPED_PARAM_ULLONG = 4,
+ VIR_TYPED_PARAM_DOUBLE = 5,
+ VIR_TYPED_PARAM_BOOLEAN = 6,
+ VIR_TYPED_PARAM_STRING = 7,
+};
+struct admin_typed_param_value {
+ int type;
+ union {
+ int i;
+ u_int ui;
+ int64_t l;
+ uint64_t ul;
+ double d;
+ int b;
+ admin_nonnull_string s;
+ } admin_typed_param_value_u;
+};
+struct admin_typed_param {
+ admin_nonnull_string field;
+ admin_typed_param_value value;
+};
struct admin_nonnull_server {
admin_nonnull_string name;
};
--
2.4.3