[libvirt] [PATCH v2 03/10] admin: Enable usage of typed parameters

Erik Skultety eskultet at redhat.com
Tue Mar 29 07:51:28 UTC 2016


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 f5573db..3ae8433 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 6590980..57dbb6b 100644
--- a/src/admin/admin_protocol.x
+++ b/src/admin/admin_protocol.x
@@ -22,6 +22,7 @@
  * Author: Martin Kletzander <mkletzan at 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 d8aca06..26c8443 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




More information about the libvir-list mailing list