Hi,
I think, I have solved the error in libxen/src/xen_common.c.
While building the XML data for a xen-api call, the xen-api c-binding encapsulates a set of elements (in this case strings) in a <struct> tag instead of an <array> tag.
Please see patch based on xen 3.1.
--- xen_common_orig.c 2008-01-21 09:32:02.000000000 +0100
+++ xen_common.c 2008-01-28 09:02:46.000000000 +0100
@@ -90,6 +90,8 @@
static xmlNode *
add_param_struct(xmlNode *);
static xmlNode *
+add_param_array(xmlNode *);
+static xmlNode *
add_struct_array(xmlNode *, const char *);
static xmlNode *
add_nested_struct(xmlNode *, const char *);
@@ -1278,7 +1280,7 @@
const struct abstract_type *member_type = v->type->child;
arbitrary_set *set_val = v->u.struct_val;
abstract_value v;
- xmlNode *data_node = add_param_struct(params_node);
+ xmlNode *data_node = add_param_array(params_node);
for (size_t i = 0; i < set_val->size; i++)
{
@@ -1595,6 +1597,16 @@
}
+static xmlNode *
+add_param_array(xmlNode *params_node)
+{
+ xmlNode *param_node = add_container(params_node, "param");
+ xmlNode *value_node = add_container(param_node, "value");
+
+ return xmlNewChild(value_node, NULL, BAD_CAST "array", NULL);
+}
+
+
static void
add_struct_member(xmlNode *struct_node, const char *name, const char *type,
const char *value)
Best regards
Lutz Dube