admin: Enable usage of typed parameters

Make all relevant changes to admin protocol, in order to achieve $(subj)

Signed-off-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
Erik Skultety 2016-01-25 16:30:27 +01:00
parent f5d9c5d00c
commit 84d21591a8
3 changed files with 50 additions and 1 deletions

2
cfg.mk
View File

@ -1248,7 +1248,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]$$

View File

@ -22,6 +22,7 @@
* Author: Martin Kletzander <mkletzan@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;
};

View File

@ -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;
};