[libvirt] [PATCH 00/22] Extend remote generator to generate function bodies too

Richard W.M. Jones suggested [1] that the code that directly deals with the XDR protocol should be generated. The remote_generate_stubs.pl script already generates all the headers, just the bodies in the daemon and remote driver are manually written. But most of the functions just follow simple patterns. So I extended the generator to exploit this patterns and move 11 kLOC code from manually written to generated code. During this I came a cross many small variations and problems in the XDR protocol. For example, NWFilterDefineXML has a flags parameter in the public API, but it's not transferred in the XDR protocol. Another things is the variations in the usage of unsigned VS signed types. This comes in two forms. public API VS XDR procotol and in between different functions. For example, some functions use int for the flags paramater and some use unsigned int. This results in quite a lot of special case handling in the generator. cfg.mk | 10 +- daemon/Makefile.am | 46 +- daemon/qemu_dispatch_args.h | 2 +- daemon/qemu_dispatch_bodies.c | 6 + daemon/qemu_dispatch_prototypes.h | 2 +- daemon/qemu_dispatch_ret.h | 2 +- daemon/qemu_dispatch_table.h | 2 +- daemon/remote.c | 5765 +---------------------------------- daemon/remote_dispatch_args.h | 2 +- daemon/remote_dispatch_bodies.c | 5933 +++++++++++++++++++++++++++++++++++ daemon/remote_dispatch_prototypes.h | 80 +- daemon/remote_dispatch_ret.h | 2 +- daemon/remote_dispatch_table.h | 158 +- daemon/remote_generate_stubs.pl | 195 -- daemon/remote_generator.pl | 1198 +++++++ po/POTFILES.in | 1 + src/Makefile.am | 13 +- src/remote/qemu_client_bodies.c | 4 + src/remote/qemu_protocol.c | 2 +- src/remote/qemu_protocol.h | 2 +- src/remote/qemu_protocol.x | 2 +- src/remote/remote_client_bodies.c | 4664 +++++++++++++++++++++++++++ src/remote/remote_driver.c | 4907 +---------------------------- src/remote/remote_protocol.c | 26 +- src/remote/remote_protocol.h | 26 +- src/remote/remote_protocol.x | 34 +- src/remote_protocol-structs | 26 +- 27 files changed, 12093 insertions(+), 11017 deletions(-) [1] https://www.redhat.com/archives/libvir-list/2011-April/msg00884.html Matthias

No functional change included, just a whitespace change. --- daemon/Makefile.am | 34 +++--- daemon/qemu_dispatch_args.h | 2 +- daemon/qemu_dispatch_prototypes.h | 2 +- daemon/qemu_dispatch_ret.h | 2 +- daemon/qemu_dispatch_table.h | 2 +- daemon/remote_dispatch_args.h | 2 +- daemon/remote_dispatch_prototypes.h | 2 +- daemon/remote_dispatch_ret.h | 2 +- daemon/remote_dispatch_table.h | 2 +- daemon/remote_generate_stubs.pl | 195 ----------------------------------- daemon/remote_generator.pl | 195 +++++++++++++++++++++++++++++++++++ src/remote/remote_protocol.x | 2 +- 12 files changed, 221 insertions(+), 221 deletions(-) delete mode 100755 daemon/remote_generate_stubs.pl create mode 100755 daemon/remote_generator.pl diff --git a/daemon/Makefile.am b/daemon/Makefile.am index af71188..14088bc 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -23,7 +23,7 @@ AVAHI_SOURCES = \ DISTCLEANFILES = EXTRA_DIST = \ - remote_generate_stubs.pl \ + remote_generator.pl \ libvirtd.conf \ libvirtd.init.in \ libvirtd.upstart \ @@ -216,29 +216,29 @@ remote.h: \ REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x -remote_dispatch_prototypes.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -p remote $(REMOTE_PROTOCOL) > $@ +remote_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -p remote $(REMOTE_PROTOCOL) > $@ -remote_dispatch_table.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -t remote $(REMOTE_PROTOCOL) > $@ +remote_dispatch_table.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -t remote $(REMOTE_PROTOCOL) > $@ -remote_dispatch_args.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -a remote $(REMOTE_PROTOCOL) > $@ +remote_dispatch_args.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -a remote $(REMOTE_PROTOCOL) > $@ -remote_dispatch_ret.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -c -r remote $(REMOTE_PROTOCOL) > $@ +remote_dispatch_ret.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -r remote $(REMOTE_PROTOCOL) > $@ -qemu_dispatch_prototypes.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -p qemu $(QEMU_PROTOCOL) > $@ +qemu_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -p qemu $(QEMU_PROTOCOL) > $@ -qemu_dispatch_table.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -t qemu $(QEMU_PROTOCOL) > $@ +qemu_dispatch_table.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -t qemu $(QEMU_PROTOCOL) > $@ -qemu_dispatch_args.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -a qemu $(QEMU_PROTOCOL) > $@ +qemu_dispatch_args.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -a qemu $(QEMU_PROTOCOL) > $@ -qemu_dispatch_ret.h: $(srcdir)/remote_generate_stubs.pl $(QEMU_PROTOCOL) - $(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -r qemu $(QEMU_PROTOCOL) > $@ +qemu_dispatch_ret.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -r qemu $(QEMU_PROTOCOL) > $@ LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \ libvirtd.uml.logrotate libvirtd.logrotate diff --git a/daemon/qemu_dispatch_args.h b/daemon/qemu_dispatch_args.h index e278fa4..81623bc 100644 --- a/daemon/qemu_dispatch_args.h +++ b/daemon/qemu_dispatch_args.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/qemu_dispatch_prototypes.h b/daemon/qemu_dispatch_prototypes.h index 4ec1ab4..031ae38 100644 --- a/daemon/qemu_dispatch_prototypes.h +++ b/daemon/qemu_dispatch_prototypes.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/qemu_dispatch_ret.h b/daemon/qemu_dispatch_ret.h index 492dcf9..4dcab6c 100644 --- a/daemon/qemu_dispatch_ret.h +++ b/daemon/qemu_dispatch_ret.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/qemu_dispatch_table.h b/daemon/qemu_dispatch_table.h index c196a3c..d8eebd0 100644 --- a/daemon/qemu_dispatch_table.h +++ b/daemon/qemu_dispatch_table.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/remote_dispatch_args.h b/daemon/remote_dispatch_args.h index f9537d7..31c02c7 100644 --- a/daemon/remote_dispatch_args.h +++ b/daemon/remote_dispatch_args.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/remote_dispatch_prototypes.h b/daemon/remote_dispatch_prototypes.h index cf2f38c..a029b85 100644 --- a/daemon/remote_dispatch_prototypes.h +++ b/daemon/remote_dispatch_prototypes.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/remote_dispatch_ret.h b/daemon/remote_dispatch_ret.h index 114e832..cf63657 100644 --- a/daemon/remote_dispatch_ret.h +++ b/daemon/remote_dispatch_ret.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/remote_dispatch_table.h b/daemon/remote_dispatch_table.h index b39f7c2..d2ce08c 100644 --- a/daemon/remote_dispatch_table.h +++ b/daemon/remote_dispatch_table.h @@ -1,4 +1,4 @@ -/* Automatically generated by remote_generate_stubs.pl. +/* Automatically generated by remote_generator.pl. * Do not edit this file. Any changes you make will be lost. */ diff --git a/daemon/remote_generate_stubs.pl b/daemon/remote_generate_stubs.pl deleted file mode 100755 index dbde7da..0000000 --- a/daemon/remote_generate_stubs.pl +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/perl -w -# -# This script parses remote_protocol.x or qemu_protocol.x and produces lots of -# boilerplate code for both ends of the remote connection. -# -# The first non-option argument specifies the prefix to be searched for, and -# output to, the boilerplate code. The second non-option argument is the -# file you want to operate on. For instance, to generate the dispatch table -# for both remote_protocol.x and qemu_protocol.x, you would run the -# following: -# -# remote_generate_stubs.pl -c -t remote ../src/remote/remote_protocol.x -# remote_generate_stubs.pl -t qemu ../src/remote/qemu_protocol.x -# -# By Richard Jones <rjones@redhat.com> - -use strict; - -use Getopt::Std; - -# Command line options. -our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c); -getopts ('ptardc'); - -my $structprefix = $ARGV[0]; -my $procprefix = uc $structprefix; -shift; - -# Convert name_of_call to NameOfCall. -sub name_to_ProcName { - my $name = shift; - my @elems = split /_/, $name; - @elems = map ucfirst, @elems; - join "", @elems -} - -# Read the input file (usually remote_protocol.x) and form an -# opinion about the name, args and return type of each RPC. -my ($name, $ProcName, $id, %calls, @calls); - -# only generate a close method if -c was passed -if ($opt_c) { - # REMOTE_PROC_CLOSE has no args or ret. - $calls{close} = { - name => "close", - ProcName => "Close", - UC_NAME => "CLOSE", - args => "void", - ret => "void", - }; -} - -while (<>) { - if (/^struct ${structprefix}_(.*)_args/) { - $name = $1; - $ProcName = name_to_ProcName ($name); - - die "duplicate definition of ${structprefix}_${name}_args" - if exists $calls{$name}; - - $calls{$name} = { - name => $name, - ProcName => $ProcName, - UC_NAME => uc $name, - args => "${structprefix}_${name}_args", - ret => "void", - }; - - } elsif (/^struct ${structprefix}_(.*)_ret/) { - $name = $1; - $ProcName = name_to_ProcName ($name); - - if (exists $calls{$name}) { - $calls{$name}->{ret} = "${structprefix}_${name}_ret"; - } else { - $calls{$name} = { - name => $name, - ProcName => $ProcName, - UC_NAME => uc $name, - args => "void", - ret => "${structprefix}_${name}_ret" - } - } - } elsif (/^struct ${structprefix}_(.*)_msg/) { - $name = $1; - $ProcName = name_to_ProcName ($name); - - $calls{$name} = { - name => $name, - ProcName => $ProcName, - UC_NAME => uc $name, - msg => "${structprefix}_${name}_msg" - } - } elsif (/^\s*${procprefix}_PROC_(.*?)\s+=\s+(\d+),?$/) { - $name = lc $1; - $id = $2; - $ProcName = name_to_ProcName ($name); - - $calls[$id] = $calls{$name}; - } -} - -#---------------------------------------------------------------------- -# Output - -print <<__EOF__; -/* Automatically generated by remote_generate_stubs.pl. - * Do not edit this file. Any changes you make will be lost. - */ - -__EOF__ - -# Debugging. -if ($opt_d) { - my @keys = sort (keys %calls); - foreach (@keys) { - print "$_:\n"; - print " name $calls{$_}->{name} ($calls{$_}->{ProcName})\n"; - print " $calls{$_}->{args} -> $calls{$_}->{ret}\n"; - } -} - -# Prototypes for dispatch functions ("remote_dispatch_prototypes.h"). -elsif ($opt_p) { - my @keys = sort (keys %calls); - foreach (@keys) { - # Skip things which are REMOTE_MESSAGE - next if $calls{$_}->{msg}; - - print "static int ${structprefix}Dispatch$calls{$_}->{ProcName}(\n"; - print " struct qemud_server *server,\n"; - print " struct qemud_client *client,\n"; - print " virConnectPtr conn,\n"; - print " remote_message_header *hdr,\n"; - print " remote_error *rerr,\n"; - print " $calls{$_}->{args} *args,\n"; - print " $calls{$_}->{ret} *ret);\n"; - } -} - -# Union of all arg types -# ("remote_dispatch_args.h"). -elsif ($opt_a) { - for ($id = 0 ; $id <= $#calls ; $id++) { - if (defined $calls[$id] && - !$calls[$id]->{msg} && - $calls[$id]->{args} ne "void") { - print " $calls[$id]->{args} val_$calls[$id]->{args};\n"; - } - } -} - -# Union of all arg types -# ("remote_dispatch_ret.h"). -elsif ($opt_r) { - for ($id = 0 ; $id <= $#calls ; $id++) { - if (defined $calls[$id] && - !$calls[$id]->{msg} && - $calls[$id]->{ret} ne "void") { - print " $calls[$id]->{ret} val_$calls[$id]->{ret};\n"; - } - } -} - -# Inside the switch statement, prepare the 'fn', 'args_filter', etc -# ("remote_dispatch_table.h"). -elsif ($opt_t) { - for ($id = 0 ; $id <= $#calls ; $id++) { - if (defined $calls[$id] && !$calls[$id]->{msg}) { - print "{ /* $calls[$id]->{ProcName} => $id */\n"; - print " .fn = (dispatch_fn) ${structprefix}Dispatch$calls[$id]->{ProcName},\n"; - if ($calls[$id]->{args} ne "void") { - print " .args_filter = (xdrproc_t) xdr_$calls[$id]->{args},\n"; - } else { - print " .args_filter = (xdrproc_t) xdr_void,\n"; - } - if ($calls[$id]->{ret} ne "void") { - print " .ret_filter = (xdrproc_t) xdr_$calls[$id]->{ret},\n"; - } else { - print " .ret_filter = (xdrproc_t) xdr_void,\n"; - } - print "},\n"; - } else { - if ($calls[$id]->{msg}) { - print "{ /* Async event $calls[$id]->{ProcName} => $id */\n"; - } else { - print "{ /* (unused) => $id */\n"; - } - print " .fn = NULL,\n"; - print " .args_filter = (xdrproc_t) xdr_void,\n"; - print " .ret_filter = (xdrproc_t) xdr_void,\n"; - print "},\n"; - } - } -} diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl new file mode 100755 index 0000000..e4cade6 --- /dev/null +++ b/daemon/remote_generator.pl @@ -0,0 +1,195 @@ +#!/usr/bin/perl -w +# +# This script parses remote_protocol.x or qemu_protocol.x and produces lots of +# boilerplate code for both ends of the remote connection. +# +# The first non-option argument specifies the prefix to be searched for, and +# output to, the boilerplate code. The second non-option argument is the +# file you want to operate on. For instance, to generate the dispatch table +# for both remote_protocol.x and qemu_protocol.x, you would run the +# following: +# +# remote_generator.pl -c -t remote ../src/remote/remote_protocol.x +# remote_generator.pl -t qemu ../src/remote/qemu_protocol.x +# +# By Richard Jones <rjones@redhat.com> + +use strict; + +use Getopt::Std; + +# Command line options. +our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c); +getopts ('ptardc'); + +my $structprefix = $ARGV[0]; +my $procprefix = uc $structprefix; +shift; + +# Convert name_of_call to NameOfCall. +sub name_to_ProcName { + my $name = shift; + my @elems = split /_/, $name; + @elems = map ucfirst, @elems; + join "", @elems +} + +# Read the input file (usually remote_protocol.x) and form an +# opinion about the name, args and return type of each RPC. +my ($name, $ProcName, $id, %calls, @calls); + +# only generate a close method if -c was passed +if ($opt_c) { + # REMOTE_PROC_CLOSE has no args or ret. + $calls{close} = { + name => "close", + ProcName => "Close", + UC_NAME => "CLOSE", + args => "void", + ret => "void", + }; +} + +while (<>) { + if (/^struct ${structprefix}_(.*)_args/) { + $name = $1; + $ProcName = name_to_ProcName ($name); + + die "duplicate definition of ${structprefix}_${name}_args" + if exists $calls{$name}; + + $calls{$name} = { + name => $name, + ProcName => $ProcName, + UC_NAME => uc $name, + args => "${structprefix}_${name}_args", + ret => "void", + }; + + } elsif (/^struct ${structprefix}_(.*)_ret/) { + $name = $1; + $ProcName = name_to_ProcName ($name); + + if (exists $calls{$name}) { + $calls{$name}->{ret} = "${structprefix}_${name}_ret"; + } else { + $calls{$name} = { + name => $name, + ProcName => $ProcName, + UC_NAME => uc $name, + args => "void", + ret => "${structprefix}_${name}_ret" + } + } + } elsif (/^struct ${structprefix}_(.*)_msg/) { + $name = $1; + $ProcName = name_to_ProcName ($name); + + $calls{$name} = { + name => $name, + ProcName => $ProcName, + UC_NAME => uc $name, + msg => "${structprefix}_${name}_msg" + } + } elsif (/^\s*${procprefix}_PROC_(.*?)\s+=\s+(\d+),?$/) { + $name = lc $1; + $id = $2; + $ProcName = name_to_ProcName ($name); + + $calls[$id] = $calls{$name}; + } +} + +#---------------------------------------------------------------------- +# Output + +print <<__EOF__; +/* Automatically generated by remote_generator.pl. + * Do not edit this file. Any changes you make will be lost. + */ + +__EOF__ + +# Debugging. +if ($opt_d) { + my @keys = sort (keys %calls); + foreach (@keys) { + print "$_:\n"; + print " name $calls{$_}->{name} ($calls{$_}->{ProcName})\n"; + print " $calls{$_}->{args} -> $calls{$_}->{ret}\n"; + } +} + +# Prototypes for dispatch functions ("remote_dispatch_prototypes.h"). +elsif ($opt_p) { + my @keys = sort (keys %calls); + foreach (@keys) { + # Skip things which are REMOTE_MESSAGE + next if $calls{$_}->{msg}; + + print "static int ${structprefix}Dispatch$calls{$_}->{ProcName}(\n"; + print " struct qemud_server *server,\n"; + print " struct qemud_client *client,\n"; + print " virConnectPtr conn,\n"; + print " remote_message_header *hdr,\n"; + print " remote_error *rerr,\n"; + print " $calls{$_}->{args} *args,\n"; + print " $calls{$_}->{ret} *ret);\n"; + } +} + +# Union of all arg types +# ("remote_dispatch_args.h"). +elsif ($opt_a) { + for ($id = 0 ; $id <= $#calls ; $id++) { + if (defined $calls[$id] && + !$calls[$id]->{msg} && + $calls[$id]->{args} ne "void") { + print " $calls[$id]->{args} val_$calls[$id]->{args};\n"; + } + } +} + +# Union of all arg types +# ("remote_dispatch_ret.h"). +elsif ($opt_r) { + for ($id = 0 ; $id <= $#calls ; $id++) { + if (defined $calls[$id] && + !$calls[$id]->{msg} && + $calls[$id]->{ret} ne "void") { + print " $calls[$id]->{ret} val_$calls[$id]->{ret};\n"; + } + } +} + +# Inside the switch statement, prepare the 'fn', 'args_filter', etc +# ("remote_dispatch_table.h"). +elsif ($opt_t) { + for ($id = 0 ; $id <= $#calls ; $id++) { + if (defined $calls[$id] && !$calls[$id]->{msg}) { + print "{ /* $calls[$id]->{ProcName} => $id */\n"; + print " .fn = (dispatch_fn) ${structprefix}Dispatch$calls[$id]->{ProcName},\n"; + if ($calls[$id]->{args} ne "void") { + print " .args_filter = (xdrproc_t) xdr_$calls[$id]->{args},\n"; + } else { + print " .args_filter = (xdrproc_t) xdr_void,\n"; + } + if ($calls[$id]->{ret} ne "void") { + print " .ret_filter = (xdrproc_t) xdr_$calls[$id]->{ret},\n"; + } else { + print " .ret_filter = (xdrproc_t) xdr_void,\n"; + } + print "},\n"; + } else { + if ($calls[$id]->{msg}) { + print "{ /* Async event $calls[$id]->{ProcName} => $id */\n"; + } else { + print "{ /* (unused) => $id */\n"; + } + print " .fn = NULL,\n"; + print " .args_filter = (xdrproc_t) xdr_void,\n"; + print " .ret_filter = (xdrproc_t) xdr_void,\n"; + print "},\n"; + } + } +} diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index 675eccd..b9f1bc7 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -367,7 +367,7 @@ struct remote_memory_param { * connection). Errors are returned implicitly in the RPC protocol. * * Please follow the naming convention carefully - this file is - * parsed by 'remote_generate_stubs.pl'. + * parsed by 'remote_generator.pl'. */ struct remote_open_args { -- 1.7.0.4

On 04/24/2011 03:13 AM, Matthias Bolte wrote:
No functional change included, just a whitespace change. --- daemon/Makefile.am | 34 +++--- daemon/qemu_dispatch_args.h | 2 +- daemon/qemu_dispatch_prototypes.h | 2 +- daemon/qemu_dispatch_ret.h | 2 +- daemon/qemu_dispatch_table.h | 2 +- daemon/remote_dispatch_args.h | 2 +- daemon/remote_dispatch_prototypes.h | 2 +- daemon/remote_dispatch_ret.h | 2 +- daemon/remote_dispatch_table.h | 2 +- daemon/remote_generate_stubs.pl | 195 ----------------------------------- daemon/remote_generator.pl | 195 +++++++++++++++++++++++++++++++++++ src/remote/remote_protocol.x | 2 +- 12 files changed, 221 insertions(+), 221 deletions(-) delete mode 100755 daemon/remote_generate_stubs.pl create mode 100755 daemon/remote_generator.pl
ACK. 'git config diff.renames true' might have made this patch more compact to review. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

This patch just covers the simple functions without explicit return values. There is more to be handled. The generator collects the members of the XDR argument structs and uses this information to generate the function bodies. Exclude the generated files from offending syntax-checks. Suggested by Richard W.M. Jones --- cfg.mk | 8 +- daemon/Makefile.am | 12 +- daemon/qemu_dispatch_bodies.c | 6 + daemon/remote.c | 1710 +----------------------------- daemon/remote_dispatch_bodies.c | 2048 +++++++++++++++++++++++++++++++++++ daemon/remote_dispatch_prototypes.h | 10 +- daemon/remote_dispatch_table.h | 20 +- daemon/remote_generator.pl | 254 +++++- po/POTFILES.in | 1 + src/remote/remote_protocol.x | 6 +- 10 files changed, 2344 insertions(+), 1731 deletions(-) create mode 100644 daemon/qemu_dispatch_bodies.c create mode 100644 daemon/remote_dispatch_bodies.c diff --git a/cfg.mk b/cfg.mk index 72dd69c..a38ea48 100644 --- a/cfg.mk +++ b/cfg.mk @@ -590,7 +590,7 @@ exclude_file_name_regexp--sc_avoid_write = \ exclude_file_name_regexp--sc_bindtextdomain = ^(tests|examples)/ -exclude_file_name_regexp--sc_po_check = ^docs/ +exclude_file_name_regexp--sc_po_check = ^(docs/|daemon/remote_generator.pl$$) exclude_file_name_regexp--sc_prohibit_VIR_ERR_NO_MEMORY = \ ^(include/libvirt/virterror\.h|daemon/dispatch\.c|src/util/virterror\.c)$$ @@ -611,7 +611,7 @@ exclude_file_name_regexp--sc_prohibit_close = \ exclude_file_name_regexp--sc_prohibit_doubled_word = ^po/ exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \ - (^docs/api_extension/|^tests/qemuhelpdata/|\.(gif|ico|png)$$) + (^docs/api_extension/|^tests/qemuhelpdata/|\.(gif|ico|png)$$|daemon/.*_dispatch_bodies.c$$) _src2=src/(util/util|libvirt|lxc/lxc_controller) exclude_file_name_regexp--sc_prohibit_fork_wrappers = \ @@ -633,9 +633,9 @@ exclude_file_name_regexp--sc_prohibit_strncpy = \ exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/xml\.c$$ -exclude_file_name_regexp--sc_require_config_h = ^examples/ +exclude_file_name_regexp--sc_require_config_h = ^(examples/|daemon/.*_dispatch_bodies.c$$) -exclude_file_name_regexp--sc_require_config_h_first = ^examples/ +exclude_file_name_regexp--sc_require_config_h_first = ^(examples/|daemon/.*_dispatch_bodies.c$$) exclude_file_name_regexp--sc_trailing_blank = (^docs/|\.(fig|gif|ico|png)$$) diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 14088bc..3dec183 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -24,6 +24,8 @@ AVAHI_SOURCES = \ DISTCLEANFILES = EXTRA_DIST = \ remote_generator.pl \ + remote_dispatch_bodies.c \ + qemu_dispatch_bodies.c \ libvirtd.conf \ libvirtd.init.in \ libvirtd.upstart \ @@ -204,8 +206,10 @@ endif remote.c: \ remote_dispatch_prototypes.h \ remote_dispatch_table.h \ + remote_dispatch_bodies.c \ qemu_dispatch_prototypes.h \ - qemu_dispatch_table.h + qemu_dispatch_table.h \ + qemu_dispatch_bodies.c remote.h: \ remote_dispatch_args.h \ @@ -228,6 +232,9 @@ remote_dispatch_args.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) remote_dispatch_ret.h: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -r remote $(REMOTE_PROTOCOL) > $@ +remote_dispatch_bodies.c: $(srcdir)/remote_generator.pl $(REMOTE_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -c -b remote $(REMOTE_PROTOCOL) > $@ + qemu_dispatch_prototypes.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -p qemu $(QEMU_PROTOCOL) > $@ @@ -240,6 +247,9 @@ qemu_dispatch_args.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) qemu_dispatch_ret.h: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -r qemu $(QEMU_PROTOCOL) > $@ +qemu_dispatch_bodies.c: $(srcdir)/remote_generator.pl $(QEMU_PROTOCOL) + $(AM_V_GEN)perl -w $(srcdir)/remote_generator.pl -b qemu $(QEMU_PROTOCOL) > $@ + LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \ libvirtd.uml.logrotate libvirtd.logrotate diff --git a/daemon/qemu_dispatch_bodies.c b/daemon/qemu_dispatch_bodies.c new file mode 100644 index 0000000..98ae2c1 --- /dev/null +++ b/daemon/qemu_dispatch_bodies.c @@ -0,0 +1,6 @@ +/* Automatically generated by remote_generator.pl. + * Do not edit this file. Any changes you make will be lost. + */ + +/* qemuDispatchMonitorCommand has to be implemented manually */ + diff --git a/daemon/remote.c b/daemon/remote.c index 1c98bba..676c99a 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1290,138 +1290,6 @@ cleanup: } static int -remoteDispatchDomainAttachDevice(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_attach_device_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainAttachDevice(dom, args->xml) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainAttachDeviceFlags(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_attach_device_flags_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainAttachDeviceFlags(dom, args->xml, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainUpdateDeviceFlags(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_update_device_flags_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainUpdateDeviceFlags(dom, args->xml, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainCreate(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_create_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainCreate(dom) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainCreateWithFlags(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1516,105 +1384,6 @@ cleanup: } static int -remoteDispatchDomainDestroy(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_destroy_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainDestroy(dom) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainDetachDevice(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_detach_device_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainDetachDevice(dom, args->xml) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainDetachDeviceFlags(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_detach_device_flags_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainDetachDeviceFlags(dom, args->xml, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -2565,297 +2334,6 @@ cleanup: } static int -remoteDispatchDomainReboot(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_reboot_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainReboot(dom, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainRestore(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_restore_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (virDomainRestore(conn, args->from) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchDomainResume(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_resume_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainResume(dom) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSave(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_save_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSave(dom, args->to) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainCoreDump(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_core_dump_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainCoreDump(dom, args->to, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSetAutostart(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_set_autostart_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSetAutostart(dom, args->autostart) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSetMaxMemory(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_set_max_memory_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSetMaxMemory(dom, args->memory) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSetMemory(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_set_memory_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSetMemory(dom, args->memory) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSetMemoryFlags(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_set_memory_flags_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSetMemoryFlags(dom, args->memory, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainSetMemoryParameters(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client @@ -3288,171 +2766,6 @@ no_memory: } static int -remoteDispatchDomainSetVcpus(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_set_vcpus_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSetVcpus(dom, args->nvcpus) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSetVcpusFlags(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_set_vcpus_flags_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSetVcpusFlags(dom, args->nvcpus, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainShutdown(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_shutdown_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainShutdown(dom) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSuspend(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_suspend_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainSuspend(dom) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainUndefine(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_undefine_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainUndefine(dom) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchListDefinedNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3543,39 +2856,6 @@ cleanup: } static int -remoteDispatchDomainManagedSave(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_managed_save_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainManagedSave(dom, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainHasManagedSaveImage(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3609,39 +2889,6 @@ cleanup: } static int -remoteDispatchDomainManagedSaveRemove(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_managed_save_remove_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainManagedSaveRemove(dom, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchListNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3687,39 +2934,6 @@ cleanup: } static int -remoteDispatchNetworkCreate(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_create_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - if (virNetworkCreate(net) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int remoteDispatchNetworkCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3784,39 +2998,6 @@ cleanup: } static int -remoteDispatchNetworkDestroy(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_destroy_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - if (virNetworkDestroy(net) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int remoteDispatchNetworkDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3982,72 +3163,6 @@ cleanup: } static int -remoteDispatchNetworkSetAutostart(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_set_autostart_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - if (virNetworkSetAutostart(net, args->autostart) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int -remoteDispatchNetworkUndefine(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_undefine_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - if (virNetworkUndefine(net) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int remoteDispatchNumOfDefinedNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -4410,105 +3525,6 @@ cleanup: return rv; } -static int -remoteDispatchInterfaceUndefine(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_undefine_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = get_nonnull_interface(conn, args->iface))) - goto cleanup; - - if (virInterfaceUndefine(iface) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - -static int -remoteDispatchInterfaceCreate(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_create_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = get_nonnull_interface(conn, args->iface))) - goto cleanup; - - if (virInterfaceCreate(iface, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - -static int -remoteDispatchInterfaceDestroy(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_destroy_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = get_nonnull_interface(conn, args->iface))) - goto cleanup; - - if (virInterfaceDestroy(iface, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - /*-------------------------------------------------------------*/ static int @@ -5435,40 +4451,6 @@ cleanup: return rv; } - -static int -remoteDispatchStoragePoolCreate(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_create_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolCreate(pool, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - static int remoteDispatchStoragePoolCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -5534,139 +4516,6 @@ cleanup: } static int -remoteDispatchStoragePoolBuild(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_build_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolBuild(pool, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - - -static int -remoteDispatchStoragePoolDestroy(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_destroy_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolDestroy(pool) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int -remoteDispatchStoragePoolDelete(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_delete_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolDelete(pool, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int -remoteDispatchStoragePoolRefresh(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_refresh_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolRefresh(pool, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int remoteDispatchStoragePoolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -5876,72 +4725,6 @@ cleanup: } static int -remoteDispatchStoragePoolSetAutostart(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_set_autostart_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolSetAutostart(pool, args->autostart) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int -remoteDispatchStoragePoolUndefine(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_undefine_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolUndefine(pool) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int remoteDispatchNumOfStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -6169,72 +4952,6 @@ cleanup: } static int -remoteDispatchStorageVolDelete(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_delete_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = get_nonnull_storage_vol(conn, args->vol))) - goto cleanup; - - if (virStorageVolDelete(vol, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - return rv; -} - -static int -remoteDispatchStorageVolWipe(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_wipe_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = get_nonnull_storage_vol(conn, args->vol))) - goto cleanup; - - if (virStorageVolWipe(vol, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - return rv; -} - -static int remoteDispatchStorageVolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -6731,109 +5448,6 @@ cleanup: return rv; } - -static int -remoteDispatchNodeDeviceDettach(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_dettach_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - if (virNodeDeviceDettach(dev) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - - -static int -remoteDispatchNodeDeviceReAttach(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_re_attach_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - if (virNodeDeviceReAttach(dev) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - - -static int -remoteDispatchNodeDeviceReset(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_reset_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - if (virNodeDeviceReset(dev) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - - static int remoteDispatchNodeDeviceCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -6866,40 +5480,6 @@ cleanup: return rv; } - -static int -remoteDispatchNodeDeviceDestroy(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_destroy_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - if (virNodeDeviceDestroy(dev) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - static int remoteDispatchStorageVolUpload(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client, virConnectPtr conn, @@ -7336,71 +5916,6 @@ cleanup: } static int -remoteDispatchSecretSetValue(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_secret_set_value_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virSecretPtr secret = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(secret = get_nonnull_secret(conn, args->secret))) - goto cleanup; - if (virSecretSetValue(secret, (const unsigned char *)args->value.value_val, - args->value.value_len, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (secret) - virSecretFree(secret); - return rv; -} - -static int -remoteDispatchSecretUndefine(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_secret_undefine_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virSecretPtr secret = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(secret = get_nonnull_secret(conn, args->secret))) - goto cleanup; - if (virSecretUndefine(secret) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (secret) - virSecretFree(secret); - return rv; -} - -static int remoteDispatchSecretLookupByUsage(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -7828,107 +6343,6 @@ cleanup: return rv; } - -static int -remoteDispatchDomainAbortJob(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_abort_job_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainAbortJob(dom) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - - -static int -remoteDispatchDomainMigrateSetMaxDowntime(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_migrate_set_max_downtime_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainMigrateSetMaxDowntime(dom, args->downtime, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainMigrateSetMaxSpeed(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_migrate_set_max_speed_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainMigrateSetMaxSpeed(dom, args->bandwidth, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - static int remoteDispatchDomainSnapshotCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -8207,85 +6621,6 @@ cleanup: } static int -remoteDispatchDomainRevertToSnapshot(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_revert_to_snapshot_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - virDomainSnapshotPtr snapshot = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->snap.domain))) - goto cleanup; - - if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) - goto cleanup; - - if (virDomainRevertToSnapshot(snapshot, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (snapshot) - virDomainSnapshotFree(snapshot); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSnapshotDelete(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_snapshot_delete_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - virDomainSnapshotPtr snapshot = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->snap.domain))) - goto cleanup; - - if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) - goto cleanup; - - if (virDomainSnapshotDelete(snapshot, args->flags) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (snapshot) - virDomainSnapshotFree(snapshot); - if (dom) - virDomainFree(dom); - return rv; -} - - -static int remoteDispatchDomainEventsRegisterAny(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -8374,7 +6709,7 @@ cleanup: static int -remoteDispatchNwfilterLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNWFilterLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -8406,7 +6741,7 @@ cleanup: } static int -remoteDispatchNwfilterLookupByUuid(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNWFilterLookupByUuid(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -8439,7 +6774,7 @@ cleanup: static int -remoteDispatchNwfilterDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNWFilterDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -8470,40 +6805,6 @@ cleanup: return rv; } - -static int -remoteDispatchNwfilterUndefine(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_nwfilter_undefine_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virNWFilterPtr nwfilter = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter))) - goto cleanup; - - if (virNWFilterUndefine(nwfilter) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (nwfilter) - virNWFilterFree(nwfilter); - return rv; -} - static int remoteDispatchListNwfilters(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -8551,7 +6852,7 @@ cleanup: static int -remoteDispatchNwfilterGetXmlDesc(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNWFilterGetXmlDesc(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -8735,6 +7036,9 @@ cleanup: return rv; } +#include "remote_dispatch_bodies.c" +#include "qemu_dispatch_bodies.c" + /*----- Helpers. -----*/ diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c new file mode 100644 index 0000000..962b12a --- /dev/null +++ b/daemon/remote_dispatch_bodies.c @@ -0,0 +1,2048 @@ +/* Automatically generated by remote_generator.pl. + * Do not edit this file. Any changes you make will be lost. + */ + +/* remoteDispatchAuthList has to be implemented manually */ + +/* remoteDispatchAuthPolkit has to be implemented manually */ + +/* remoteDispatchAuthSaslInit has to be implemented manually */ + +/* remoteDispatchAuthSaslStart has to be implemented manually */ + +/* remoteDispatchAuthSaslStep has to be implemented manually */ + +/* remoteDispatchClose has to be implemented manually */ + +/* remoteDispatchCpuBaseline has to be implemented manually */ + +/* remoteDispatchCpuCompare has to be implemented manually */ + +static int +remoteDispatchDomainAbortJob( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_abort_job_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainAbortJob(dom) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainAttachDevice( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_attach_device_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainAttachDevice(dom, args->xml) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainAttachDeviceFlags( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_attach_device_flags_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainAttachDeviceFlags(dom, args->xml, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainBlockPeek has to be implemented manually */ + +/* remoteDispatchDomainBlockStats has to be implemented manually */ + +static int +remoteDispatchDomainCoreDump( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_core_dump_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainCoreDump(dom, args->to, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainCreate( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_create_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainCreate(dom) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainCreateWithFlags has to be implemented manually */ + +/* remoteDispatchDomainCreateXml has to be implemented manually */ + +/* remoteDispatchDomainDefineXml has to be implemented manually */ + +static int +remoteDispatchDomainDestroy( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_destroy_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainDestroy(dom) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainDetachDevice( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_detach_device_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainDetachDevice(dom, args->xml) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainDetachDeviceFlags( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_detach_device_flags_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainDetachDeviceFlags(dom, args->xml, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainDumpXml has to be implemented manually */ + +/* remoteDispatchDomainEventsDeregister has to be implemented manually */ + +/* remoteDispatchDomainEventsDeregisterAny has to be implemented manually */ + +/* remoteDispatchDomainEventsRegister has to be implemented manually */ + +/* remoteDispatchDomainEventsRegisterAny has to be implemented manually */ + +/* remoteDispatchDomainGetAutostart has to be implemented manually */ + +/* remoteDispatchDomainGetBlkioParameters has to be implemented manually */ + +/* remoteDispatchDomainGetBlockInfo has to be implemented manually */ + +/* remoteDispatchDomainGetInfo has to be implemented manually */ + +/* remoteDispatchDomainGetJobInfo has to be implemented manually */ + +/* remoteDispatchDomainGetMaxMemory has to be implemented manually */ + +/* remoteDispatchDomainGetMaxVcpus has to be implemented manually */ + +/* remoteDispatchDomainGetMemoryParameters has to be implemented manually */ + +/* remoteDispatchDomainGetOsType has to be implemented manually */ + +/* remoteDispatchDomainGetSchedulerParameters has to be implemented manually */ + +/* remoteDispatchDomainGetSchedulerType has to be implemented manually */ + +/* remoteDispatchDomainGetSecurityLabel has to be implemented manually */ + +/* remoteDispatchDomainGetVcpus has to be implemented manually */ + +/* remoteDispatchDomainGetVcpusFlags has to be implemented manually */ + +/* remoteDispatchDomainHasCurrentSnapshot has to be implemented manually */ + +/* remoteDispatchDomainHasManagedSaveImage has to be implemented manually */ + +/* remoteDispatchDomainInterfaceStats has to be implemented manually */ + +/* remoteDispatchDomainIsActive has to be implemented manually */ + +/* remoteDispatchDomainIsPersistent has to be implemented manually */ + +/* remoteDispatchDomainIsUpdated has to be implemented manually */ + +/* remoteDispatchDomainLookupById has to be implemented manually */ + +/* remoteDispatchDomainLookupByName has to be implemented manually */ + +/* remoteDispatchDomainLookupByUuid has to be implemented manually */ + +static int +remoteDispatchDomainManagedSave( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_managed_save_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainManagedSave(dom, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainManagedSaveRemove( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_managed_save_remove_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainManagedSaveRemove(dom, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainMemoryPeek has to be implemented manually */ + +/* remoteDispatchDomainMemoryStats has to be implemented manually */ + +/* remoteDispatchDomainMigrateFinish has to be implemented manually */ + +/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */ + +/* remoteDispatchDomainMigratePerform has to be implemented manually */ + +/* remoteDispatchDomainMigratePrepare has to be implemented manually */ + +/* remoteDispatchDomainMigratePrepare2 has to be implemented manually */ + +/* remoteDispatchDomainMigratePrepareTunnel has to be implemented manually */ + +static int +remoteDispatchDomainMigrateSetMaxDowntime( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_migrate_set_max_downtime_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainMigrateSetMaxDowntime(dom, args->downtime, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainMigrateSetMaxSpeed( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_migrate_set_max_speed_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainMigrateSetMaxSpeed(dom, args->bandwidth, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainOpenConsole has to be implemented manually */ + +/* remoteDispatchDomainPinVcpu has to be implemented manually */ + +static int +remoteDispatchDomainReboot( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_reboot_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainReboot(dom, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainRestore( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_restore_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + + if (virDomainRestore(conn, args->from) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + + return rv; +} + +static int +remoteDispatchDomainResume( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_resume_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainResume(dom) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainRevertToSnapshot( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_revert_to_snapshot_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainSnapshotPtr snapshot = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->snap.domain))) + goto cleanup; + + if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) + goto cleanup; + + if (virDomainRevertToSnapshot(snapshot, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (snapshot) + virDomainSnapshotFree(snapshot); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainSave( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_save_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSave(dom, args->to) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainSetAutostart( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_set_autostart_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSetAutostart(dom, args->autostart) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainSetBlkioParameters has to be implemented manually */ + +static int +remoteDispatchDomainSetMaxMemory( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_set_max_memory_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSetMaxMemory(dom, args->memory) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainSetMemory( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_set_memory_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSetMemory(dom, args->memory) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainSetMemoryFlags( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_set_memory_flags_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSetMemoryFlags(dom, args->memory, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainSetMemoryParameters has to be implemented manually */ + +/* remoteDispatchDomainSetSchedulerParameters has to be implemented manually */ + +static int +remoteDispatchDomainSetVcpus( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_set_vcpus_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSetVcpus(dom, args->nvcpus) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainSetVcpusFlags( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_set_vcpus_flags_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSetVcpusFlags(dom, args->nvcpus, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainShutdown( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_shutdown_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainShutdown(dom) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainSnapshotCreateXml has to be implemented manually */ + +/* remoteDispatchDomainSnapshotCurrent has to be implemented manually */ + +static int +remoteDispatchDomainSnapshotDelete( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_snapshot_delete_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainSnapshotPtr snapshot = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->snap.domain))) + goto cleanup; + + if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) + goto cleanup; + + if (virDomainSnapshotDelete(snapshot, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (snapshot) + virDomainSnapshotFree(snapshot); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainSnapshotDumpXml has to be implemented manually */ + +/* remoteDispatchDomainSnapshotListNames has to be implemented manually */ + +/* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */ + +/* remoteDispatchDomainSnapshotNum has to be implemented manually */ + +static int +remoteDispatchDomainSuspend( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_suspend_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainSuspend(dom) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainUndefine( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_undefine_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainUndefine(dom) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainUpdateDeviceFlags( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_update_device_flags_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainUpdateDeviceFlags(dom, args->xml, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +/* remoteDispatchDomainXmlFromNative has to be implemented manually */ + +/* remoteDispatchDomainXmlToNative has to be implemented manually */ + +/* remoteDispatchFindStoragePoolSources has to be implemented manually */ + +/* remoteDispatchGetCapabilities has to be implemented manually */ + +/* remoteDispatchGetHostname has to be implemented manually */ + +/* remoteDispatchGetLibVersion has to be implemented manually */ + +/* remoteDispatchGetMaxVcpus has to be implemented manually */ + +/* remoteDispatchGetSysinfo has to be implemented manually */ + +/* remoteDispatchGetType has to be implemented manually */ + +/* remoteDispatchGetUri has to be implemented manually */ + +/* remoteDispatchGetVersion has to be implemented manually */ + +static int +remoteDispatchInterfaceCreate( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_create_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virInterfacePtr iface = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(iface = get_nonnull_interface(conn, args->iface))) + goto cleanup; + + if (virInterfaceCreate(iface, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} + +/* remoteDispatchInterfaceDefineXml has to be implemented manually */ + +static int +remoteDispatchInterfaceDestroy( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_destroy_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virInterfacePtr iface = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(iface = get_nonnull_interface(conn, args->iface))) + goto cleanup; + + if (virInterfaceDestroy(iface, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} + +/* remoteDispatchInterfaceGetXmlDesc has to be implemented manually */ + +/* remoteDispatchInterfaceIsActive has to be implemented manually */ + +/* remoteDispatchInterfaceLookupByMacString has to be implemented manually */ + +/* remoteDispatchInterfaceLookupByName has to be implemented manually */ + +static int +remoteDispatchInterfaceUndefine( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_undefine_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virInterfacePtr iface = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(iface = get_nonnull_interface(conn, args->iface))) + goto cleanup; + + if (virInterfaceUndefine(iface) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} + +/* remoteDispatchIsSecure has to be implemented manually */ + +/* remoteDispatchListDefinedDomains has to be implemented manually */ + +/* remoteDispatchListDefinedInterfaces has to be implemented manually */ + +/* remoteDispatchListDefinedNetworks has to be implemented manually */ + +/* remoteDispatchListDefinedStoragePools has to be implemented manually */ + +/* remoteDispatchListDomains has to be implemented manually */ + +/* remoteDispatchListInterfaces has to be implemented manually */ + +/* remoteDispatchListNetworks has to be implemented manually */ + +/* remoteDispatchListNwfilters has to be implemented manually */ + +/* remoteDispatchListSecrets has to be implemented manually */ + +/* remoteDispatchListStoragePools has to be implemented manually */ + +static int +remoteDispatchNetworkCreate( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_create_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if (virNetworkCreate(net) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +/* remoteDispatchNetworkCreateXml has to be implemented manually */ + +/* remoteDispatchNetworkDefineXml has to be implemented manually */ + +static int +remoteDispatchNetworkDestroy( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_destroy_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if (virNetworkDestroy(net) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +/* remoteDispatchNetworkDumpXml has to be implemented manually */ + +/* remoteDispatchNetworkGetAutostart has to be implemented manually */ + +/* remoteDispatchNetworkGetBridgeName has to be implemented manually */ + +/* remoteDispatchNetworkIsActive has to be implemented manually */ + +/* remoteDispatchNetworkIsPersistent has to be implemented manually */ + +/* remoteDispatchNetworkLookupByName has to be implemented manually */ + +/* remoteDispatchNetworkLookupByUuid has to be implemented manually */ + +static int +remoteDispatchNetworkSetAutostart( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_set_autostart_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if (virNetworkSetAutostart(net, args->autostart) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +static int +remoteDispatchNetworkUndefine( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_undefine_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if (virNetworkUndefine(net) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +/* remoteDispatchNodeDeviceCreateXml has to be implemented manually */ + +static int +remoteDispatchNodeDeviceDestroy( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_destroy_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dev = virNodeDeviceLookupByName(conn, args->name))) + goto cleanup; + + if (virNodeDeviceDestroy(dev) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} + +static int +remoteDispatchNodeDeviceDettach( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_dettach_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dev = virNodeDeviceLookupByName(conn, args->name))) + goto cleanup; + + if (virNodeDeviceDettach(dev) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} + +/* remoteDispatchNodeDeviceDumpXml has to be implemented manually */ + +/* remoteDispatchNodeDeviceGetParent has to be implemented manually */ + +/* remoteDispatchNodeDeviceListCaps has to be implemented manually */ + +/* remoteDispatchNodeDeviceLookupByName has to be implemented manually */ + +/* remoteDispatchNodeDeviceNumOfCaps has to be implemented manually */ + +static int +remoteDispatchNodeDeviceReAttach( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_re_attach_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dev = virNodeDeviceLookupByName(conn, args->name))) + goto cleanup; + + if (virNodeDeviceReAttach(dev) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} + +static int +remoteDispatchNodeDeviceReset( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_reset_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dev = virNodeDeviceLookupByName(conn, args->name))) + goto cleanup; + + if (virNodeDeviceReset(dev) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} + +/* remoteDispatchNodeGetCellsFreeMemory has to be implemented manually */ + +/* remoteDispatchNodeGetFreeMemory has to be implemented manually */ + +/* remoteDispatchNodeGetInfo has to be implemented manually */ + +/* remoteDispatchNodeGetSecurityModel has to be implemented manually */ + +/* remoteDispatchNodeListDevices has to be implemented manually */ + +/* remoteDispatchNodeNumOfDevices has to be implemented manually */ + +/* remoteDispatchNumOfDefinedDomains has to be implemented manually */ + +/* remoteDispatchNumOfDefinedInterfaces has to be implemented manually */ + +/* remoteDispatchNumOfDefinedNetworks has to be implemented manually */ + +/* remoteDispatchNumOfDefinedStoragePools has to be implemented manually */ + +/* remoteDispatchNumOfDomains has to be implemented manually */ + +/* remoteDispatchNumOfInterfaces has to be implemented manually */ + +/* remoteDispatchNumOfNetworks has to be implemented manually */ + +/* remoteDispatchNumOfNwfilters has to be implemented manually */ + +/* remoteDispatchNumOfSecrets has to be implemented manually */ + +/* remoteDispatchNumOfStoragePools has to be implemented manually */ + +/* remoteDispatchNWFilterDefineXml has to be implemented manually */ + +/* remoteDispatchNWFilterGetXmlDesc has to be implemented manually */ + +/* remoteDispatchNWFilterLookupByName has to be implemented manually */ + +/* remoteDispatchNWFilterLookupByUuid has to be implemented manually */ + +static int +remoteDispatchNWFilterUndefine( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_nwfilter_undefine_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virNWFilterPtr nwfilter = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter))) + goto cleanup; + + if (virNWFilterUndefine(nwfilter) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (nwfilter) + virNWFilterFree(nwfilter); + return rv; +} + +/* remoteDispatchOpen has to be implemented manually */ + +/* remoteDispatchSecretDefineXml has to be implemented manually */ + +/* remoteDispatchSecretGetValue has to be implemented manually */ + +/* remoteDispatchSecretGetXmlDesc has to be implemented manually */ + +/* remoteDispatchSecretLookupByUsage has to be implemented manually */ + +/* remoteDispatchSecretLookupByUuid has to be implemented manually */ + +static int +remoteDispatchSecretSetValue( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_secret_set_value_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virSecretPtr secret = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(secret = get_nonnull_secret(conn, args->secret))) + goto cleanup; + + if (virSecretSetValue(secret, (const unsigned char *)args->value.value_val, args->value.value_len, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (secret) + virSecretFree(secret); + return rv; +} + +static int +remoteDispatchSecretUndefine( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_secret_undefine_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virSecretPtr secret = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(secret = get_nonnull_secret(conn, args->secret))) + goto cleanup; + + if (virSecretUndefine(secret) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (secret) + virSecretFree(secret); + return rv; +} + +static int +remoteDispatchStoragePoolBuild( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_build_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolBuild(pool, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolCreate( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_create_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolCreate(pool, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +/* remoteDispatchStoragePoolCreateXml has to be implemented manually */ + +/* remoteDispatchStoragePoolDefineXml has to be implemented manually */ + +static int +remoteDispatchStoragePoolDelete( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_delete_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolDelete(pool, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolDestroy( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_destroy_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolDestroy(pool) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +/* remoteDispatchStoragePoolDumpXml has to be implemented manually */ + +/* remoteDispatchStoragePoolGetAutostart has to be implemented manually */ + +/* remoteDispatchStoragePoolGetInfo has to be implemented manually */ + +/* remoteDispatchStoragePoolIsActive has to be implemented manually */ + +/* remoteDispatchStoragePoolIsPersistent has to be implemented manually */ + +/* remoteDispatchStoragePoolListVolumes has to be implemented manually */ + +/* remoteDispatchStoragePoolLookupByName has to be implemented manually */ + +/* remoteDispatchStoragePoolLookupByUuid has to be implemented manually */ + +/* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */ + +/* remoteDispatchStoragePoolNumOfVolumes has to be implemented manually */ + +static int +remoteDispatchStoragePoolRefresh( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_refresh_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolRefresh(pool, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolSetAutostart( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_set_autostart_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolSetAutostart(pool, args->autostart) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolUndefine( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_undefine_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolUndefine(pool) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +/* remoteDispatchStorageVolCreateXml has to be implemented manually */ + +/* remoteDispatchStorageVolCreateXmlFrom has to be implemented manually */ + +static int +remoteDispatchStorageVolDelete( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_delete_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(vol = get_nonnull_storage_vol(conn, args->vol))) + goto cleanup; + + if (virStorageVolDelete(vol, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + return rv; +} + +/* remoteDispatchStorageVolDownload has to be implemented manually */ + +/* remoteDispatchStorageVolDumpXml has to be implemented manually */ + +/* remoteDispatchStorageVolGetInfo has to be implemented manually */ + +/* remoteDispatchStorageVolGetPath has to be implemented manually */ + +/* remoteDispatchStorageVolLookupByKey has to be implemented manually */ + +/* remoteDispatchStorageVolLookupByName has to be implemented manually */ + +/* remoteDispatchStorageVolLookupByPath has to be implemented manually */ + +/* remoteDispatchStorageVolUpload has to be implemented manually */ + +static int +remoteDispatchStorageVolWipe( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_wipe_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(vol = get_nonnull_storage_vol(conn, args->vol))) + goto cleanup; + + if (virStorageVolWipe(vol, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + return rv; +} + +/* remoteDispatchSupportsFeature has to be implemented manually */ + diff --git a/daemon/remote_dispatch_prototypes.h b/daemon/remote_dispatch_prototypes.h index a029b85..29ae5ba 100644 --- a/daemon/remote_dispatch_prototypes.h +++ b/daemon/remote_dispatch_prototypes.h @@ -1258,7 +1258,7 @@ static int remoteDispatchNumOfStoragePools( remote_error *rerr, void *args, remote_num_of_storage_pools_ret *ret); -static int remoteDispatchNwfilterDefineXml( +static int remoteDispatchNWFilterDefineXml( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1266,7 +1266,7 @@ static int remoteDispatchNwfilterDefineXml( remote_error *rerr, remote_nwfilter_define_xml_args *args, remote_nwfilter_define_xml_ret *ret); -static int remoteDispatchNwfilterGetXmlDesc( +static int remoteDispatchNWFilterGetXmlDesc( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1274,7 +1274,7 @@ static int remoteDispatchNwfilterGetXmlDesc( remote_error *rerr, remote_nwfilter_get_xml_desc_args *args, remote_nwfilter_get_xml_desc_ret *ret); -static int remoteDispatchNwfilterLookupByName( +static int remoteDispatchNWFilterLookupByName( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1282,7 +1282,7 @@ static int remoteDispatchNwfilterLookupByName( remote_error *rerr, remote_nwfilter_lookup_by_name_args *args, remote_nwfilter_lookup_by_name_ret *ret); -static int remoteDispatchNwfilterLookupByUuid( +static int remoteDispatchNWFilterLookupByUuid( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1290,7 +1290,7 @@ static int remoteDispatchNwfilterLookupByUuid( remote_error *rerr, remote_nwfilter_lookup_by_uuid_args *args, remote_nwfilter_lookup_by_uuid_ret *ret); -static int remoteDispatchNwfilterUndefine( +static int remoteDispatchNWFilterUndefine( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, diff --git a/daemon/remote_dispatch_table.h b/daemon/remote_dispatch_table.h index d2ce08c..d711abc 100644 --- a/daemon/remote_dispatch_table.h +++ b/daemon/remote_dispatch_table.h @@ -877,18 +877,18 @@ .args_filter = (xdrproc_t) xdr_remote_domain_update_device_flags_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* NwfilterLookupByName => 175 */ - .fn = (dispatch_fn) remoteDispatchNwfilterLookupByName, +{ /* NWFilterLookupByName => 175 */ + .fn = (dispatch_fn) remoteDispatchNWFilterLookupByName, .args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_ret, }, -{ /* NwfilterLookupByUuid => 176 */ - .fn = (dispatch_fn) remoteDispatchNwfilterLookupByUuid, +{ /* NWFilterLookupByUuid => 176 */ + .fn = (dispatch_fn) remoteDispatchNWFilterLookupByUuid, .args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_ret, }, -{ /* NwfilterGetXmlDesc => 177 */ - .fn = (dispatch_fn) remoteDispatchNwfilterGetXmlDesc, +{ /* NWFilterGetXmlDesc => 177 */ + .fn = (dispatch_fn) remoteDispatchNWFilterGetXmlDesc, .args_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_ret, }, @@ -902,13 +902,13 @@ .args_filter = (xdrproc_t) xdr_remote_list_nwfilters_args, .ret_filter = (xdrproc_t) xdr_remote_list_nwfilters_ret, }, -{ /* NwfilterDefineXml => 180 */ - .fn = (dispatch_fn) remoteDispatchNwfilterDefineXml, +{ /* NWFilterDefineXml => 180 */ + .fn = (dispatch_fn) remoteDispatchNWFilterDefineXml, .args_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_ret, }, -{ /* NwfilterUndefine => 181 */ - .fn = (dispatch_fn) remoteDispatchNwfilterUndefine, +{ /* NWFilterUndefine => 181 */ + .fn = (dispatch_fn) remoteDispatchNWFilterUndefine, .args_filter = (xdrproc_t) xdr_remote_nwfilter_undefine_args, .ret_filter = (xdrproc_t) xdr_void, }, diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index e4cade6..bf971e2 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -13,14 +13,15 @@ # remote_generator.pl -t qemu ../src/remote/qemu_protocol.x # # By Richard Jones <rjones@redhat.com> +# Extended by Matthias Bolte <matthias.bolte@googlemail.com> use strict; use Getopt::Std; # Command line options. -our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c); -getopts ('ptardc'); +our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c, $opt_b); +getopts ('ptardcb'); my $structprefix = $ARGV[0]; my $procprefix = uc $structprefix; @@ -31,6 +32,7 @@ sub name_to_ProcName { my $name = shift; my @elems = split /_/, $name; @elems = map ucfirst, @elems; + @elems = map { $_ eq "Nwfilter" ? "NWFilter" : $_ } @elems; join "", @elems } @@ -50,8 +52,17 @@ if ($opt_c) { }; } +my $collect_args_members = 0; +my $last_name; + while (<>) { - if (/^struct ${structprefix}_(.*)_args/) { + if ($collect_args_members) { + if (/^};/) { + $collect_args_members = 0; + } elsif ($_ =~ m/^\s*(.*\S)\s*$/) { + push(@{$calls{$name}->{args_members}}, $1); + } + } elsif (/^struct ${structprefix}_(.*)_args/) { $name = $1; $ProcName = name_to_ProcName ($name); @@ -63,9 +74,12 @@ while (<>) { ProcName => $ProcName, UC_NAME => uc $name, args => "${structprefix}_${name}_args", - ret => "void", + args_members => [], + ret => "void" }; + $collect_args_members = 1; + $last_name = $name; } elsif (/^struct ${structprefix}_(.*)_ret/) { $name = $1; $ProcName = name_to_ProcName ($name); @@ -81,6 +95,8 @@ while (<>) { ret => "${structprefix}_${name}_ret" } } + + $collect_args_members = 0; } elsif (/^struct ${structprefix}_(.*)_msg/) { $name = $1; $ProcName = name_to_ProcName ($name); @@ -90,13 +106,19 @@ while (<>) { ProcName => $ProcName, UC_NAME => uc $name, msg => "${structprefix}_${name}_msg" - } + }; + + $collect_args_members = 0; } elsif (/^\s*${procprefix}_PROC_(.*?)\s+=\s+(\d+),?$/) { $name = lc $1; $id = $2; $ProcName = name_to_ProcName ($name); $calls[$id] = $calls{$name}; + + $collect_args_members = 0; + } else { + $collect_args_members = 0; } } @@ -193,3 +215,225 @@ elsif ($opt_t) { } } } + +# Bodies for dispatch functions ("remote_dispatch_bodies.c"). +elsif ($opt_b) { + # list of functions that currently are not generatable + my @ungeneratable; + + if ($structprefix eq "remote") { + @ungeneratable = ("Close", + "DomainEventsDeregisterAny", + "DomainEventsRegisterAny", + "DomainMigratePerform", + "DomainMigratePrepareTunnel", + "DomainOpenConsole", + "DomainPinVcpu", + "DomainSetSchedulerParameters", + "DomainSetMemoryParameters", + "DomainSetBlkioParameters", + "Open", + "StorageVolUpload", + "StorageVolDownload"); + } elsif ($structprefix eq "qemu") { + @ungeneratable = ("MonitorCommand"); + } + + my %ug = map { $_ => 1 } @ungeneratable; + my @keys = sort (keys %calls); + + foreach (@keys) { + # skip things which are REMOTE_MESSAGE + next if $calls{$_}->{msg}; + + # FIXME: skip functions with explicit return value for now + if ($calls{$_}->{ret} ne "void" or exists($ug{$calls{$_}->{ProcName}})) { + print "/* ${structprefix}Dispatch$calls{$_}->{ProcName} has to be implemented manually */\n\n"; + next; + } + + print "static int\n"; + print "${structprefix}Dispatch$calls{$_}->{ProcName}(\n"; + print " struct qemud_server *server ATTRIBUTE_UNUSED,\n"; + print " struct qemud_client *client ATTRIBUTE_UNUSED,\n"; + print " virConnectPtr conn,\n"; + print " remote_message_header *hdr ATTRIBUTE_UNUSED,\n"; + print " remote_error *rerr,\n"; + print " $calls{$_}->{args} *args"; + + if ($calls{$_}->{args} eq "void") { + print " ATTRIBUTE_UNUSED" + } + + print ",\n"; + print " $calls{$_}->{ret} *ret"; + + if ($calls{$_}->{ret} eq "void") { + print " ATTRIBUTE_UNUSED" + } + + print ")\n"; + print "{\n"; + print " int rv = -1;\n"; + + my $has_node_device = 0; + my @vars_list = (); + my @getters_list = (); + my @args_list = (); + my @free_list = (); + + if ($calls{$_}->{args} ne "void") { + # node device is special, as it's identified by name + if ($calls{$_}->{args} =~ m/^remote_node_device/) { + $has_node_device = 1; + push(@vars_list, "virNodeDevicePtr dev = NULL"); + push(@getters_list, + " if (!(dev = virNodeDeviceLookupByName(conn, args->name)))\n" . + " goto cleanup;\n"); + push(@args_list, "dev"); + push(@free_list, + " if (dev)\n" . + " virNodeDeviceFree(dev);"); + } + + foreach my $args_member (@{$calls{$_}->{args_members}}) { + if ($args_member =~ m/^remote_nonnull_string name;/ and $has_node_device) { + # ignore the name arg for node devices + next + } elsif ($args_member =~ m/^remote_nonnull_domain /) { + push(@vars_list, "virDomainPtr dom = NULL"); + push(@getters_list, + " if (!(dom = get_nonnull_domain(conn, args->dom)))\n" . + " goto cleanup;\n"); + push(@args_list, "dom"); + push(@free_list, + " if (dom)\n" . + " virDomainFree(dom);"); + } elsif ($args_member =~ m/^remote_nonnull_network /) { + push(@vars_list, "virNetworkPtr net = NULL"); + push(@getters_list, + " if (!(net = get_nonnull_network(conn, args->net)))\n" . + " goto cleanup;\n"); + push(@args_list, "net"); + push(@free_list, + " if (net)\n" . + " virNetworkFree(net);"); + } elsif ($args_member =~ m/^remote_nonnull_storage_pool /) { + push(@vars_list, "virStoragePoolPtr pool = NULL"); + push(@getters_list, + " if (!(pool = get_nonnull_storage_pool(conn, args->pool)))\n" . + " goto cleanup;\n"); + push(@args_list, "pool"); + push(@free_list, + " if (pool)\n" . + " virStoragePoolFree(pool);"); + } elsif ($args_member =~ m/^remote_nonnull_storage_vol /) { + push(@vars_list, "virStorageVolPtr vol = NULL"); + push(@getters_list, + " if (!(vol = get_nonnull_storage_vol(conn, args->vol)))\n" . + " goto cleanup;\n"); + push(@args_list, "vol"); + push(@free_list, + " if (vol)\n" . + " virStorageVolFree(vol);"); + } elsif ($args_member =~ m/^remote_nonnull_interface /) { + push(@vars_list, "virInterfacePtr iface = NULL"); + push(@getters_list, + " if (!(iface = get_nonnull_interface(conn, args->iface)))\n" . + " goto cleanup;\n"); + push(@args_list, "iface"); + push(@free_list, + " if (iface)\n" . + " virInterfaceFree(iface);"); + } elsif ($args_member =~ m/^remote_nonnull_secret /) { + push(@vars_list, "virSecretPtr secret = NULL"); + push(@getters_list, + " if (!(secret = get_nonnull_secret(conn, args->secret)))\n" . + " goto cleanup;\n"); + push(@args_list, "secret"); + push(@free_list, + " if (secret)\n" . + " virSecretFree(secret);"); + } elsif ($args_member =~ m/^remote_nonnull_nwfilter /) { + push(@vars_list, "virNWFilterPtr nwfilter = NULL"); + push(@getters_list, + " if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter)))\n" . + " goto cleanup;\n"); + push(@args_list, "nwfilter"); + push(@free_list, + " if (nwfilter)\n" . + " virNWFilterFree(nwfilter);"); + } elsif ($args_member =~ m/^remote_nonnull_domain_snapshot /) { + push(@vars_list, "virDomainPtr dom = NULL"); + push(@vars_list, "virDomainSnapshotPtr snapshot = NULL"); + push(@getters_list, + " if (!(dom = get_nonnull_domain(conn, args->snap.domain)))\n" . + " goto cleanup;\n" . + "\n" . + " if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))\n" . + " goto cleanup;\n"); + push(@args_list, "snapshot"); + push(@free_list, + " if (snapshot)\n" . + " virDomainSnapshotFree(snapshot);\n" . + " if (dom)\n" . + " virDomainFree(dom);"); + } elsif ($args_member =~ m/(\S+)<\S+>;/) { + if (! @args_list) { + push(@args_list, "conn"); + } + + if ($calls{$_}->{ProcName} eq "SecretSetValue") { + push(@args_list, "(const unsigned char *)args->$1.$1_val"); + } else { + push(@args_list, "args->$1.$1_val"); + } + + push(@args_list, "args->$1.$1_len"); + } elsif ($args_member =~ m/.* (\S+);/) { + if (! @args_list) { + push(@args_list, "conn"); + } + + push(@args_list, "args->$1"); + } + } + } + + foreach my $var (@vars_list) { + print " $var;\n"; + } + + print "\n"; + print " if (!conn) {\n"; + print " virNetError(VIR_ERR_INTERNAL_ERROR, \"%s\", _(\"connection not open\"));\n"; + print " goto cleanup;\n"; + print " }\n"; + print "\n"; + + print join("\n", @getters_list); + + print "\n"; + + if ($calls{$_}->{ret} eq "void") { + print " if (vir$calls{$_}->{ProcName}("; + print join(', ', @args_list); + print ") < 0)\n"; + print " goto cleanup;\n"; + print "\n"; + } + + print " rv = 0;\n"; + print "\n"; + print "cleanup:\n"; + print " if (rv < 0)\n"; + print " remoteDispatchError(rerr);\n"; + + print join("\n", @free_list); + + print "\n"; + print " return rv;\n"; + print "}\n"; + print "\n"; + } +} diff --git a/po/POTFILES.in b/po/POTFILES.in index 766f8f6..a3347bf 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -2,6 +2,7 @@ daemon/dispatch.c daemon/libvirtd.c daemon/remote.c daemon/stream.c +daemon/remote_dispatch_bodies.c src/conf/cpu_conf.c src/conf/domain_conf.c src/conf/domain_event.c diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index b9f1bc7..b02f082 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -540,9 +540,9 @@ struct remote_domain_interface_stats_ret { }; struct remote_domain_memory_stats_args { - remote_nonnull_domain dom; - u_int maxStats; - u_int flags; + remote_nonnull_domain dom; + u_int maxStats; + u_int flags; }; struct remote_domain_memory_stat { -- 1.7.0.4

This simplifies the remote protocol code generator. Also rename 'ret' to 'result' to resolve a naming conflict in the generator. --- daemon/remote.c | 22 +++++++++++----------- daemon/remote_dispatch_bodies.c | 4 ++-- daemon/remote_generator.pl | 2 +- src/remote/qemu_protocol.c | 2 +- src/remote/qemu_protocol.h | 2 +- src/remote/qemu_protocol.x | 2 +- src/remote/remote_driver.c | 20 ++++++++++---------- src/remote/remote_protocol.c | 18 +++++++++--------- src/remote/remote_protocol.h | 18 +++++++++--------- src/remote/remote_protocol.x | 18 +++++++++--------- src/remote_protocol-structs | 18 +++++++++--------- 11 files changed, 63 insertions(+), 63 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 676c99a..48dbcc5 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -2875,7 +2875,7 @@ remoteDispatchDomainHasManagedSaveImage(struct qemud_server *server ATTRIBUTE_UN if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; - if ((ret->ret = virDomainHasManagedSaveImage(dom, args->flags)) < 0) + if ((ret->result = virDomainHasManagedSaveImage(dom, args->flags)) < 0) goto cleanup; rv = 0; @@ -6361,7 +6361,7 @@ remoteDispatchDomainSnapshotCreateXml(struct qemud_server *server ATTRIBUTE_UNUS goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; if (!(snapshot = virDomainSnapshotCreateXML(dom, args->xml_desc, args->flags))) @@ -6399,7 +6399,7 @@ remoteDispatchDomainSnapshotDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->snap.domain))) + if (!(dom = get_nonnull_domain(conn, args->snap.dom))) goto cleanup; if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) @@ -6438,7 +6438,7 @@ remoteDispatchDomainSnapshotNum(struct qemud_server *server ATTRIBUTE_UNUSED, goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; if ((ret->num = virDomainSnapshotNum(dom, args->flags)) < 0) @@ -6478,7 +6478,7 @@ remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUS goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; /* Allocate return buffer. */ @@ -6525,7 +6525,7 @@ remoteDispatchDomainSnapshotLookupByName(struct qemud_server *server ATTRIBUTE_U goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; if (!(snapshot = virDomainSnapshotLookupByName(dom, args->name, args->flags))) @@ -6563,7 +6563,7 @@ remoteDispatchDomainHasCurrentSnapshot(struct qemud_server *server ATTRIBUTE_UNU goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; result = virDomainHasCurrentSnapshot(dom, args->flags); @@ -6600,7 +6600,7 @@ remoteDispatchDomainSnapshotCurrent(struct qemud_server *server ATTRIBUTE_UNUSED goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; if (!(snapshot = virDomainSnapshotCurrent(dom, args->flags))) @@ -6969,7 +6969,7 @@ qemuDispatchMonitorCommand(struct qemud_server *server ATTRIBUTE_UNUSED, goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; if (virDomainQemuMonitorCommand(dom, args->cmd, &ret->result, @@ -7005,7 +7005,7 @@ remoteDispatchDomainOpenConsole(struct qemud_server *server ATTRIBUTE_UNUSED, goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->domain))) + if (!(dom = get_nonnull_domain(conn, args->dom))) goto cleanup; if (!(stream = remoteCreateClientStream(conn, hdr))) { @@ -7168,5 +7168,5 @@ static void make_nonnull_domain_snapshot(remote_nonnull_domain_snapshot *snapshot_dst, virDomainSnapshotPtr snapshot_src) { snapshot_dst->name = strdup(snapshot_src->name); - make_nonnull_domain(&snapshot_dst->domain, snapshot_src->domain); + make_nonnull_domain(&snapshot_dst->dom, snapshot_src->domain); } diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index 962b12a..a3360c5 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -629,7 +629,7 @@ remoteDispatchDomainRevertToSnapshot( goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->snap.domain))) + if (!(dom = get_nonnull_domain(conn, args->snap.dom))) goto cleanup; if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) @@ -951,7 +951,7 @@ remoteDispatchDomainSnapshotDelete( goto cleanup; } - if (!(dom = get_nonnull_domain(conn, args->snap.domain))) + if (!(dom = get_nonnull_domain(conn, args->snap.dom))) goto cleanup; if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index bf971e2..8ad6d0d 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -367,7 +367,7 @@ elsif ($opt_b) { push(@vars_list, "virDomainPtr dom = NULL"); push(@vars_list, "virDomainSnapshotPtr snapshot = NULL"); push(@getters_list, - " if (!(dom = get_nonnull_domain(conn, args->snap.domain)))\n" . + " if (!(dom = get_nonnull_domain(conn, args->snap.dom)))\n" . " goto cleanup;\n" . "\n" . " if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap)))\n" . diff --git a/src/remote/qemu_protocol.c b/src/remote/qemu_protocol.c index 81916ed..3480c54 100644 --- a/src/remote/qemu_protocol.c +++ b/src/remote/qemu_protocol.c @@ -13,7 +13,7 @@ bool_t xdr_qemu_monitor_command_args (XDR *xdrs, qemu_monitor_command_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_remote_nonnull_string (xdrs, &objp->cmd)) return FALSE; diff --git a/src/remote/qemu_protocol.h b/src/remote/qemu_protocol.h index b822187..c2501c7 100644 --- a/src/remote/qemu_protocol.h +++ b/src/remote/qemu_protocol.h @@ -18,7 +18,7 @@ extern "C" { #include <arpa/inet.h> struct qemu_monitor_command_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string cmd; int flags; }; diff --git a/src/remote/qemu_protocol.x b/src/remote/qemu_protocol.x index 1d07895..9eed73f 100644 --- a/src/remote/qemu_protocol.x +++ b/src/remote/qemu_protocol.x @@ -28,7 +28,7 @@ /*----- Protocol. -----*/ struct qemu_monitor_command_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string cmd; int flags; }; diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index e30780c..9d6056b 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -4352,7 +4352,7 @@ remoteDomainHasManagedSaveImage (virDomainPtr domain, unsigned int flags) (xdrproc_t) xdr_remote_domain_has_managed_save_image_ret, (char *) &ret) == -1) goto done; - rv = ret.ret; + rv = ret.result; done: remoteDriverUnlock(priv); @@ -9236,7 +9236,7 @@ remoteDomainSnapshotCreateXML(virDomainPtr domain, remoteDriverLock(priv); - make_nonnull_domain (&args.domain, domain); + make_nonnull_domain (&args.dom, domain); args.xml_desc = (char *) xmlDesc; args.flags = flags; @@ -9293,7 +9293,7 @@ remoteDomainSnapshotNum (virDomainPtr domain, unsigned int flags) remoteDriverLock(priv); - make_nonnull_domain (&args.domain, domain); + make_nonnull_domain (&args.dom, domain); args.flags = flags; memset (&ret, 0, sizeof ret); @@ -9329,7 +9329,7 @@ remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, goto done; } - make_nonnull_domain(&args.domain, domain); + make_nonnull_domain(&args.dom, domain); args.nameslen = nameslen; args.flags = flags; @@ -9385,7 +9385,7 @@ remoteDomainSnapshotLookupByName (virDomainPtr domain, const char *name, remoteDriverLock(priv); - make_nonnull_domain(&args.domain, domain); + make_nonnull_domain(&args.dom, domain); args.name = (char *) name; args.flags = flags; @@ -9414,7 +9414,7 @@ remoteDomainHasCurrentSnapshot(virDomainPtr domain, unsigned int flags) remoteDriverLock(priv); - make_nonnull_domain(&args.domain, domain); + make_nonnull_domain(&args.dom, domain); args.flags = flags; if (call(domain->conn, priv, 0, REMOTE_PROC_DOMAIN_HAS_CURRENT_SNAPSHOT, @@ -9441,7 +9441,7 @@ remoteDomainSnapshotCurrent(virDomainPtr domain, remoteDriverLock(priv); - make_nonnull_domain(&args.domain, domain); + make_nonnull_domain(&args.dom, domain); args.flags = flags; memset(&ret, 0, sizeof ret); @@ -9709,7 +9709,7 @@ remoteDomainOpenConsole(virDomainPtr dom, st->driver = &remoteStreamDrv; st->privateData = privst; - make_nonnull_domain (&args.domain, dom); + make_nonnull_domain (&args.dom, dom); args.devname = devname ? (char **)&devname : NULL; args.flags = flags; @@ -9743,7 +9743,7 @@ remoteQemuDomainMonitorCommand (virDomainPtr domain, const char *cmd, remoteDriverLock(priv); - make_nonnull_domain(&args.domain, domain); + make_nonnull_domain(&args.dom, domain); args.cmd = (char *)cmd; args.flags = flags; @@ -11177,7 +11177,7 @@ static void make_nonnull_domain_snapshot (remote_nonnull_domain_snapshot *snapshot_dst, virDomainSnapshotPtr snapshot_src) { snapshot_dst->name = snapshot_src->name; - make_nonnull_domain(&snapshot_dst->domain, snapshot_src->domain); + make_nonnull_domain(&snapshot_dst->dom, snapshot_src->domain); } /*----------------------------------------------------------------------*/ diff --git a/src/remote/remote_protocol.c b/src/remote/remote_protocol.c index 5604371..e85f607 100644 --- a/src/remote/remote_protocol.c +++ b/src/remote/remote_protocol.c @@ -148,7 +148,7 @@ xdr_remote_nonnull_domain_snapshot (XDR *xdrs, remote_nonnull_domain_snapshot *o if (!xdr_remote_nonnull_string (xdrs, &objp->name)) return FALSE; - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; return TRUE; } @@ -3672,7 +3672,7 @@ bool_t xdr_remote_domain_has_managed_save_image_ret (XDR *xdrs, remote_domain_has_managed_save_image_ret *objp) { - if (!xdr_int (xdrs, &objp->ret)) + if (!xdr_int (xdrs, &objp->result)) return FALSE; return TRUE; } @@ -3692,7 +3692,7 @@ bool_t xdr_remote_domain_snapshot_create_xml_args (XDR *xdrs, remote_domain_snapshot_create_xml_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_remote_nonnull_string (xdrs, &objp->xml_desc)) return FALSE; @@ -3734,7 +3734,7 @@ bool_t xdr_remote_domain_snapshot_num_args (XDR *xdrs, remote_domain_snapshot_num_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_int (xdrs, &objp->flags)) return FALSE; @@ -3754,7 +3754,7 @@ bool_t xdr_remote_domain_snapshot_list_names_args (XDR *xdrs, remote_domain_snapshot_list_names_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_int (xdrs, &objp->nameslen)) return FALSE; @@ -3778,7 +3778,7 @@ bool_t xdr_remote_domain_snapshot_lookup_by_name_args (XDR *xdrs, remote_domain_snapshot_lookup_by_name_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_remote_nonnull_string (xdrs, &objp->name)) return FALSE; @@ -3800,7 +3800,7 @@ bool_t xdr_remote_domain_has_current_snapshot_args (XDR *xdrs, remote_domain_has_current_snapshot_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_int (xdrs, &objp->flags)) return FALSE; @@ -3820,7 +3820,7 @@ bool_t xdr_remote_domain_snapshot_current_args (XDR *xdrs, remote_domain_snapshot_current_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_int (xdrs, &objp->flags)) return FALSE; @@ -3862,7 +3862,7 @@ bool_t xdr_remote_domain_open_console_args (XDR *xdrs, remote_domain_open_console_args *objp) { - if (!xdr_remote_nonnull_domain (xdrs, &objp->domain)) + if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; if (!xdr_remote_string (xdrs, &objp->devname)) return FALSE; diff --git a/src/remote/remote_protocol.h b/src/remote/remote_protocol.h index d9bf151..82d0981 100644 --- a/src/remote/remote_protocol.h +++ b/src/remote/remote_protocol.h @@ -123,7 +123,7 @@ typedef struct remote_nonnull_secret remote_nonnull_secret; struct remote_nonnull_domain_snapshot { remote_nonnull_string name; - remote_nonnull_domain domain; + remote_nonnull_domain dom; }; typedef struct remote_nonnull_domain_snapshot remote_nonnull_domain_snapshot; @@ -2073,7 +2073,7 @@ struct remote_domain_has_managed_save_image_args { typedef struct remote_domain_has_managed_save_image_args remote_domain_has_managed_save_image_args; struct remote_domain_has_managed_save_image_ret { - int ret; + int result; }; typedef struct remote_domain_has_managed_save_image_ret remote_domain_has_managed_save_image_ret; @@ -2084,7 +2084,7 @@ struct remote_domain_managed_save_remove_args { typedef struct remote_domain_managed_save_remove_args remote_domain_managed_save_remove_args; struct remote_domain_snapshot_create_xml_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string xml_desc; int flags; }; @@ -2107,7 +2107,7 @@ struct remote_domain_snapshot_dump_xml_ret { typedef struct remote_domain_snapshot_dump_xml_ret remote_domain_snapshot_dump_xml_ret; struct remote_domain_snapshot_num_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; typedef struct remote_domain_snapshot_num_args remote_domain_snapshot_num_args; @@ -2118,7 +2118,7 @@ struct remote_domain_snapshot_num_ret { typedef struct remote_domain_snapshot_num_ret remote_domain_snapshot_num_ret; struct remote_domain_snapshot_list_names_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int nameslen; int flags; }; @@ -2133,7 +2133,7 @@ struct remote_domain_snapshot_list_names_ret { typedef struct remote_domain_snapshot_list_names_ret remote_domain_snapshot_list_names_ret; struct remote_domain_snapshot_lookup_by_name_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string name; int flags; }; @@ -2145,7 +2145,7 @@ struct remote_domain_snapshot_lookup_by_name_ret { typedef struct remote_domain_snapshot_lookup_by_name_ret remote_domain_snapshot_lookup_by_name_ret; struct remote_domain_has_current_snapshot_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; typedef struct remote_domain_has_current_snapshot_args remote_domain_has_current_snapshot_args; @@ -2156,7 +2156,7 @@ struct remote_domain_has_current_snapshot_ret { typedef struct remote_domain_has_current_snapshot_ret remote_domain_has_current_snapshot_ret; struct remote_domain_snapshot_current_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; typedef struct remote_domain_snapshot_current_args remote_domain_snapshot_current_args; @@ -2179,7 +2179,7 @@ struct remote_domain_snapshot_delete_args { typedef struct remote_domain_snapshot_delete_args remote_domain_snapshot_delete_args; struct remote_domain_open_console_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_string devname; u_int flags; }; diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index b02f082..0422c7b 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -247,7 +247,7 @@ struct remote_nonnull_secret { /* A snapshot which may not be NULL. */ struct remote_nonnull_domain_snapshot { remote_nonnull_string name; - remote_nonnull_domain domain; + remote_nonnull_domain dom; }; /* A domain or network which may be NULL. */ @@ -1836,7 +1836,7 @@ struct remote_domain_has_managed_save_image_args { }; struct remote_domain_has_managed_save_image_ret { - int ret; + int result; }; struct remote_domain_managed_save_remove_args { @@ -1845,7 +1845,7 @@ struct remote_domain_managed_save_remove_args { }; struct remote_domain_snapshot_create_xml_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string xml_desc; int flags; }; @@ -1864,7 +1864,7 @@ struct remote_domain_snapshot_dump_xml_ret { }; struct remote_domain_snapshot_num_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; @@ -1873,7 +1873,7 @@ struct remote_domain_snapshot_num_ret { }; struct remote_domain_snapshot_list_names_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int nameslen; int flags; }; @@ -1883,7 +1883,7 @@ struct remote_domain_snapshot_list_names_ret { }; struct remote_domain_snapshot_lookup_by_name_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string name; int flags; }; @@ -1893,7 +1893,7 @@ struct remote_domain_snapshot_lookup_by_name_ret { }; struct remote_domain_has_current_snapshot_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; @@ -1902,7 +1902,7 @@ struct remote_domain_has_current_snapshot_ret { }; struct remote_domain_snapshot_current_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; @@ -1921,7 +1921,7 @@ struct remote_domain_snapshot_delete_args { }; struct remote_domain_open_console_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_string devname; unsigned int flags; }; diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index 944553c..73c7202 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -35,7 +35,7 @@ struct remote_nonnull_secret { }; struct remote_nonnull_domain_snapshot { remote_nonnull_string name; - remote_nonnull_domain domain; + remote_nonnull_domain dom; }; struct remote_error { int code; @@ -1341,14 +1341,14 @@ struct remote_domain_has_managed_save_image_args { u_int flags; }; struct remote_domain_has_managed_save_image_ret { - int ret; + int result; }; struct remote_domain_managed_save_remove_args { remote_nonnull_domain dom; u_int flags; }; struct remote_domain_snapshot_create_xml_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string xml_desc; int flags; }; @@ -1363,14 +1363,14 @@ struct remote_domain_snapshot_dump_xml_ret { remote_nonnull_string xml; }; struct remote_domain_snapshot_num_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; struct remote_domain_snapshot_num_ret { int num; }; struct remote_domain_snapshot_list_names_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int nameslen; int flags; }; @@ -1381,7 +1381,7 @@ struct remote_domain_snapshot_list_names_ret { } names; }; struct remote_domain_snapshot_lookup_by_name_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_nonnull_string name; int flags; }; @@ -1389,14 +1389,14 @@ struct remote_domain_snapshot_lookup_by_name_ret { remote_nonnull_domain_snapshot snap; }; struct remote_domain_has_current_snapshot_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; struct remote_domain_has_current_snapshot_ret { int result; }; struct remote_domain_snapshot_current_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; int flags; }; struct remote_domain_snapshot_current_ret { @@ -1411,7 +1411,7 @@ struct remote_domain_snapshot_delete_args { int flags; }; struct remote_domain_open_console_args { - remote_nonnull_domain domain; + remote_nonnull_domain dom; remote_string devname; u_int flags; }; -- 1.7.0.4

Again this will simplify the generator, due to less special case handling. --- daemon/remote.c | 64 +++++++++--------- daemon/remote_dispatch_bodies.c | 64 +++++++++--------- daemon/remote_dispatch_prototypes.h | 64 +++++++++--------- daemon/remote_dispatch_table.h | 128 +++++++++++++++++----------------- daemon/remote_generator.pl | 3 +- 5 files changed, 162 insertions(+), 161 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 48dbcc5..5057cfc 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -607,7 +607,7 @@ cleanup: } static int -remoteDispatchGetUri(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchGetURI(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -1320,7 +1320,7 @@ cleanup: } static int -remoteDispatchDomainCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -1352,7 +1352,7 @@ cleanup: } static int -remoteDispatchDomainDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -1384,7 +1384,7 @@ cleanup: } static int -remoteDispatchDomainDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -1418,7 +1418,7 @@ cleanup: } static int -remoteDispatchDomainXmlFromNative(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainXMLFromNative(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -1449,7 +1449,7 @@ cleanup: } static int -remoteDispatchDomainXmlToNative(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainXMLToNative(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -2235,7 +2235,7 @@ cleanup: } static int -remoteDispatchDomainLookupByUuid(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -2934,7 +2934,7 @@ cleanup: } static int -remoteDispatchNetworkCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNetworkCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -2966,7 +2966,7 @@ cleanup: } static int -remoteDispatchNetworkDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNetworkDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -2998,7 +2998,7 @@ cleanup: } static int -remoteDispatchNetworkDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNetworkDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -3131,7 +3131,7 @@ cleanup: } static int -remoteDispatchNetworkLookupByUuid(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNetworkLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -3460,7 +3460,7 @@ cleanup: } static int -remoteDispatchInterfaceGetXmlDesc(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchInterfaceGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -3494,7 +3494,7 @@ cleanup: } static int -remoteDispatchInterfaceDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchInterfaceDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -4452,7 +4452,7 @@ cleanup: } static int -remoteDispatchStoragePoolCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchStoragePoolCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -4484,7 +4484,7 @@ cleanup: } static int -remoteDispatchStoragePoolDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchStoragePoolDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -4555,7 +4555,7 @@ cleanup: } static int -remoteDispatchStoragePoolDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchStoragePoolDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -4655,7 +4655,7 @@ cleanup: } static int -remoteDispatchStoragePoolLookupByUuid(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchStoragePoolLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -4871,7 +4871,7 @@ cleanup: static int -remoteDispatchStorageVolCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchStorageVolCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -4908,7 +4908,7 @@ cleanup: } static int -remoteDispatchStorageVolCreateXmlFrom(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchStorageVolCreateXMLFrom(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -4990,7 +4990,7 @@ cleanup: } static int -remoteDispatchStorageVolDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchStorageVolDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -5278,7 +5278,7 @@ cleanup: static int -remoteDispatchNodeDeviceDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNodeDeviceDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -5449,7 +5449,7 @@ cleanup: } static int -remoteDispatchNodeDeviceCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNodeDeviceCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -5783,7 +5783,7 @@ cleanup: } static int -remoteDispatchSecretDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchSecretDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -5852,7 +5852,7 @@ cleanup: } static int -remoteDispatchSecretGetXmlDesc(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchSecretGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -5884,7 +5884,7 @@ cleanup: } static int -remoteDispatchSecretLookupByUuid(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchSecretLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -6344,7 +6344,7 @@ cleanup: } static int -remoteDispatchDomainSnapshotCreateXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainSnapshotCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -6382,7 +6382,7 @@ cleanup: } static int -remoteDispatchDomainSnapshotDumpXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchDomainSnapshotDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -6741,7 +6741,7 @@ cleanup: } static int -remoteDispatchNWFilterLookupByUuid(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNWFilterLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -6774,7 +6774,7 @@ cleanup: static int -remoteDispatchNWFilterDefineXml(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNWFilterDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -6806,7 +6806,7 @@ cleanup: } static int -remoteDispatchListNwfilters(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchListNWFilters(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -6852,7 +6852,7 @@ cleanup: static int -remoteDispatchNWFilterGetXmlDesc(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNWFilterGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, @@ -6887,7 +6887,7 @@ cleanup: static int -remoteDispatchNumOfNwfilters(struct qemud_server *server ATTRIBUTE_UNUSED, +remoteDispatchNumOfNWFilters(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, remote_message_header *hdr ATTRIBUTE_UNUSED, diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index a3360c5..6b4abec 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -194,9 +194,9 @@ cleanup: /* remoteDispatchDomainCreateWithFlags has to be implemented manually */ -/* remoteDispatchDomainCreateXml has to be implemented manually */ +/* remoteDispatchDomainCreateXML has to be implemented manually */ -/* remoteDispatchDomainDefineXml has to be implemented manually */ +/* remoteDispatchDomainDefineXML has to be implemented manually */ static int remoteDispatchDomainDestroy( @@ -300,7 +300,7 @@ cleanup: return rv; } -/* remoteDispatchDomainDumpXml has to be implemented manually */ +/* remoteDispatchDomainDumpXML has to be implemented manually */ /* remoteDispatchDomainEventsDeregister has to be implemented manually */ @@ -354,7 +354,7 @@ cleanup: /* remoteDispatchDomainLookupByName has to be implemented manually */ -/* remoteDispatchDomainLookupByUuid has to be implemented manually */ +/* remoteDispatchDomainLookupByUUID has to be implemented manually */ static int remoteDispatchDomainManagedSave( @@ -928,7 +928,7 @@ cleanup: return rv; } -/* remoteDispatchDomainSnapshotCreateXml has to be implemented manually */ +/* remoteDispatchDomainSnapshotCreateXML has to be implemented manually */ /* remoteDispatchDomainSnapshotCurrent has to be implemented manually */ @@ -972,7 +972,7 @@ cleanup: return rv; } -/* remoteDispatchDomainSnapshotDumpXml has to be implemented manually */ +/* remoteDispatchDomainSnapshotDumpXML has to be implemented manually */ /* remoteDispatchDomainSnapshotListNames has to be implemented manually */ @@ -1082,9 +1082,9 @@ cleanup: return rv; } -/* remoteDispatchDomainXmlFromNative has to be implemented manually */ +/* remoteDispatchDomainXMLFromNative has to be implemented manually */ -/* remoteDispatchDomainXmlToNative has to be implemented manually */ +/* remoteDispatchDomainXMLToNative has to be implemented manually */ /* remoteDispatchFindStoragePoolSources has to be implemented manually */ @@ -1100,7 +1100,7 @@ cleanup: /* remoteDispatchGetType has to be implemented manually */ -/* remoteDispatchGetUri has to be implemented manually */ +/* remoteDispatchGetURI has to be implemented manually */ /* remoteDispatchGetVersion has to be implemented manually */ @@ -1138,7 +1138,7 @@ cleanup: return rv; } -/* remoteDispatchInterfaceDefineXml has to be implemented manually */ +/* remoteDispatchInterfaceDefineXML has to be implemented manually */ static int remoteDispatchInterfaceDestroy( @@ -1174,7 +1174,7 @@ cleanup: return rv; } -/* remoteDispatchInterfaceGetXmlDesc has to be implemented manually */ +/* remoteDispatchInterfaceGetXMLDesc has to be implemented manually */ /* remoteDispatchInterfaceIsActive has to be implemented manually */ @@ -1232,7 +1232,7 @@ cleanup: /* remoteDispatchListNetworks has to be implemented manually */ -/* remoteDispatchListNwfilters has to be implemented manually */ +/* remoteDispatchListNWFilters has to be implemented manually */ /* remoteDispatchListSecrets has to be implemented manually */ @@ -1272,9 +1272,9 @@ cleanup: return rv; } -/* remoteDispatchNetworkCreateXml has to be implemented manually */ +/* remoteDispatchNetworkCreateXML has to be implemented manually */ -/* remoteDispatchNetworkDefineXml has to be implemented manually */ +/* remoteDispatchNetworkDefineXML has to be implemented manually */ static int remoteDispatchNetworkDestroy( @@ -1310,7 +1310,7 @@ cleanup: return rv; } -/* remoteDispatchNetworkDumpXml has to be implemented manually */ +/* remoteDispatchNetworkDumpXML has to be implemented manually */ /* remoteDispatchNetworkGetAutostart has to be implemented manually */ @@ -1322,7 +1322,7 @@ cleanup: /* remoteDispatchNetworkLookupByName has to be implemented manually */ -/* remoteDispatchNetworkLookupByUuid has to be implemented manually */ +/* remoteDispatchNetworkLookupByUUID has to be implemented manually */ static int remoteDispatchNetworkSetAutostart( @@ -1392,7 +1392,7 @@ cleanup: return rv; } -/* remoteDispatchNodeDeviceCreateXml has to be implemented manually */ +/* remoteDispatchNodeDeviceCreateXML has to be implemented manually */ static int remoteDispatchNodeDeviceDestroy( @@ -1462,7 +1462,7 @@ cleanup: return rv; } -/* remoteDispatchNodeDeviceDumpXml has to be implemented manually */ +/* remoteDispatchNodeDeviceDumpXML has to be implemented manually */ /* remoteDispatchNodeDeviceGetParent has to be implemented manually */ @@ -1566,19 +1566,19 @@ cleanup: /* remoteDispatchNumOfNetworks has to be implemented manually */ -/* remoteDispatchNumOfNwfilters has to be implemented manually */ +/* remoteDispatchNumOfNWFilters has to be implemented manually */ /* remoteDispatchNumOfSecrets has to be implemented manually */ /* remoteDispatchNumOfStoragePools has to be implemented manually */ -/* remoteDispatchNWFilterDefineXml has to be implemented manually */ +/* remoteDispatchNWFilterDefineXML has to be implemented manually */ -/* remoteDispatchNWFilterGetXmlDesc has to be implemented manually */ +/* remoteDispatchNWFilterGetXMLDesc has to be implemented manually */ /* remoteDispatchNWFilterLookupByName has to be implemented manually */ -/* remoteDispatchNWFilterLookupByUuid has to be implemented manually */ +/* remoteDispatchNWFilterLookupByUUID has to be implemented manually */ static int remoteDispatchNWFilterUndefine( @@ -1616,15 +1616,15 @@ cleanup: /* remoteDispatchOpen has to be implemented manually */ -/* remoteDispatchSecretDefineXml has to be implemented manually */ +/* remoteDispatchSecretDefineXML has to be implemented manually */ /* remoteDispatchSecretGetValue has to be implemented manually */ -/* remoteDispatchSecretGetXmlDesc has to be implemented manually */ +/* remoteDispatchSecretGetXMLDesc has to be implemented manually */ /* remoteDispatchSecretLookupByUsage has to be implemented manually */ -/* remoteDispatchSecretLookupByUuid has to be implemented manually */ +/* remoteDispatchSecretLookupByUUID has to be implemented manually */ static int remoteDispatchSecretSetValue( @@ -1762,9 +1762,9 @@ cleanup: return rv; } -/* remoteDispatchStoragePoolCreateXml has to be implemented manually */ +/* remoteDispatchStoragePoolCreateXML has to be implemented manually */ -/* remoteDispatchStoragePoolDefineXml has to be implemented manually */ +/* remoteDispatchStoragePoolDefineXML has to be implemented manually */ static int remoteDispatchStoragePoolDelete( @@ -1834,7 +1834,7 @@ cleanup: return rv; } -/* remoteDispatchStoragePoolDumpXml has to be implemented manually */ +/* remoteDispatchStoragePoolDumpXML has to be implemented manually */ /* remoteDispatchStoragePoolGetAutostart has to be implemented manually */ @@ -1848,7 +1848,7 @@ cleanup: /* remoteDispatchStoragePoolLookupByName has to be implemented manually */ -/* remoteDispatchStoragePoolLookupByUuid has to be implemented manually */ +/* remoteDispatchStoragePoolLookupByUUID has to be implemented manually */ /* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */ @@ -1956,9 +1956,9 @@ cleanup: return rv; } -/* remoteDispatchStorageVolCreateXml has to be implemented manually */ +/* remoteDispatchStorageVolCreateXML has to be implemented manually */ -/* remoteDispatchStorageVolCreateXmlFrom has to be implemented manually */ +/* remoteDispatchStorageVolCreateXMLFrom has to be implemented manually */ static int remoteDispatchStorageVolDelete( @@ -1996,7 +1996,7 @@ cleanup: /* remoteDispatchStorageVolDownload has to be implemented manually */ -/* remoteDispatchStorageVolDumpXml has to be implemented manually */ +/* remoteDispatchStorageVolDumpXML has to be implemented manually */ /* remoteDispatchStorageVolGetInfo has to be implemented manually */ diff --git a/daemon/remote_dispatch_prototypes.h b/daemon/remote_dispatch_prototypes.h index 29ae5ba..dff84d7 100644 --- a/daemon/remote_dispatch_prototypes.h +++ b/daemon/remote_dispatch_prototypes.h @@ -130,7 +130,7 @@ static int remoteDispatchDomainCreateWithFlags( remote_error *rerr, remote_domain_create_with_flags_args *args, remote_domain_create_with_flags_ret *ret); -static int remoteDispatchDomainCreateXml( +static int remoteDispatchDomainCreateXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -138,7 +138,7 @@ static int remoteDispatchDomainCreateXml( remote_error *rerr, remote_domain_create_xml_args *args, remote_domain_create_xml_ret *ret); -static int remoteDispatchDomainDefineXml( +static int remoteDispatchDomainDefineXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -170,7 +170,7 @@ static int remoteDispatchDomainDetachDeviceFlags( remote_error *rerr, remote_domain_detach_device_flags_args *args, void *ret); -static int remoteDispatchDomainDumpXml( +static int remoteDispatchDomainDumpXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -386,7 +386,7 @@ static int remoteDispatchDomainLookupByName( remote_error *rerr, remote_domain_lookup_by_name_args *args, remote_domain_lookup_by_name_ret *ret); -static int remoteDispatchDomainLookupByUuid( +static int remoteDispatchDomainLookupByUUID( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -626,7 +626,7 @@ static int remoteDispatchDomainShutdown( remote_error *rerr, remote_domain_shutdown_args *args, void *ret); -static int remoteDispatchDomainSnapshotCreateXml( +static int remoteDispatchDomainSnapshotCreateXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -650,7 +650,7 @@ static int remoteDispatchDomainSnapshotDelete( remote_error *rerr, remote_domain_snapshot_delete_args *args, void *ret); -static int remoteDispatchDomainSnapshotDumpXml( +static int remoteDispatchDomainSnapshotDumpXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -706,7 +706,7 @@ static int remoteDispatchDomainUpdateDeviceFlags( remote_error *rerr, remote_domain_update_device_flags_args *args, void *ret); -static int remoteDispatchDomainXmlFromNative( +static int remoteDispatchDomainXMLFromNative( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -714,7 +714,7 @@ static int remoteDispatchDomainXmlFromNative( remote_error *rerr, remote_domain_xml_from_native_args *args, remote_domain_xml_from_native_ret *ret); -static int remoteDispatchDomainXmlToNative( +static int remoteDispatchDomainXMLToNative( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -778,7 +778,7 @@ static int remoteDispatchGetType( remote_error *rerr, void *args, remote_get_type_ret *ret); -static int remoteDispatchGetUri( +static int remoteDispatchGetURI( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -802,7 +802,7 @@ static int remoteDispatchInterfaceCreate( remote_error *rerr, remote_interface_create_args *args, void *ret); -static int remoteDispatchInterfaceDefineXml( +static int remoteDispatchInterfaceDefineXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -818,7 +818,7 @@ static int remoteDispatchInterfaceDestroy( remote_error *rerr, remote_interface_destroy_args *args, void *ret); -static int remoteDispatchInterfaceGetXmlDesc( +static int remoteDispatchInterfaceGetXMLDesc( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -922,7 +922,7 @@ static int remoteDispatchListNetworks( remote_error *rerr, remote_list_networks_args *args, remote_list_networks_ret *ret); -static int remoteDispatchListNwfilters( +static int remoteDispatchListNWFilters( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -954,7 +954,7 @@ static int remoteDispatchNetworkCreate( remote_error *rerr, remote_network_create_args *args, void *ret); -static int remoteDispatchNetworkCreateXml( +static int remoteDispatchNetworkCreateXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -962,7 +962,7 @@ static int remoteDispatchNetworkCreateXml( remote_error *rerr, remote_network_create_xml_args *args, remote_network_create_xml_ret *ret); -static int remoteDispatchNetworkDefineXml( +static int remoteDispatchNetworkDefineXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -978,7 +978,7 @@ static int remoteDispatchNetworkDestroy( remote_error *rerr, remote_network_destroy_args *args, void *ret); -static int remoteDispatchNetworkDumpXml( +static int remoteDispatchNetworkDumpXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1026,7 +1026,7 @@ static int remoteDispatchNetworkLookupByName( remote_error *rerr, remote_network_lookup_by_name_args *args, remote_network_lookup_by_name_ret *ret); -static int remoteDispatchNetworkLookupByUuid( +static int remoteDispatchNetworkLookupByUUID( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1050,7 +1050,7 @@ static int remoteDispatchNetworkUndefine( remote_error *rerr, remote_network_undefine_args *args, void *ret); -static int remoteDispatchNodeDeviceCreateXml( +static int remoteDispatchNodeDeviceCreateXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1074,7 +1074,7 @@ static int remoteDispatchNodeDeviceDettach( remote_error *rerr, remote_node_device_dettach_args *args, void *ret); -static int remoteDispatchNodeDeviceDumpXml( +static int remoteDispatchNodeDeviceDumpXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1234,7 +1234,7 @@ static int remoteDispatchNumOfNetworks( remote_error *rerr, void *args, remote_num_of_networks_ret *ret); -static int remoteDispatchNumOfNwfilters( +static int remoteDispatchNumOfNWFilters( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1258,7 +1258,7 @@ static int remoteDispatchNumOfStoragePools( remote_error *rerr, void *args, remote_num_of_storage_pools_ret *ret); -static int remoteDispatchNWFilterDefineXml( +static int remoteDispatchNWFilterDefineXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1266,7 +1266,7 @@ static int remoteDispatchNWFilterDefineXml( remote_error *rerr, remote_nwfilter_define_xml_args *args, remote_nwfilter_define_xml_ret *ret); -static int remoteDispatchNWFilterGetXmlDesc( +static int remoteDispatchNWFilterGetXMLDesc( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1282,7 +1282,7 @@ static int remoteDispatchNWFilterLookupByName( remote_error *rerr, remote_nwfilter_lookup_by_name_args *args, remote_nwfilter_lookup_by_name_ret *ret); -static int remoteDispatchNWFilterLookupByUuid( +static int remoteDispatchNWFilterLookupByUUID( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1306,7 +1306,7 @@ static int remoteDispatchOpen( remote_error *rerr, remote_open_args *args, void *ret); -static int remoteDispatchSecretDefineXml( +static int remoteDispatchSecretDefineXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1322,7 +1322,7 @@ static int remoteDispatchSecretGetValue( remote_error *rerr, remote_secret_get_value_args *args, remote_secret_get_value_ret *ret); -static int remoteDispatchSecretGetXmlDesc( +static int remoteDispatchSecretGetXMLDesc( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1338,7 +1338,7 @@ static int remoteDispatchSecretLookupByUsage( remote_error *rerr, remote_secret_lookup_by_usage_args *args, remote_secret_lookup_by_usage_ret *ret); -static int remoteDispatchSecretLookupByUuid( +static int remoteDispatchSecretLookupByUUID( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1378,7 +1378,7 @@ static int remoteDispatchStoragePoolCreate( remote_error *rerr, remote_storage_pool_create_args *args, void *ret); -static int remoteDispatchStoragePoolCreateXml( +static int remoteDispatchStoragePoolCreateXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1386,7 +1386,7 @@ static int remoteDispatchStoragePoolCreateXml( remote_error *rerr, remote_storage_pool_create_xml_args *args, remote_storage_pool_create_xml_ret *ret); -static int remoteDispatchStoragePoolDefineXml( +static int remoteDispatchStoragePoolDefineXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1410,7 +1410,7 @@ static int remoteDispatchStoragePoolDestroy( remote_error *rerr, remote_storage_pool_destroy_args *args, void *ret); -static int remoteDispatchStoragePoolDumpXml( +static int remoteDispatchStoragePoolDumpXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1466,7 +1466,7 @@ static int remoteDispatchStoragePoolLookupByName( remote_error *rerr, remote_storage_pool_lookup_by_name_args *args, remote_storage_pool_lookup_by_name_ret *ret); -static int remoteDispatchStoragePoolLookupByUuid( +static int remoteDispatchStoragePoolLookupByUUID( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1514,7 +1514,7 @@ static int remoteDispatchStoragePoolUndefine( remote_error *rerr, remote_storage_pool_undefine_args *args, void *ret); -static int remoteDispatchStorageVolCreateXml( +static int remoteDispatchStorageVolCreateXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1522,7 +1522,7 @@ static int remoteDispatchStorageVolCreateXml( remote_error *rerr, remote_storage_vol_create_xml_args *args, remote_storage_vol_create_xml_ret *ret); -static int remoteDispatchStorageVolCreateXmlFrom( +static int remoteDispatchStorageVolCreateXMLFrom( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -1546,7 +1546,7 @@ static int remoteDispatchStorageVolDownload( remote_error *rerr, remote_storage_vol_download_args *args, void *ret); -static int remoteDispatchStorageVolDumpXml( +static int remoteDispatchStorageVolDumpXML( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, diff --git a/daemon/remote_dispatch_table.h b/daemon/remote_dispatch_table.h index d711abc..627331e 100644 --- a/daemon/remote_dispatch_table.h +++ b/daemon/remote_dispatch_table.h @@ -52,13 +52,13 @@ .args_filter = (xdrproc_t) xdr_remote_domain_create_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* DomainCreateXml => 10 */ - .fn = (dispatch_fn) remoteDispatchDomainCreateXml, +{ /* DomainCreateXML => 10 */ + .fn = (dispatch_fn) remoteDispatchDomainCreateXML, .args_filter = (xdrproc_t) xdr_remote_domain_create_xml_args, .ret_filter = (xdrproc_t) xdr_remote_domain_create_xml_ret, }, -{ /* DomainDefineXml => 11 */ - .fn = (dispatch_fn) remoteDispatchDomainDefineXml, +{ /* DomainDefineXML => 11 */ + .fn = (dispatch_fn) remoteDispatchDomainDefineXML, .args_filter = (xdrproc_t) xdr_remote_domain_define_xml_args, .ret_filter = (xdrproc_t) xdr_remote_domain_define_xml_ret, }, @@ -72,8 +72,8 @@ .args_filter = (xdrproc_t) xdr_remote_domain_detach_device_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* DomainDumpXml => 14 */ - .fn = (dispatch_fn) remoteDispatchDomainDumpXml, +{ /* DomainDumpXML => 14 */ + .fn = (dispatch_fn) remoteDispatchDomainDumpXML, .args_filter = (xdrproc_t) xdr_remote_domain_dump_xml_args, .ret_filter = (xdrproc_t) xdr_remote_domain_dump_xml_ret, }, @@ -122,8 +122,8 @@ .args_filter = (xdrproc_t) xdr_remote_domain_lookup_by_name_args, .ret_filter = (xdrproc_t) xdr_remote_domain_lookup_by_name_ret, }, -{ /* DomainLookupByUuid => 24 */ - .fn = (dispatch_fn) remoteDispatchDomainLookupByUuid, +{ /* DomainLookupByUUID => 24 */ + .fn = (dispatch_fn) remoteDispatchDomainLookupByUUID, .args_filter = (xdrproc_t) xdr_remote_domain_lookup_by_uuid_args, .ret_filter = (xdrproc_t) xdr_remote_domain_lookup_by_uuid_ret, }, @@ -202,13 +202,13 @@ .args_filter = (xdrproc_t) xdr_remote_network_create_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* NetworkCreateXml => 40 */ - .fn = (dispatch_fn) remoteDispatchNetworkCreateXml, +{ /* NetworkCreateXML => 40 */ + .fn = (dispatch_fn) remoteDispatchNetworkCreateXML, .args_filter = (xdrproc_t) xdr_remote_network_create_xml_args, .ret_filter = (xdrproc_t) xdr_remote_network_create_xml_ret, }, -{ /* NetworkDefineXml => 41 */ - .fn = (dispatch_fn) remoteDispatchNetworkDefineXml, +{ /* NetworkDefineXML => 41 */ + .fn = (dispatch_fn) remoteDispatchNetworkDefineXML, .args_filter = (xdrproc_t) xdr_remote_network_define_xml_args, .ret_filter = (xdrproc_t) xdr_remote_network_define_xml_ret, }, @@ -217,8 +217,8 @@ .args_filter = (xdrproc_t) xdr_remote_network_destroy_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* NetworkDumpXml => 43 */ - .fn = (dispatch_fn) remoteDispatchNetworkDumpXml, +{ /* NetworkDumpXML => 43 */ + .fn = (dispatch_fn) remoteDispatchNetworkDumpXML, .args_filter = (xdrproc_t) xdr_remote_network_dump_xml_args, .ret_filter = (xdrproc_t) xdr_remote_network_dump_xml_ret, }, @@ -237,8 +237,8 @@ .args_filter = (xdrproc_t) xdr_remote_network_lookup_by_name_args, .ret_filter = (xdrproc_t) xdr_remote_network_lookup_by_name_ret, }, -{ /* NetworkLookupByUuid => 47 */ - .fn = (dispatch_fn) remoteDispatchNetworkLookupByUuid, +{ /* NetworkLookupByUUID => 47 */ + .fn = (dispatch_fn) remoteDispatchNetworkLookupByUUID, .args_filter = (xdrproc_t) xdr_remote_network_lookup_by_uuid_args, .ret_filter = (xdrproc_t) xdr_remote_network_lookup_by_uuid_ret, }, @@ -382,13 +382,13 @@ .args_filter = (xdrproc_t) xdr_remote_find_storage_pool_sources_args, .ret_filter = (xdrproc_t) xdr_remote_find_storage_pool_sources_ret, }, -{ /* StoragePoolCreateXml => 76 */ - .fn = (dispatch_fn) remoteDispatchStoragePoolCreateXml, +{ /* StoragePoolCreateXML => 76 */ + .fn = (dispatch_fn) remoteDispatchStoragePoolCreateXML, .args_filter = (xdrproc_t) xdr_remote_storage_pool_create_xml_args, .ret_filter = (xdrproc_t) xdr_remote_storage_pool_create_xml_ret, }, -{ /* StoragePoolDefineXml => 77 */ - .fn = (dispatch_fn) remoteDispatchStoragePoolDefineXml, +{ /* StoragePoolDefineXML => 77 */ + .fn = (dispatch_fn) remoteDispatchStoragePoolDefineXML, .args_filter = (xdrproc_t) xdr_remote_storage_pool_define_xml_args, .ret_filter = (xdrproc_t) xdr_remote_storage_pool_define_xml_ret, }, @@ -427,8 +427,8 @@ .args_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_name_args, .ret_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_name_ret, }, -{ /* StoragePoolLookupByUuid => 85 */ - .fn = (dispatch_fn) remoteDispatchStoragePoolLookupByUuid, +{ /* StoragePoolLookupByUUID => 85 */ + .fn = (dispatch_fn) remoteDispatchStoragePoolLookupByUUID, .args_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_uuid_args, .ret_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_uuid_ret, }, @@ -442,8 +442,8 @@ .args_filter = (xdrproc_t) xdr_remote_storage_pool_get_info_args, .ret_filter = (xdrproc_t) xdr_remote_storage_pool_get_info_ret, }, -{ /* StoragePoolDumpXml => 88 */ - .fn = (dispatch_fn) remoteDispatchStoragePoolDumpXml, +{ /* StoragePoolDumpXML => 88 */ + .fn = (dispatch_fn) remoteDispatchStoragePoolDumpXML, .args_filter = (xdrproc_t) xdr_remote_storage_pool_dump_xml_args, .ret_filter = (xdrproc_t) xdr_remote_storage_pool_dump_xml_ret, }, @@ -467,8 +467,8 @@ .args_filter = (xdrproc_t) xdr_remote_storage_pool_list_volumes_args, .ret_filter = (xdrproc_t) xdr_remote_storage_pool_list_volumes_ret, }, -{ /* StorageVolCreateXml => 93 */ - .fn = (dispatch_fn) remoteDispatchStorageVolCreateXml, +{ /* StorageVolCreateXML => 93 */ + .fn = (dispatch_fn) remoteDispatchStorageVolCreateXML, .args_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_args, .ret_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_ret, }, @@ -497,8 +497,8 @@ .args_filter = (xdrproc_t) xdr_remote_storage_vol_get_info_args, .ret_filter = (xdrproc_t) xdr_remote_storage_vol_get_info_ret, }, -{ /* StorageVolDumpXml => 99 */ - .fn = (dispatch_fn) remoteDispatchStorageVolDumpXml, +{ /* StorageVolDumpXML => 99 */ + .fn = (dispatch_fn) remoteDispatchStorageVolDumpXML, .args_filter = (xdrproc_t) xdr_remote_storage_vol_dump_xml_args, .ret_filter = (xdrproc_t) xdr_remote_storage_vol_dump_xml_ret, }, @@ -552,8 +552,8 @@ .args_filter = (xdrproc_t) xdr_remote_domain_migrate_finish2_args, .ret_filter = (xdrproc_t) xdr_remote_domain_migrate_finish2_ret, }, -{ /* GetUri => 110 */ - .fn = (dispatch_fn) remoteDispatchGetUri, +{ /* GetURI => 110 */ + .fn = (dispatch_fn) remoteDispatchGetURI, .args_filter = (xdrproc_t) xdr_void, .ret_filter = (xdrproc_t) xdr_remote_get_uri_ret, }, @@ -572,8 +572,8 @@ .args_filter = (xdrproc_t) xdr_remote_node_device_lookup_by_name_args, .ret_filter = (xdrproc_t) xdr_remote_node_device_lookup_by_name_ret, }, -{ /* NodeDeviceDumpXml => 114 */ - .fn = (dispatch_fn) remoteDispatchNodeDeviceDumpXml, +{ /* NodeDeviceDumpXML => 114 */ + .fn = (dispatch_fn) remoteDispatchNodeDeviceDumpXML, .args_filter = (xdrproc_t) xdr_remote_node_device_dump_xml_args, .ret_filter = (xdrproc_t) xdr_remote_node_device_dump_xml_ret, }, @@ -617,8 +617,8 @@ .args_filter = (xdrproc_t) xdr_void, .ret_filter = (xdrproc_t) xdr_remote_node_get_security_model_ret, }, -{ /* NodeDeviceCreateXml => 123 */ - .fn = (dispatch_fn) remoteDispatchNodeDeviceCreateXml, +{ /* NodeDeviceCreateXML => 123 */ + .fn = (dispatch_fn) remoteDispatchNodeDeviceCreateXML, .args_filter = (xdrproc_t) xdr_remote_node_device_create_xml_args, .ret_filter = (xdrproc_t) xdr_remote_node_device_create_xml_ret, }, @@ -627,8 +627,8 @@ .args_filter = (xdrproc_t) xdr_remote_node_device_destroy_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* StorageVolCreateXmlFrom => 125 */ - .fn = (dispatch_fn) remoteDispatchStorageVolCreateXmlFrom, +{ /* StorageVolCreateXMLFrom => 125 */ + .fn = (dispatch_fn) remoteDispatchStorageVolCreateXMLFrom, .args_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_from_args, .ret_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_from_ret, }, @@ -652,13 +652,13 @@ .args_filter = (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_args, .ret_filter = (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_ret, }, -{ /* InterfaceGetXmlDesc => 130 */ - .fn = (dispatch_fn) remoteDispatchInterfaceGetXmlDesc, +{ /* InterfaceGetXMLDesc => 130 */ + .fn = (dispatch_fn) remoteDispatchInterfaceGetXMLDesc, .args_filter = (xdrproc_t) xdr_remote_interface_get_xml_desc_args, .ret_filter = (xdrproc_t) xdr_remote_interface_get_xml_desc_ret, }, -{ /* InterfaceDefineXml => 131 */ - .fn = (dispatch_fn) remoteDispatchInterfaceDefineXml, +{ /* InterfaceDefineXML => 131 */ + .fn = (dispatch_fn) remoteDispatchInterfaceDefineXML, .args_filter = (xdrproc_t) xdr_remote_interface_define_xml_args, .ret_filter = (xdrproc_t) xdr_remote_interface_define_xml_ret, }, @@ -677,13 +677,13 @@ .args_filter = (xdrproc_t) xdr_remote_interface_destroy_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* DomainXmlFromNative => 135 */ - .fn = (dispatch_fn) remoteDispatchDomainXmlFromNative, +{ /* DomainXMLFromNative => 135 */ + .fn = (dispatch_fn) remoteDispatchDomainXMLFromNative, .args_filter = (xdrproc_t) xdr_remote_domain_xml_from_native_args, .ret_filter = (xdrproc_t) xdr_remote_domain_xml_from_native_ret, }, -{ /* DomainXmlToNative => 136 */ - .fn = (dispatch_fn) remoteDispatchDomainXmlToNative, +{ /* DomainXMLToNative => 136 */ + .fn = (dispatch_fn) remoteDispatchDomainXMLToNative, .args_filter = (xdrproc_t) xdr_remote_domain_xml_to_native_args, .ret_filter = (xdrproc_t) xdr_remote_domain_xml_to_native_ret, }, @@ -707,18 +707,18 @@ .args_filter = (xdrproc_t) xdr_remote_list_secrets_args, .ret_filter = (xdrproc_t) xdr_remote_list_secrets_ret, }, -{ /* SecretLookupByUuid => 141 */ - .fn = (dispatch_fn) remoteDispatchSecretLookupByUuid, +{ /* SecretLookupByUUID => 141 */ + .fn = (dispatch_fn) remoteDispatchSecretLookupByUUID, .args_filter = (xdrproc_t) xdr_remote_secret_lookup_by_uuid_args, .ret_filter = (xdrproc_t) xdr_remote_secret_lookup_by_uuid_ret, }, -{ /* SecretDefineXml => 142 */ - .fn = (dispatch_fn) remoteDispatchSecretDefineXml, +{ /* SecretDefineXML => 142 */ + .fn = (dispatch_fn) remoteDispatchSecretDefineXML, .args_filter = (xdrproc_t) xdr_remote_secret_define_xml_args, .ret_filter = (xdrproc_t) xdr_remote_secret_define_xml_ret, }, -{ /* SecretGetXmlDesc => 143 */ - .fn = (dispatch_fn) remoteDispatchSecretGetXmlDesc, +{ /* SecretGetXMLDesc => 143 */ + .fn = (dispatch_fn) remoteDispatchSecretGetXMLDesc, .args_filter = (xdrproc_t) xdr_remote_secret_get_xml_desc_args, .ret_filter = (xdrproc_t) xdr_remote_secret_get_xml_desc_ret, }, @@ -882,28 +882,28 @@ .args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_ret, }, -{ /* NWFilterLookupByUuid => 176 */ - .fn = (dispatch_fn) remoteDispatchNWFilterLookupByUuid, +{ /* NWFilterLookupByUUID => 176 */ + .fn = (dispatch_fn) remoteDispatchNWFilterLookupByUUID, .args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_ret, }, -{ /* NWFilterGetXmlDesc => 177 */ - .fn = (dispatch_fn) remoteDispatchNWFilterGetXmlDesc, +{ /* NWFilterGetXMLDesc => 177 */ + .fn = (dispatch_fn) remoteDispatchNWFilterGetXMLDesc, .args_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_ret, }, -{ /* NumOfNwfilters => 178 */ - .fn = (dispatch_fn) remoteDispatchNumOfNwfilters, +{ /* NumOfNWFilters => 178 */ + .fn = (dispatch_fn) remoteDispatchNumOfNWFilters, .args_filter = (xdrproc_t) xdr_void, .ret_filter = (xdrproc_t) xdr_remote_num_of_nwfilters_ret, }, -{ /* ListNwfilters => 179 */ - .fn = (dispatch_fn) remoteDispatchListNwfilters, +{ /* ListNWFilters => 179 */ + .fn = (dispatch_fn) remoteDispatchListNWFilters, .args_filter = (xdrproc_t) xdr_remote_list_nwfilters_args, .ret_filter = (xdrproc_t) xdr_remote_list_nwfilters_ret, }, -{ /* NWFilterDefineXml => 180 */ - .fn = (dispatch_fn) remoteDispatchNWFilterDefineXml, +{ /* NWFilterDefineXML => 180 */ + .fn = (dispatch_fn) remoteDispatchNWFilterDefineXML, .args_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_args, .ret_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_ret, }, @@ -927,13 +927,13 @@ .args_filter = (xdrproc_t) xdr_remote_domain_managed_save_remove_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* DomainSnapshotCreateXml => 185 */ - .fn = (dispatch_fn) remoteDispatchDomainSnapshotCreateXml, +{ /* DomainSnapshotCreateXML => 185 */ + .fn = (dispatch_fn) remoteDispatchDomainSnapshotCreateXML, .args_filter = (xdrproc_t) xdr_remote_domain_snapshot_create_xml_args, .ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_create_xml_ret, }, -{ /* DomainSnapshotDumpXml => 186 */ - .fn = (dispatch_fn) remoteDispatchDomainSnapshotDumpXml, +{ /* DomainSnapshotDumpXML => 186 */ + .fn = (dispatch_fn) remoteDispatchDomainSnapshotDumpXML, .args_filter = (xdrproc_t) xdr_remote_domain_snapshot_dump_xml_args, .ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_dump_xml_ret, }, diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 8ad6d0d..31af8b6 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -32,7 +32,8 @@ sub name_to_ProcName { my $name = shift; my @elems = split /_/, $name; @elems = map ucfirst, @elems; - @elems = map { $_ eq "Nwfilter" ? "NWFilter" : $_ } @elems; + @elems = map { $_ =~ s/Nwfilter/NWFilter/; $_ =~ s/Xml/XML/; + $_ =~ s/Uri/URI/; $_ =~ s/Uuid/UUID/; $_ } @elems; join "", @elems } -- 1.7.0.4

--- daemon/remote.c | 1616 ------------------------------------ daemon/remote_dispatch_bodies.c | 1724 +++++++++++++++++++++++++++++++++++++-- daemon/remote_generator.pl | 215 +++++- 3 files changed, 1880 insertions(+), 1675 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 5057cfc..a588a08 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -459,32 +459,6 @@ remoteDispatchClose(struct qemud_server *server ATTRIBUTE_UNUSED, } static int -remoteDispatchSupportsFeature(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_supports_feature_args *args, remote_supports_feature_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->supported = virDrvSupportsFeature(conn, args->feature)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchGetType(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -520,153 +494,6 @@ cleanup: } static int -remoteDispatchGetVersion(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_get_version_ret *ret) -{ - unsigned long hvVer; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (virConnectGetVersion(conn, &hvVer) < 0) - goto cleanup; - - ret->hv_ver = hvVer; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchGetLibVersion(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_get_lib_version_ret *ret) -{ - unsigned long libVer; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (virConnectGetLibVersion(conn, &libVer) < 0) - goto cleanup; - - ret->lib_ver = libVer; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchGetHostname(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_get_hostname_ret *ret) -{ - char *hostname; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(hostname = virConnectGetHostname(conn))) - goto cleanup; - - ret->hostname = hostname; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchGetURI(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_get_uri_ret *ret) -{ - char *uri; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(uri = virConnectGetURI(conn))) - goto cleanup; - - ret->uri = uri; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchGetSysinfo(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_get_sysinfo_args *args, - remote_get_sysinfo_ret *ret) -{ - unsigned int flags; - char *sysinfo; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - flags = args->flags; - if (!(sysinfo = virConnectGetSysinfo(conn, flags))) - goto cleanup; - - ret->sysinfo = sysinfo; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchGetMaxVcpus(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -733,35 +560,6 @@ cleanup: } static int -remoteDispatchGetCapabilities(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_get_capabilities_ret *ret) -{ - char *caps; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(caps = virConnectGetCapabilities(conn))) - goto cleanup; - - ret->capabilities = caps; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchNodeGetCellsFreeMemory(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1384,136 +1182,6 @@ cleanup: } static int -remoteDispatchDomainDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_dump_xml_args *args, - remote_domain_dump_xml_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virDomainGetXMLDesc(dom, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainXMLFromNative(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_xml_from_native_args *args, - remote_domain_xml_from_native_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->domainXml = virConnectDomainXMLFromNative(conn, - args->nativeFormat, - args->nativeConfig, - args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchDomainXMLToNative(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_xml_to_native_args *args, - remote_domain_xml_to_native_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->nativeConfig = virConnectDomainXMLToNative(conn, - args->nativeFormat, - args->domainXml, - args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - -static int -remoteDispatchDomainGetAutostart(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_autostart_args *args, - remote_domain_get_autostart_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainGetAutostart(dom, &ret->autostart) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1554,72 +1222,6 @@ cleanup: } static int -remoteDispatchDomainGetMaxMemory(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_max_memory_args *args, - remote_domain_get_max_memory_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->memory = virDomainGetMaxMemory(dom)) == 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainGetMaxVcpus(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_max_vcpus_args *args, - remote_domain_get_max_vcpus_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->num = virDomainGetMaxVcpus(dom)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1711,40 +1313,6 @@ cleanup: } static int -remoteDispatchDomainGetOsType(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_os_type_args *args, - remote_domain_get_os_type_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - /* remoteDispatchClientRequest will free this */ - if (!(ret->type = virDomainGetOSType(dom))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainGetVcpus(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1828,39 +1396,6 @@ no_memory: } static int -remoteDispatchDomainGetVcpusFlags(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_vcpus_flags_args *args, - remote_domain_get_vcpus_flags_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->num = virDomainGetVcpusFlags(dom, args->flags)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainMigratePrepare(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -2267,33 +1802,6 @@ cleanup: } static int -remoteDispatchNumOfDefinedDomains(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_defined_domains_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfDefinedDomains(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchDomainPinVcpu(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -2856,39 +2364,6 @@ cleanup: } static int -remoteDispatchDomainHasManagedSaveImage(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_has_managed_save_image_args *args, - remote_domain_has_managed_save_image_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->result = virDomainHasManagedSaveImage(dom, args->flags)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchListNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -2998,107 +2473,6 @@ cleanup: } static int -remoteDispatchNetworkDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_dump_xml_args *args, - remote_network_dump_xml_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virNetworkGetXMLDesc(net, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int -remoteDispatchNetworkGetAutostart(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_get_autostart_args *args, - remote_network_get_autostart_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - if (virNetworkGetAutostart(net, &ret->autostart) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int -remoteDispatchNetworkGetBridgeName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_get_bridge_name_args *args, - remote_network_get_bridge_name_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->name = virNetworkGetBridgeName(net))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int remoteDispatchNetworkLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3162,118 +2536,7 @@ cleanup: return rv; } -static int -remoteDispatchNumOfDefinedNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_defined_networks_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - len = virConnectNumOfDefinedNetworks(conn); - if (len < 0) - goto cleanup; - ret->num = len; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchNumOfDomains(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_domains_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfDomains(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchNumOfNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_networks_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfNetworks(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - /*-------------------------------------------------------------*/ -static int -remoteDispatchNumOfInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_interfaces_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfInterfaces(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} static int remoteDispatchListInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED, @@ -3321,36 +2584,6 @@ cleanup: } static int -remoteDispatchNumOfDefinedInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_defined_interfaces_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - len = virConnectNumOfDefinedInterfaces(conn); - if (len < 0) - goto cleanup; - ret->num = len; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchListDefinedInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3460,40 +2693,6 @@ cleanup: } static int -remoteDispatchInterfaceGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_get_xml_desc_args *args, - remote_interface_get_xml_desc_ret *ret) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = get_nonnull_interface(conn, args->iface))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virInterfaceGetXMLDesc(iface, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - -static int remoteDispatchInterfaceDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -4555,74 +3754,6 @@ cleanup: } static int -remoteDispatchStoragePoolDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_dump_xml_args *args, - remote_storage_pool_dump_xml_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virStoragePoolGetXMLDesc(pool, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int -remoteDispatchStoragePoolGetAutostart(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_get_autostart_args *args, - remote_storage_pool_get_autostart_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolGetAutostart(pool, &ret->autostart) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - - -static int remoteDispatchStoragePoolLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -4725,60 +3856,6 @@ cleanup: } static int -remoteDispatchNumOfStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_storage_pools_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfStoragePools(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int -remoteDispatchNumOfDefinedStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_defined_storage_pools_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfDefinedStoragePools(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchStoragePoolListVolumes(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -4830,40 +3907,6 @@ cleanup: } -static int -remoteDispatchStoragePoolNumOfVolumes(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_num_of_volumes_args *args, - remote_storage_pool_num_of_volumes_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if ((ret->num = virStoragePoolNumOfVolumes(pool)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - - /*************************************************************** * STORAGE VOL APIS ***************************************************************/ @@ -4990,76 +4033,6 @@ cleanup: } static int -remoteDispatchStorageVolDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_dump_xml_args *args, - remote_storage_vol_dump_xml_ret *ret) -{ - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = get_nonnull_storage_vol(conn, args->vol))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virStorageVolGetXMLDesc(vol, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - return rv; -} - - -static int -remoteDispatchStorageVolGetPath(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_get_path_args *args, - remote_storage_vol_get_path_ret *ret) -{ - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = get_nonnull_storage_vol(conn, args->vol))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->name = virStorageVolGetPath(vol))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - return rv; -} - - -static int remoteDispatchStorageVolLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -5276,42 +4249,6 @@ cleanup: return rv; } - -static int -remoteDispatchNodeDeviceDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_dump_xml_args *args, - remote_node_device_dump_xml_ret *ret) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virNodeDeviceGetXMLDesc(dev, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - - static int remoteDispatchNodeDeviceGetParent(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -5362,41 +4299,6 @@ cleanup: return rv; } - -static int -remoteDispatchNodeDeviceNumOfCaps(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_num_of_caps_args *args, - remote_node_device_num_of_caps_ret *ret) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - if ((ret->num = virNodeDeviceNumOfCaps(dev)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - - static int remoteDispatchNodeDeviceListCaps(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -5712,33 +4614,6 @@ cleanup: } static int -remoteDispatchNumOfSecrets(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_secrets_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfSecrets(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchListSecrets(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -5852,38 +4727,6 @@ cleanup: } static int -remoteDispatchSecretGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_secret_get_xml_desc_args *args, - remote_secret_get_xml_desc_ret *ret) -{ - virSecretPtr secret = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(secret = get_nonnull_secret(conn, args->secret))) - goto cleanup; - if (!(ret->xml = virSecretGetXMLDesc(secret, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (secret) - virSecretFree(secret); - return rv; -} - -static int remoteDispatchSecretLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -5947,291 +4790,6 @@ cleanup: return rv; } - -static int remoteDispatchDomainIsActive(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_is_active_args *args, - remote_domain_is_active_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->active = virDomainIsActive(dom)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_is_persistent_args *args, - remote_domain_is_persistent_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->persistent = virDomainIsPersistent(dom)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainIsUpdated(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_is_updated_args *args, - remote_domain_is_updated_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->updated = virDomainIsUpdated(dom)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchInterfaceIsActive(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_is_active_args *args, - remote_interface_is_active_ret *ret) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = get_nonnull_interface(conn, args->iface))) - goto cleanup; - - if ((ret->active = virInterfaceIsActive(iface)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - -static int remoteDispatchNetworkIsActive(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_is_active_args *args, - remote_network_is_active_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - if ((ret->active = virNetworkIsActive(net)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int remoteDispatchNetworkIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_is_persistent_args *args, - remote_network_is_persistent_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = get_nonnull_network(conn, args->net))) - goto cleanup; - - if ((ret->persistent = virNetworkIsPersistent(net)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int remoteDispatchStoragePoolIsActive(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_is_active_args *args, - remote_storage_pool_is_active_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if ((ret->active = virStoragePoolIsActive(pool)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int remoteDispatchStoragePoolIsPersistent(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_is_persistent_args *args, - remote_storage_pool_is_persistent_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if ((ret->persistent = virStoragePoolIsPersistent(pool)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - - -static int remoteDispatchIsSecure(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_is_secure_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->secure = virConnectIsSecure(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - static int remoteDispatchCpuCompare(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -6382,79 +4940,6 @@ cleanup: } static int -remoteDispatchDomainSnapshotDumpXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_snapshot_dump_xml_args *args, - remote_domain_snapshot_dump_xml_ret *ret) -{ - virDomainPtr dom = NULL; - virDomainSnapshotPtr snapshot = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->snap.dom))) - goto cleanup; - - if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virDomainSnapshotGetXMLDesc(snapshot, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (snapshot) - virDomainSnapshotFree(snapshot); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSnapshotNum(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_snapshot_num_args *args, - remote_domain_snapshot_num_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if ((ret->num = virDomainSnapshotNum(dom, args->flags)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -6546,43 +5031,6 @@ cleanup: } static int -remoteDispatchDomainHasCurrentSnapshot(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_has_current_snapshot_args *args, - remote_domain_has_current_snapshot_ret *ret) -{ - virDomainPtr dom = NULL; - int result; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - result = virDomainHasCurrentSnapshot(dom, args->flags); - if (result < 0) - goto cleanup; - - ret->result = result; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainSnapshotCurrent(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -6850,70 +5298,6 @@ cleanup: return rv; } - -static int -remoteDispatchNWFilterGetXMLDesc(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_nwfilter_get_xml_desc_args *args, - remote_nwfilter_get_xml_desc_ret *ret) -{ - virNWFilterPtr nwfilter = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter))) - goto cleanup; - - /* remoteDispatchClientRequest will free this. */ - if (!(ret->xml = virNWFilterGetXMLDesc(nwfilter, args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (nwfilter) - virNWFilterFree(nwfilter); - return rv; -} - - -static int -remoteDispatchNumOfNWFilters(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_num_of_nwfilters_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virConnectNumOfNWFilters(conn)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - static int remoteDispatchDomainGetBlockInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index 6b4abec..c1959b6 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -300,7 +300,41 @@ cleanup: return rv; } -/* remoteDispatchDomainDumpXML has to be implemented manually */ +static int +remoteDispatchDomainDumpXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_dump_xml_args *args, + remote_domain_dump_xml_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((xml = virDomainGetXMLDesc(dom, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainEventsDeregister has to be implemented manually */ @@ -310,7 +344,41 @@ cleanup: /* remoteDispatchDomainEventsRegisterAny has to be implemented manually */ -/* remoteDispatchDomainGetAutostart has to be implemented manually */ +static int +remoteDispatchDomainGetAutostart( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_autostart_args *args, + remote_domain_get_autostart_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int autostart; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainGetAutostart(dom, &autostart) < 0) + goto cleanup; + + ret->autostart = autostart; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainGetBlkioParameters has to be implemented manually */ @@ -320,13 +388,115 @@ cleanup: /* remoteDispatchDomainGetJobInfo has to be implemented manually */ -/* remoteDispatchDomainGetMaxMemory has to be implemented manually */ +static int +remoteDispatchDomainGetMaxMemory( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_max_memory_args *args, + remote_domain_get_max_memory_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + unsigned long memory; -/* remoteDispatchDomainGetMaxVcpus has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((memory = virDomainGetMaxMemory(dom)) == 0) + goto cleanup; + + ret->memory = memory; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainGetMaxVcpus( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_max_vcpus_args *args, + remote_domain_get_max_vcpus_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((num = virDomainGetMaxVcpus(dom)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainGetMemoryParameters has to be implemented manually */ -/* remoteDispatchDomainGetOsType has to be implemented manually */ +static int +remoteDispatchDomainGetOsType( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_os_type_args *args, + remote_domain_get_os_type_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + char *type; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((type = virDomainGetOSType(dom)) == NULL) + goto cleanup; + + ret->type = type; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainGetSchedulerParameters has to be implemented manually */ @@ -336,19 +506,223 @@ cleanup: /* remoteDispatchDomainGetVcpus has to be implemented manually */ -/* remoteDispatchDomainGetVcpusFlags has to be implemented manually */ +static int +remoteDispatchDomainGetVcpusFlags( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_vcpus_flags_args *args, + remote_domain_get_vcpus_flags_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((num = virDomainGetVcpusFlags(dom, args->flags)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainHasCurrentSnapshot( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_has_current_snapshot_args *args, + remote_domain_has_current_snapshot_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int result; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((result = virDomainHasCurrentSnapshot(dom, args->flags)) < 0) + goto cleanup; + + ret->result = result; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainHasManagedSaveImage( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_has_managed_save_image_args *args, + remote_domain_has_managed_save_image_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int result; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchDomainHasCurrentSnapshot has to be implemented manually */ + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((result = virDomainHasManagedSaveImage(dom, args->flags)) < 0) + goto cleanup; + + ret->result = result; + rv = 0; -/* remoteDispatchDomainHasManagedSaveImage has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainInterfaceStats has to be implemented manually */ -/* remoteDispatchDomainIsActive has to be implemented manually */ +static int +remoteDispatchDomainIsActive( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_is_active_args *args, + remote_domain_is_active_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int active; -/* remoteDispatchDomainIsPersistent has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchDomainIsUpdated has to be implemented manually */ + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((active = virDomainIsActive(dom)) < 0) + goto cleanup; + + ret->active = active; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainIsPersistent( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_is_persistent_args *args, + remote_domain_is_persistent_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int persistent; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((persistent = virDomainIsPersistent(dom)) < 0) + goto cleanup; + + ret->persistent = persistent; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainIsUpdated( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_is_updated_args *args, + remote_domain_is_updated_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int updated; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((updated = virDomainIsUpdated(dom)) < 0) + goto cleanup; + + ret->updated = updated; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainLookupById has to be implemented manually */ @@ -563,7 +937,6 @@ remoteDispatchDomainRestore( goto cleanup; } - if (virDomainRestore(conn, args->from) < 0) goto cleanup; @@ -572,7 +945,6 @@ remoteDispatchDomainRestore( cleanup: if (rv < 0) remoteDispatchError(rerr); - return rv; } @@ -972,13 +1344,87 @@ cleanup: return rv; } -/* remoteDispatchDomainSnapshotDumpXML has to be implemented manually */ +static int +remoteDispatchDomainSnapshotDumpXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_snapshot_dump_xml_args *args, + remote_domain_snapshot_dump_xml_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainSnapshotPtr snapshot = NULL; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->snap.dom))) + goto cleanup; + + if (!(snapshot = get_nonnull_domain_snapshot(dom, args->snap))) + goto cleanup; + + if ((xml = virDomainSnapshotGetXMLDesc(snapshot, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (snapshot) + virDomainSnapshotFree(snapshot); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainSnapshotListNames has to be implemented manually */ /* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */ -/* remoteDispatchDomainSnapshotNum has to be implemented manually */ +static int +remoteDispatchDomainSnapshotNum( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_snapshot_num_args *args, + remote_domain_snapshot_num_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((num = virDomainSnapshotNum(dom, args->flags)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} static int remoteDispatchDomainSuspend( @@ -1082,27 +1528,251 @@ cleanup: return rv; } -/* remoteDispatchDomainXMLFromNative has to be implemented manually */ +static int +remoteDispatchDomainXMLFromNative( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_xml_from_native_args *args, + remote_domain_xml_from_native_ret *ret) +{ + int rv = -1; + char *domainXml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((domainXml = virConnectDomainXMLFromNative(conn, args->nativeFormat, args->nativeConfig, args->flags)) == NULL) + goto cleanup; + + ret->domainXml = domainXml; + rv = 0; -/* remoteDispatchDomainXMLToNative has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchDomainXMLToNative( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_xml_to_native_args *args, + remote_domain_xml_to_native_ret *ret) +{ + int rv = -1; + char *nativeConfig; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((nativeConfig = virConnectDomainXMLToNative(conn, args->nativeFormat, args->domainXml, args->flags)) == NULL) + goto cleanup; + + ret->nativeConfig = nativeConfig; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} /* remoteDispatchFindStoragePoolSources has to be implemented manually */ -/* remoteDispatchGetCapabilities has to be implemented manually */ +static int +remoteDispatchGetCapabilities( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_get_capabilities_ret *ret) +{ + int rv = -1; + char *capabilities; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchGetHostname has to be implemented manually */ + if ((capabilities = virConnectGetCapabilities(conn)) == NULL) + goto cleanup; -/* remoteDispatchGetLibVersion has to be implemented manually */ + ret->capabilities = capabilities; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchGetHostname( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_get_hostname_ret *ret) +{ + int rv = -1; + char *hostname; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((hostname = virConnectGetHostname(conn)) == NULL) + goto cleanup; + + ret->hostname = hostname; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchGetLibVersion( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_get_lib_version_ret *ret) +{ + int rv = -1; + unsigned long lib_ver; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (virConnectGetLibVersion(conn, &lib_ver) < 0) + goto cleanup; + + ret->lib_ver = lib_ver; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} /* remoteDispatchGetMaxVcpus has to be implemented manually */ -/* remoteDispatchGetSysinfo has to be implemented manually */ +static int +remoteDispatchGetSysinfo( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_get_sysinfo_args *args, + remote_get_sysinfo_ret *ret) +{ + int rv = -1; + char *sysinfo; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((sysinfo = virConnectGetSysinfo(conn, args->flags)) == NULL) + goto cleanup; + + ret->sysinfo = sysinfo; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} /* remoteDispatchGetType has to be implemented manually */ -/* remoteDispatchGetURI has to be implemented manually */ +static int +remoteDispatchGetURI( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_get_uri_ret *ret) +{ + int rv = -1; + char *uri; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((uri = virConnectGetURI(conn)) == NULL) + goto cleanup; + + ret->uri = uri; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchGetVersion( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_get_version_ret *ret) +{ + int rv = -1; + unsigned long hv_ver; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (virConnectGetVersion(conn, &hv_ver) < 0) + goto cleanup; -/* remoteDispatchGetVersion has to be implemented manually */ + ret->hv_ver = hv_ver; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} static int remoteDispatchInterfaceCreate( @@ -1174,9 +1844,77 @@ cleanup: return rv; } -/* remoteDispatchInterfaceGetXMLDesc has to be implemented manually */ +static int +remoteDispatchInterfaceGetXMLDesc( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_get_xml_desc_args *args, + remote_interface_get_xml_desc_ret *ret) +{ + int rv = -1; + virInterfacePtr iface = NULL; + char *xml; -/* remoteDispatchInterfaceIsActive has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(iface = get_nonnull_interface(conn, args->iface))) + goto cleanup; + + if ((xml = virInterfaceGetXMLDesc(iface, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} + +static int +remoteDispatchInterfaceIsActive( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_is_active_args *args, + remote_interface_is_active_ret *ret) +{ + int rv = -1; + virInterfacePtr iface = NULL; + int active; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(iface = get_nonnull_interface(conn, args->iface))) + goto cleanup; + + if ((active = virInterfaceIsActive(iface)) < 0) + goto cleanup; + + ret->active = active; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} /* remoteDispatchInterfaceLookupByMacString has to be implemented manually */ @@ -1216,7 +1954,35 @@ cleanup: return rv; } -/* remoteDispatchIsSecure has to be implemented manually */ +static int +remoteDispatchIsSecure( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_is_secure_ret *ret) +{ + int rv = -1; + int secure; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((secure = virConnectIsSecure(conn)) < 0) + goto cleanup; + + ret->secure = secure; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} /* remoteDispatchListDefinedDomains has to be implemented manually */ @@ -1310,15 +2076,185 @@ cleanup: return rv; } -/* remoteDispatchNetworkDumpXML has to be implemented manually */ +static int +remoteDispatchNetworkDumpXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_dump_xml_args *args, + remote_network_dump_xml_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchNetworkGetAutostart has to be implemented manually */ + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; -/* remoteDispatchNetworkGetBridgeName has to be implemented manually */ + if ((xml = virNetworkGetXMLDesc(net, args->flags)) == NULL) + goto cleanup; -/* remoteDispatchNetworkIsActive has to be implemented manually */ + ret->xml = xml; + rv = 0; -/* remoteDispatchNetworkIsPersistent has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +static int +remoteDispatchNetworkGetAutostart( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_get_autostart_args *args, + remote_network_get_autostart_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + int autostart; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if (virNetworkGetAutostart(net, &autostart) < 0) + goto cleanup; + + ret->autostart = autostart; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +static int +remoteDispatchNetworkGetBridgeName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_get_bridge_name_args *args, + remote_network_get_bridge_name_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + char *name; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if ((name = virNetworkGetBridgeName(net)) == NULL) + goto cleanup; + + ret->name = name; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +static int +remoteDispatchNetworkIsActive( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_is_active_args *args, + remote_network_is_active_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + int active; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if ((active = virNetworkIsActive(net)) < 0) + goto cleanup; + + ret->active = active; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +static int +remoteDispatchNetworkIsPersistent( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_is_persistent_args *args, + remote_network_is_persistent_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + int persistent; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(net = get_nonnull_network(conn, args->net))) + goto cleanup; + + if ((persistent = virNetworkIsPersistent(net)) < 0) + goto cleanup; + + ret->persistent = persistent; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} /* remoteDispatchNetworkLookupByName has to be implemented manually */ @@ -1462,7 +2398,41 @@ cleanup: return rv; } -/* remoteDispatchNodeDeviceDumpXML has to be implemented manually */ +static int +remoteDispatchNodeDeviceDumpXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_dump_xml_args *args, + remote_node_device_dump_xml_ret *ret) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dev = virNodeDeviceLookupByName(conn, args->name))) + goto cleanup; + + if ((xml = virNodeDeviceGetXMLDesc(dev, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} /* remoteDispatchNodeDeviceGetParent has to be implemented manually */ @@ -1470,7 +2440,41 @@ cleanup: /* remoteDispatchNodeDeviceLookupByName has to be implemented manually */ -/* remoteDispatchNodeDeviceNumOfCaps has to be implemented manually */ +static int +remoteDispatchNodeDeviceNumOfCaps( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_num_of_caps_args *args, + remote_node_device_num_of_caps_ret *ret) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dev = virNodeDeviceLookupByName(conn, args->name))) + goto cleanup; + + if ((num = virNodeDeviceNumOfCaps(dev)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} static int remoteDispatchNodeDeviceReAttach( @@ -1552,29 +2556,343 @@ cleanup: /* remoteDispatchNodeNumOfDevices has to be implemented manually */ -/* remoteDispatchNumOfDefinedDomains has to be implemented manually */ +static int +remoteDispatchNumOfDefinedDomains( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_defined_domains_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfDefinedDomains(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfDefinedInterfaces( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_defined_interfaces_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfDefinedInterfaces(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfDefinedNetworks( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_defined_networks_ret *ret) +{ + int rv = -1; + int num; -/* remoteDispatchNumOfDefinedInterfaces has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchNumOfDefinedNetworks has to be implemented manually */ + if ((num = virConnectNumOfDefinedNetworks(conn)) < 0) + goto cleanup; -/* remoteDispatchNumOfDefinedStoragePools has to be implemented manually */ + ret->num = num; + rv = 0; -/* remoteDispatchNumOfDomains has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} -/* remoteDispatchNumOfInterfaces has to be implemented manually */ +static int +remoteDispatchNumOfDefinedStoragePools( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_defined_storage_pools_ret *ret) +{ + int rv = -1; + int num; -/* remoteDispatchNumOfNetworks has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchNumOfNWFilters has to be implemented manually */ + if ((num = virConnectNumOfDefinedStoragePools(conn)) < 0) + goto cleanup; -/* remoteDispatchNumOfSecrets has to be implemented manually */ + ret->num = num; + rv = 0; -/* remoteDispatchNumOfStoragePools has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfDomains( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_domains_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfDomains(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfInterfaces( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_interfaces_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfInterfaces(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfNetworks( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_networks_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfNetworks(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfNWFilters( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_nwfilters_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfNWFilters(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfSecrets( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_secrets_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfSecrets(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchNumOfStoragePools( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_num_of_storage_pools_ret *ret) +{ + int rv = -1; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((num = virConnectNumOfStoragePools(conn)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} /* remoteDispatchNWFilterDefineXML has to be implemented manually */ -/* remoteDispatchNWFilterGetXMLDesc has to be implemented manually */ +static int +remoteDispatchNWFilterGetXMLDesc( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_nwfilter_get_xml_desc_args *args, + remote_nwfilter_get_xml_desc_ret *ret) +{ + int rv = -1; + virNWFilterPtr nwfilter = NULL; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter))) + goto cleanup; + + if ((xml = virNWFilterGetXMLDesc(nwfilter, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (nwfilter) + virNWFilterFree(nwfilter); + return rv; +} /* remoteDispatchNWFilterLookupByName has to be implemented manually */ @@ -1620,7 +2938,41 @@ cleanup: /* remoteDispatchSecretGetValue has to be implemented manually */ -/* remoteDispatchSecretGetXMLDesc has to be implemented manually */ +static int +remoteDispatchSecretGetXMLDesc( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_secret_get_xml_desc_args *args, + remote_secret_get_xml_desc_ret *ret) +{ + int rv = -1; + virSecretPtr secret = NULL; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(secret = get_nonnull_secret(conn, args->secret))) + goto cleanup; + + if ((xml = virSecretGetXMLDesc(secret, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (secret) + virSecretFree(secret); + return rv; +} /* remoteDispatchSecretLookupByUsage has to be implemented manually */ @@ -1834,15 +3186,151 @@ cleanup: return rv; } -/* remoteDispatchStoragePoolDumpXML has to be implemented manually */ +static int +remoteDispatchStoragePoolDumpXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_dump_xml_args *args, + remote_storage_pool_dump_xml_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + char *xml; -/* remoteDispatchStoragePoolGetAutostart has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if ((xml = virStoragePoolGetXMLDesc(pool, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolGetAutostart( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_get_autostart_args *args, + remote_storage_pool_get_autostart_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + int autostart; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolGetAutostart(pool, &autostart) < 0) + goto cleanup; + + ret->autostart = autostart; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} /* remoteDispatchStoragePoolGetInfo has to be implemented manually */ -/* remoteDispatchStoragePoolIsActive has to be implemented manually */ +static int +remoteDispatchStoragePoolIsActive( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_is_active_args *args, + remote_storage_pool_is_active_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + int active; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchStoragePoolIsPersistent has to be implemented manually */ + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if ((active = virStoragePoolIsActive(pool)) < 0) + goto cleanup; + + ret->active = active; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolIsPersistent( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_is_persistent_args *args, + remote_storage_pool_is_persistent_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + int persistent; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if ((persistent = virStoragePoolIsPersistent(pool)) < 0) + goto cleanup; + + ret->persistent = persistent; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} /* remoteDispatchStoragePoolListVolumes has to be implemented manually */ @@ -1852,7 +3340,41 @@ cleanup: /* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */ -/* remoteDispatchStoragePoolNumOfVolumes has to be implemented manually */ +static int +remoteDispatchStoragePoolNumOfVolumes( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_num_of_volumes_args *args, + remote_storage_pool_num_of_volumes_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if ((num = virStoragePoolNumOfVolumes(pool)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} static int remoteDispatchStoragePoolRefresh( @@ -1996,11 +3518,79 @@ cleanup: /* remoteDispatchStorageVolDownload has to be implemented manually */ -/* remoteDispatchStorageVolDumpXML has to be implemented manually */ +static int +remoteDispatchStorageVolDumpXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_dump_xml_args *args, + remote_storage_vol_dump_xml_ret *ret) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(vol = get_nonnull_storage_vol(conn, args->vol))) + goto cleanup; + + if ((xml = virStorageVolGetXMLDesc(vol, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + return rv; +} /* remoteDispatchStorageVolGetInfo has to be implemented manually */ -/* remoteDispatchStorageVolGetPath has to be implemented manually */ +static int +remoteDispatchStorageVolGetPath( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_get_path_args *args, + remote_storage_vol_get_path_ret *ret) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + char *name; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(vol = get_nonnull_storage_vol(conn, args->vol))) + goto cleanup; + + if ((name = virStorageVolGetPath(vol)) == NULL) + goto cleanup; + + ret->name = name; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + return rv; +} /* remoteDispatchStorageVolLookupByKey has to be implemented manually */ @@ -2044,5 +3634,33 @@ cleanup: return rv; } -/* remoteDispatchSupportsFeature has to be implemented manually */ +static int +remoteDispatchSupportsFeature( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_supports_feature_args *args, + remote_supports_feature_ret *ret) +{ + int rv = -1; + int supported; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((supported = virDrvSupportsFeature(conn, args->feature)) < 0) + goto cleanup; + + ret->supported = supported; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 31af8b6..0901649 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -54,6 +54,7 @@ if ($opt_c) { } my $collect_args_members = 0; +my $collect_ret_members = 0; my $last_name; while (<>) { @@ -63,6 +64,12 @@ while (<>) { } elsif ($_ =~ m/^\s*(.*\S)\s*$/) { push(@{$calls{$name}->{args_members}}, $1); } + } elsif ($collect_ret_members) { + if (/^};/) { + $collect_ret_members = 0; + } elsif ($_ =~ m/^\s*(.*\S)\s*$/) { + push(@{$calls{$name}->{ret_members}}, $1); + } } elsif (/^struct ${structprefix}_(.*)_args/) { $name = $1; $ProcName = name_to_ProcName ($name); @@ -80,6 +87,7 @@ while (<>) { }; $collect_args_members = 1; + $collect_ret_members = 0; $last_name = $name; } elsif (/^struct ${structprefix}_(.*)_ret/) { $name = $1; @@ -93,11 +101,14 @@ while (<>) { ProcName => $ProcName, UC_NAME => uc $name, args => "void", - ret => "${structprefix}_${name}_ret" + ret => "${structprefix}_${name}_ret", + ret_members => [] } } $collect_args_members = 0; + $collect_ret_members = 1; + $last_name = $name; } elsif (/^struct ${structprefix}_(.*)_msg/) { $name = $1; $ProcName = name_to_ProcName ($name); @@ -110,6 +121,7 @@ while (<>) { }; $collect_args_members = 0; + $collect_ret_members = 0; } elsif (/^\s*${procprefix}_PROC_(.*?)\s+=\s+(\d+),?$/) { $name = lc $1; $id = $2; @@ -118,8 +130,10 @@ while (<>) { $calls[$id] = $calls{$name}; $collect_args_members = 0; + $collect_ret_members = 0; } else { $collect_args_members = 0; + $collect_ret_members = 0; } } @@ -235,7 +249,96 @@ elsif ($opt_b) { "DomainSetBlkioParameters", "Open", "StorageVolUpload", - "StorageVolDownload"); + "StorageVolDownload", + + "AuthList", + "AuthSaslInit", + "AuthSaslStart", + "AuthSaslStep", + "AuthPolkit", + + "CpuBaseline", + "CpuCompare", + "DomainBlockPeek", + "DomainBlockStats", + "DomainCreateWithFlags", + "DomainCreateXML", + "DomainDefineXML", + "DomainEventsDeregister", + "DomainEventsRegister", + "DomainGetBlkioParameters", + "DomainGetBlockInfo", + "DomainGetInfo", + "DomainGetJobInfo", + "DomainGetMemoryParameters", + "DomainGetSchedulerParameters", + "DomainGetSchedulerType", + "DomainGetSecurityLabel", + "DomainGetVcpus", + "DomainInterfaceStats", + "DomainLookupById", + "DomainLookupByName", + "DomainLookupByUUID", + "DomainMemoryPeek", + "DomainMemoryStats", + "DomainMigrateFinish", + "DomainMigrateFinish2", + "DomainMigratePrepare", + "DomainMigratePrepare2", + "DomainSnapshotCreateXML", + "DomainSnapshotCurrent", + "DomainSnapshotListNames", + "DomainSnapshotLookupByName", + "FindStoragePoolSources", + "GetMaxVcpus", + "GetType", + "InterfaceLookupByMacString", + "InterfaceLookupByName", + "InterfaceDefineXML", + "ListDefinedDomains", + "ListDefinedInterfaces", + "ListDefinedNetworks", + "ListDefinedStoragePools", + "ListDomains", + "ListInterfaces", + "ListNetworks", + "ListNWFilters", + "ListSecrets", + "ListStoragePools", + "NetworkLookupByName", + "NetworkLookupByUUID", + "NodeDeviceCreateXML", + "NetworkCreateXML", + "NodeDeviceGetParent", + "NodeDeviceListCaps", + "NodeDeviceLookupByName", + "NodeGetCellsFreeMemory", + "NodeGetFreeMemory", + "NodeGetInfo", + "NodeGetSecurityModel", + "NetworkDefineXML", + "NodeListDevices", + "NodeNumOfDevices", + "NWFilterLookupByName", + "NWFilterLookupByUUID", + "SecretDefineXML", + "SecretGetValue", + "NWFilterDefineXML", + "SecretLookupByUsage", + "SecretLookupByUUID", + "StoragePoolCreateXML", + "StoragePoolDefineXML", + "StoragePoolGetInfo", + "StoragePoolListVolumes", + "StoragePoolLookupByName", + "StoragePoolLookupByUUID", + "StoragePoolLookupByVolume", + "StorageVolCreateXML", + "StorageVolCreateXMLFrom", + "StorageVolGetInfo", + "StorageVolLookupByKey", + "StorageVolLookupByName", + "StorageVolLookupByPath"); } elsif ($structprefix eq "qemu") { @ungeneratable = ("MonitorCommand"); } @@ -248,8 +351,9 @@ elsif ($opt_b) { next if $calls{$_}->{msg}; # FIXME: skip functions with explicit return value for now - if ($calls{$_}->{ret} ne "void" or exists($ug{$calls{$_}->{ProcName}})) { - print "/* ${structprefix}Dispatch$calls{$_}->{ProcName} has to be implemented manually */\n\n"; + if (exists($ug{$calls{$_}->{ProcName}})) { + print "/* ${structprefix}Dispatch$calls{$_}->{ProcName} has to " . + "be implemented manually */\n\n"; next; } @@ -281,6 +385,7 @@ elsif ($opt_b) { my @vars_list = (); my @getters_list = (); my @args_list = (); + my @ret_list = (); my @free_list = (); if ($calls{$_}->{args} ne "void") { @@ -401,6 +506,49 @@ elsif ($opt_b) { } } + my $single_ret_var = "undefined"; + my $single_ret_by_ref = 0; + my $single_ret_check = " == undefined"; + + if ($calls{$_}->{ret} ne "void") { + foreach my $ret_member (@{$calls{$_}->{ret_members}}) { + if ($ret_member =~ m/(\S+)<\S+>;/) { + push(@ret_list, "ret->$1.$1_val"); + push(@ret_list, "ret->$1.$1_len"); + } elsif ($ret_member =~ m/remote_nonnull_string (\S+);/) { + push(@vars_list, "char *$1"); + push(@ret_list, "ret->$1 = $1;"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/int (\S+);/) { + push(@vars_list, "int $1"); + push(@ret_list, "ret->$1 = $1;"); + $single_ret_var = $1; + + if ($calls{$_}->{ProcName} eq "DomainGetAutostart" or + $calls{$_}->{ProcName} eq "NetworkGetAutostart" or + $calls{$_}->{ProcName} eq "StoragePoolGetAutostart") { + $single_ret_by_ref = 1; + } else { + $single_ret_by_ref = 0; + $single_ret_check = " < 0"; + } + } elsif ($ret_member =~ m/hyper (\S+);/) { + push(@vars_list, "unsigned long $1"); + push(@ret_list, "ret->$1 = $1;"); + $single_ret_var = $1; + + if ($calls{$_}->{ProcName} eq "DomainGetMaxMemory") { + $single_ret_by_ref = 0; + $single_ret_check = " == 0"; + } else { + $single_ret_by_ref = 1; + } + } + } + } + foreach my $var (@vars_list) { print " $var;\n"; } @@ -414,7 +562,9 @@ elsif ($opt_b) { print join("\n", @getters_list); - print "\n"; + if (@getters_list) { + print "\n"; + } if ($calls{$_}->{ret} eq "void") { print " if (vir$calls{$_}->{ProcName}("; @@ -422,6 +572,56 @@ elsif ($opt_b) { print ") < 0)\n"; print " goto cleanup;\n"; print "\n"; + } elsif (scalar(@{$calls{$_}->{ret_members}}) == 1) { + my $prefix = ""; + my $proc_name = $calls{$_}->{ProcName}; + + if (! @args_list) { + push(@args_list, "conn"); + $prefix = "Connect" + } + + if ($calls{$_}->{ProcName} eq "GetSysinfo" or + $calls{$_}->{ProcName} eq "DomainXMLFromNative" or + $calls{$_}->{ProcName} eq "DomainXMLToNative") { + $prefix = "Connect" + } elsif ($calls{$_}->{ProcName} eq "SupportsFeature") { + $prefix = "Drv" + } elsif ($calls{$_}->{ProcName} eq "DomainDumpXML") { + $proc_name = "DomainGetXMLDesc" + } elsif ($calls{$_}->{ProcName} eq "NetworkDumpXML") { + $proc_name = "NetworkGetXMLDesc" + } elsif ($calls{$_}->{ProcName} eq "StoragePoolDumpXML") { + $proc_name = "StoragePoolGetXMLDesc" + } elsif ($calls{$_}->{ProcName} eq "StorageVolDumpXML") { + $proc_name = "StorageVolGetXMLDesc" + } elsif ($calls{$_}->{ProcName} eq "NodeDeviceDumpXML") { + $proc_name = "NodeDeviceGetXMLDesc" + } elsif ($calls{$_}->{ProcName} eq "DomainSnapshotDumpXML") { + $proc_name = "DomainSnapshotGetXMLDesc" + } elsif ($calls{$_}->{ProcName} eq "DomainGetOsType") { + $proc_name = "DomainGetOSType" + } + + if ($single_ret_by_ref) { + print " if (vir$prefix$proc_name("; + print join(', ', @args_list); + print ", &$single_ret_var) < 0)\n"; + } else { + print " if (($single_ret_var = vir$prefix$proc_name("; + print join(', ', @args_list); + print "))$single_ret_check)\n"; + } + + print " goto cleanup;\n"; + print "\n"; + + if (@ret_list) { + print " "; + } + + print join(" \n", @ret_list); + print "\n"; } print " rv = 0;\n"; @@ -432,7 +632,10 @@ elsif ($opt_b) { print join("\n", @free_list); - print "\n"; + if (@free_list) { + print "\n"; + } + print " return rv;\n"; print "}\n"; print "\n"; -- 1.7.0.4

This covers functions that return single wrapped objects and don't involve complexer code in the body. --- daemon/remote.c | 1212 ----------------------------------- daemon/remote_dispatch_bodies.c | 1198 +++++++++++++++++++++++++++++++++- daemon/remote_dispatch_prototypes.h | 4 +- daemon/remote_dispatch_table.h | 8 +- daemon/remote_generator.pl | 227 ++++--- 5 files changed, 1309 insertions(+), 1340 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index a588a08..2b0e0dc 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -606,36 +606,6 @@ cleanup: return rv; } - -static int -remoteDispatchNodeGetFreeMemory(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_node_get_free_memory_ret *ret) -{ - unsigned long long freeMem; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((freeMem = virNodeGetFreeMemory(conn)) == 0) - goto cleanup; - ret->freeMem = freeMem; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - static int remoteDispatchDomainGetSchedulerType(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -1118,70 +1088,6 @@ cleanup: } static int -remoteDispatchDomainCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_create_xml_args *args, - remote_domain_create_xml_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = virDomainCreateXML(conn, args->xml_desc, args->flags))) - goto cleanup; - - make_nonnull_domain(&ret->dom, dom); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_define_xml_args *args, - remote_domain_define_xml_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = virDomainDefineXML(conn, args->xml))) - goto cleanup; - - make_nonnull_domain(&ret->dom, dom); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1492,41 +1398,6 @@ cleanup: } static int -remoteDispatchDomainMigrateFinish(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_migrate_finish_args *args, - remote_domain_migrate_finish_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = virDomainMigrateFinish(conn, args->dname, - args->cookie.cookie_val, - args->cookie.cookie_len, - args->uri, - args->flags))) - goto cleanup; - - make_nonnull_domain(&ret->ddom, dom); - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainMigratePrepare2(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1578,43 +1449,6 @@ cleanup: } static int -remoteDispatchDomainMigrateFinish2(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_migrate_finish2_args *args, - remote_domain_migrate_finish2_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = virDomainMigrateFinish2(conn, args->dname, - args->cookie.cookie_val, - args->cookie.cookie_len, - args->uri, - args->flags, - args->retcode))) - goto cleanup; - - make_nonnull_domain(&ret->ddom, dom); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainMigratePrepareTunnel(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client, virConnectPtr conn, @@ -1706,102 +1540,6 @@ cleanup: } static int -remoteDispatchDomainLookupById(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_lookup_by_id_args *args, - remote_domain_lookup_by_id_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = virDomainLookupByID(conn, args->id))) - goto cleanup; - - make_nonnull_domain(&ret->dom, dom); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_lookup_by_name_args *args, - remote_domain_lookup_by_name_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = virDomainLookupByName(conn, args->name))) - goto cleanup; - - make_nonnull_domain(&ret->dom, dom); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_lookup_by_uuid_args *args, - remote_domain_lookup_by_uuid_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = virDomainLookupByUUID(conn, (unsigned char *) args->uuid))) - goto cleanup; - - make_nonnull_domain(&ret->dom, dom); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainPinVcpu(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -2408,134 +2146,6 @@ cleanup: return rv; } -static int -remoteDispatchNetworkCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_create_xml_args *args, - remote_network_create_xml_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = virNetworkCreateXML(conn, args->xml))) - goto cleanup; - - make_nonnull_network(&ret->net, net); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int -remoteDispatchNetworkDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_define_xml_args *args, - remote_network_define_xml_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = virNetworkDefineXML(conn, args->xml))) - goto cleanup; - - make_nonnull_network(&ret->net, net); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int -remoteDispatchNetworkLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_lookup_by_name_args *args, - remote_network_lookup_by_name_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = virNetworkLookupByName(conn, args->name))) - goto cleanup; - - make_nonnull_network(&ret->net, net); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - -static int -remoteDispatchNetworkLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_network_lookup_by_uuid_args *args, - remote_network_lookup_by_uuid_ret *ret) -{ - virNetworkPtr net = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(net = virNetworkLookupByUUID(conn, (unsigned char *) args->uuid))) - goto cleanup; - - make_nonnull_network(&ret->net, net); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (net) - virNetworkFree(net); - return rv; -} - /*-------------------------------------------------------------*/ static int @@ -2628,102 +2238,6 @@ cleanup: return rv; } -static int -remoteDispatchInterfaceLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_lookup_by_name_args *args, - remote_interface_lookup_by_name_ret *ret) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = virInterfaceLookupByName(conn, args->name))) - goto cleanup; - - make_nonnull_interface(&ret->iface, iface); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - -static int -remoteDispatchInterfaceLookupByMacString(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_lookup_by_mac_string_args *args, - remote_interface_lookup_by_mac_string_ret *ret) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = virInterfaceLookupByMACString(conn, args->mac))) - goto cleanup; - - make_nonnull_interface(&ret->iface, iface); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - -static int -remoteDispatchInterfaceDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_interface_define_xml_args *args, - remote_interface_define_xml_ret *ret) -{ - virInterfacePtr iface = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(iface = virInterfaceDefineXML(conn, args->xml, args->flags))) - goto cleanup; - - make_nonnull_interface(&ret->iface, iface); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (iface) - virInterfaceFree(iface); - return rv; -} - /*-------------------------------------------------------------*/ static int @@ -3651,70 +3165,6 @@ cleanup: } static int -remoteDispatchStoragePoolCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_create_xml_args *args, - remote_storage_pool_create_xml_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = virStoragePoolCreateXML(conn, args->xml, args->flags))) - goto cleanup; - - make_nonnull_storage_pool(&ret->pool, pool); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int -remoteDispatchStoragePoolDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_define_xml_args *args, - remote_storage_pool_define_xml_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = virStoragePoolDefineXML(conn, args->xml, args->flags))) - goto cleanup; - - make_nonnull_storage_pool(&ret->pool, pool); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int remoteDispatchStoragePoolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3754,108 +3204,6 @@ cleanup: } static int -remoteDispatchStoragePoolLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_lookup_by_name_args *args, - remote_storage_pool_lookup_by_name_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = virStoragePoolLookupByName(conn, args->name))) - goto cleanup; - - make_nonnull_storage_pool(&ret->pool, pool); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int -remoteDispatchStoragePoolLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_lookup_by_uuid_args *args, - remote_storage_pool_lookup_by_uuid_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = virStoragePoolLookupByUUID(conn, (unsigned char *) args->uuid))) - goto cleanup; - - make_nonnull_storage_pool(&ret->pool, pool); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int -remoteDispatchStoragePoolLookupByVolume(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_lookup_by_volume_args *args, - remote_storage_pool_lookup_by_volume_ret *ret) -{ - virStoragePoolPtr pool = NULL; - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = get_nonnull_storage_vol(conn, args->vol))) - goto cleanup; - - if (!(pool = virStoragePoolLookupByVolume(vol))) - goto cleanup; - - make_nonnull_storage_pool(&ret->pool, pool); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -static int remoteDispatchStoragePoolListVolumes(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3911,89 +3259,6 @@ cleanup: * STORAGE VOL APIS ***************************************************************/ - - -static int -remoteDispatchStorageVolCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_create_xml_args *args, - remote_storage_vol_create_xml_ret *ret) -{ - virStoragePoolPtr pool = NULL; - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (!(vol = virStorageVolCreateXML(pool, args->xml, args->flags))) - goto cleanup; - - make_nonnull_storage_vol(&ret->vol, vol); - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - if (vol) - virStorageVolFree(vol); - return rv; -} - -static int -remoteDispatchStorageVolCreateXMLFrom(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_create_xml_from_args *args, - remote_storage_vol_create_xml_from_ret *ret) -{ - virStoragePoolPtr pool = NULL; - virStorageVolPtr clonevol = NULL; - virStorageVolPtr newvol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (!(clonevol = get_nonnull_storage_vol(conn, args->clonevol))) - goto cleanup; - - if (!(newvol = virStorageVolCreateXMLFrom(pool, args->xml, clonevol, - args->flags))) - goto cleanup; - - make_nonnull_storage_vol(&ret->vol, newvol); - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (newvol) - virStorageVolFree(newvol); - if (clonevol) - virStorageVolFree(clonevol); - if (pool) - virStoragePoolFree(pool); - return rv; -} - static int remoteDispatchStorageVolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -4032,110 +3297,6 @@ cleanup: return rv; } -static int -remoteDispatchStorageVolLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_lookup_by_name_args *args, - remote_storage_vol_lookup_by_name_ret *ret) -{ - virStoragePoolPtr pool = NULL; - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (!(vol = virStorageVolLookupByName(pool, args->name))) - goto cleanup; - - make_nonnull_storage_vol(&ret->vol, vol); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - if (vol) - virStorageVolFree(vol); - return rv; -} - -static int -remoteDispatchStorageVolLookupByKey(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_lookup_by_key_args *args, - remote_storage_vol_lookup_by_key_ret *ret) -{ - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = virStorageVolLookupByKey(conn, args->key))) - goto cleanup; - - make_nonnull_storage_vol(&ret->vol, vol); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - return rv; -} - - -static int -remoteDispatchStorageVolLookupByPath(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_lookup_by_path_args *args, - remote_storage_vol_lookup_by_path_ret *ret) -{ - virStorageVolPtr vol = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = virStorageVolLookupByPath(conn, args->path))) - goto cleanup; - - make_nonnull_storage_vol(&ret->vol, vol); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - return rv; -} - - /*************************************************************** * NODE INFO APIS **************************************************************/ @@ -4216,39 +3377,6 @@ cleanup: return rv; } - -static int -remoteDispatchNodeDeviceLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_lookup_by_name_args *args, - remote_node_device_lookup_by_name_ret *ret) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - make_nonnull_node_device(&ret->dev, dev); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - static int remoteDispatchNodeDeviceGetParent(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -4350,38 +3478,6 @@ cleanup: return rv; } -static int -remoteDispatchNodeDeviceCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_create_xml_args *args, - remote_node_device_create_xml_ret *ret) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceCreateXML(conn, args->xml_desc, args->flags))) - goto cleanup; - - make_nonnull_node_device(&ret->dev, dev); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dev) - virNodeDeviceFree(dev); - return rv; -} - static int remoteDispatchStorageVolUpload(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client, virConnectPtr conn, @@ -4658,37 +3754,6 @@ cleanup: } static int -remoteDispatchSecretDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_secret_define_xml_args *args, - remote_secret_define_xml_ret *ret) -{ - virSecretPtr secret = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(secret = virSecretDefineXML(conn, args->xml, args->flags))) - goto cleanup; - - make_nonnull_secret(&ret->secret, secret); - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (secret) - virSecretFree(secret); - return rv; -} - -static int remoteDispatchSecretGetValue(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -4727,70 +3792,6 @@ cleanup: } static int -remoteDispatchSecretLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_secret_lookup_by_uuid_args *args, - remote_secret_lookup_by_uuid_ret *ret) -{ - virSecretPtr secret = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(secret = virSecretLookupByUUID(conn, (unsigned char *)args->uuid))) - goto cleanup; - - make_nonnull_secret(&ret->secret, secret); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (secret) - virSecretFree(secret); - return rv; -} - -static int -remoteDispatchSecretLookupByUsage(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_secret_lookup_by_usage_args *args, - remote_secret_lookup_by_usage_ret *ret) -{ - virSecretPtr secret = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(secret = virSecretLookupByUsage(conn, args->usageType, args->usageID))) - goto cleanup; - - make_nonnull_secret(&ret->secret, secret); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (secret) - virSecretFree(secret); - return rv; -} - -static int remoteDispatchCpuCompare(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -4902,44 +3903,6 @@ cleanup: } static int -remoteDispatchDomainSnapshotCreateXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_snapshot_create_xml_args *args, - remote_domain_snapshot_create_xml_ret *ret) -{ - virDomainSnapshotPtr snapshot = NULL; - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (!(snapshot = virDomainSnapshotCreateXML(dom, args->xml_desc, args->flags))) - goto cleanup; - - make_nonnull_domain_snapshot(&ret->snap, snapshot); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (snapshot) - virDomainSnapshotFree(snapshot); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -4993,82 +3956,6 @@ cleanup: } static int -remoteDispatchDomainSnapshotLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_snapshot_lookup_by_name_args *args, - remote_domain_snapshot_lookup_by_name_ret *ret) -{ - virDomainSnapshotPtr snapshot = NULL; - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (!(snapshot = virDomainSnapshotLookupByName(dom, args->name, args->flags))) - goto cleanup; - - make_nonnull_domain_snapshot(&ret->snap, snapshot); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (snapshot) - virDomainSnapshotFree(snapshot); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainSnapshotCurrent(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_snapshot_current_args *args, - remote_domain_snapshot_current_ret *ret) -{ - virDomainSnapshotPtr snapshot = NULL; - virDomainPtr dom = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (!(snapshot = virDomainSnapshotCurrent(dom, args->flags))) - goto cleanup; - - make_nonnull_domain_snapshot(&ret->snap, snapshot); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (snapshot) - virDomainSnapshotFree(snapshot); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainEventsRegisterAny(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -5154,105 +4041,6 @@ cleanup: return rv; } - - -static int -remoteDispatchNWFilterLookupByName(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_nwfilter_lookup_by_name_args *args, - remote_nwfilter_lookup_by_name_ret *ret) -{ - virNWFilterPtr nwfilter = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(nwfilter = virNWFilterLookupByName(conn, args->name))) - goto cleanup; - - make_nonnull_nwfilter(&ret->nwfilter, nwfilter); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (nwfilter) - virNWFilterFree(nwfilter); - return rv; -} - -static int -remoteDispatchNWFilterLookupByUUID(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_nwfilter_lookup_by_uuid_args *args, - remote_nwfilter_lookup_by_uuid_ret *ret) -{ - virNWFilterPtr nwfilter = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(nwfilter = virNWFilterLookupByUUID(conn, (unsigned char *) args->uuid))) - goto cleanup; - - make_nonnull_nwfilter(&ret->nwfilter, nwfilter); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (nwfilter) - virNWFilterFree(nwfilter); - return rv; -} - - -static int -remoteDispatchNWFilterDefineXML(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_nwfilter_define_xml_args *args, - remote_nwfilter_define_xml_ret *ret) -{ - virNWFilterPtr nwfilter = NULL; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(nwfilter = virNWFilterDefineXML(conn, args->xml))) - goto cleanup; - - make_nonnull_nwfilter(&ret->nwfilter, nwfilter); - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (nwfilter) - virNWFilterFree(nwfilter); - return rv; -} - static int remoteDispatchListNWFilters(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index c1959b6..bd7cddd 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -194,9 +194,69 @@ cleanup: /* remoteDispatchDomainCreateWithFlags has to be implemented manually */ -/* remoteDispatchDomainCreateXML has to be implemented manually */ +static int +remoteDispatchDomainCreateXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_create_xml_args *args, + remote_domain_create_xml_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchDomainDefineXML has to be implemented manually */ + if ((dom = virDomainCreateXML(conn, args->xml_desc, args->flags)) == NULL) + goto cleanup; + + make_nonnull_domain(&ret->dom, dom); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainDefineXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_define_xml_args *args, + remote_domain_define_xml_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((dom = virDomainDefineXML(conn, args->xml)) == NULL) + goto cleanup; + + make_nonnull_domain(&ret->dom, dom); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} static int remoteDispatchDomainDestroy( @@ -724,11 +784,101 @@ cleanup: return rv; } -/* remoteDispatchDomainLookupById has to be implemented manually */ +static int +remoteDispatchDomainLookupByID( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_lookup_by_id_args *args, + remote_domain_lookup_by_id_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; -/* remoteDispatchDomainLookupByName has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((dom = virDomainLookupByID(conn, args->id)) == NULL) + goto cleanup; + + make_nonnull_domain(&ret->dom, dom); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_lookup_by_name_args *args, + remote_domain_lookup_by_name_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((dom = virDomainLookupByName(conn, args->name)) == NULL) + goto cleanup; -/* remoteDispatchDomainLookupByUUID has to be implemented manually */ + make_nonnull_domain(&ret->dom, dom); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainLookupByUUID( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_lookup_by_uuid_args *args, + remote_domain_lookup_by_uuid_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((dom = virDomainLookupByUUID(conn, (unsigned char *) args->uuid)) == NULL) + goto cleanup; + + make_nonnull_domain(&ret->dom, dom); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} static int remoteDispatchDomainManagedSave( @@ -802,9 +952,69 @@ cleanup: /* remoteDispatchDomainMemoryStats has to be implemented manually */ -/* remoteDispatchDomainMigrateFinish has to be implemented manually */ +static int +remoteDispatchDomainMigrateFinish( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_migrate_finish_args *args, + remote_domain_migrate_finish_ret *ret) +{ + int rv = -1; + virDomainPtr ddom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((ddom = virDomainMigrateFinish(conn, args->dname, args->cookie.cookie_val, args->cookie.cookie_len, args->uri, args->flags)) == NULL) + goto cleanup; + + make_nonnull_domain(&ret->ddom, ddom); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (ddom) + virDomainFree(ddom); + return rv; +} + +static int +remoteDispatchDomainMigrateFinish2( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_migrate_finish2_args *args, + remote_domain_migrate_finish2_ret *ret) +{ + int rv = -1; + virDomainPtr ddom = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((ddom = virDomainMigrateFinish2(conn, args->dname, args->cookie.cookie_val, args->cookie.cookie_len, args->uri, args->flags, args->retcode)) == NULL) + goto cleanup; -/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */ + make_nonnull_domain(&ret->ddom, ddom); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (ddom) + virDomainFree(ddom); + return rv; +} /* remoteDispatchDomainMigratePerform has to be implemented manually */ @@ -1300,9 +1510,81 @@ cleanup: return rv; } -/* remoteDispatchDomainSnapshotCreateXML has to be implemented manually */ +static int +remoteDispatchDomainSnapshotCreateXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_snapshot_create_xml_args *args, + remote_domain_snapshot_create_xml_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainSnapshotPtr snap = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((snap = virDomainSnapshotCreateXML(dom, args->xml_desc, args->flags)) == NULL) + goto cleanup; + + make_nonnull_domain_snapshot(&ret->snap, snap); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + if (snap) + virDomainSnapshotFree(snap); + return rv; +} + +static int +remoteDispatchDomainSnapshotCurrent( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_snapshot_current_args *args, + remote_domain_snapshot_current_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainSnapshotPtr snap = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((snap = virDomainSnapshotCurrent(dom, args->flags)) == NULL) + goto cleanup; + + make_nonnull_domain_snapshot(&ret->snap, snap); + rv = 0; -/* remoteDispatchDomainSnapshotCurrent has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + if (snap) + virDomainSnapshotFree(snap); + return rv; +} static int remoteDispatchDomainSnapshotDelete( @@ -1388,7 +1670,43 @@ cleanup: /* remoteDispatchDomainSnapshotListNames has to be implemented manually */ -/* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */ +static int +remoteDispatchDomainSnapshotLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_snapshot_lookup_by_name_args *args, + remote_domain_snapshot_lookup_by_name_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainSnapshotPtr snap = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if ((snap = virDomainSnapshotLookupByName(dom, args->name, args->flags)) == NULL) + goto cleanup; + + make_nonnull_domain_snapshot(&ret->snap, snap); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + if (snap) + virDomainSnapshotFree(snap); + return rv; +} static int remoteDispatchDomainSnapshotNum( @@ -1808,7 +2126,37 @@ cleanup: return rv; } -/* remoteDispatchInterfaceDefineXML has to be implemented manually */ +static int +remoteDispatchInterfaceDefineXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_define_xml_args *args, + remote_interface_define_xml_ret *ret) +{ + int rv = -1; + virInterfacePtr iface = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((iface = virInterfaceDefineXML(conn, args->xml, args->flags)) == NULL) + goto cleanup; + + make_nonnull_interface(&ret->iface, iface); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} static int remoteDispatchInterfaceDestroy( @@ -1916,9 +2264,69 @@ cleanup: return rv; } -/* remoteDispatchInterfaceLookupByMacString has to be implemented manually */ +static int +remoteDispatchInterfaceLookupByMACString( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_lookup_by_mac_string_args *args, + remote_interface_lookup_by_mac_string_ret *ret) +{ + int rv = -1; + virInterfacePtr iface = NULL; -/* remoteDispatchInterfaceLookupByName has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((iface = virInterfaceLookupByMACString(conn, args->mac)) == NULL) + goto cleanup; + + make_nonnull_interface(&ret->iface, iface); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} + +static int +remoteDispatchInterfaceLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_interface_lookup_by_name_args *args, + remote_interface_lookup_by_name_ret *ret) +{ + int rv = -1; + virInterfacePtr iface = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((iface = virInterfaceLookupByName(conn, args->name)) == NULL) + goto cleanup; + + make_nonnull_interface(&ret->iface, iface); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (iface) + virInterfaceFree(iface); + return rv; +} static int remoteDispatchInterfaceUndefine( @@ -2038,9 +2446,69 @@ cleanup: return rv; } -/* remoteDispatchNetworkCreateXML has to be implemented manually */ +static int +remoteDispatchNetworkCreateXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_create_xml_args *args, + remote_network_create_xml_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchNetworkDefineXML has to be implemented manually */ + if ((net = virNetworkCreateXML(conn, args->xml)) == NULL) + goto cleanup; + + make_nonnull_network(&ret->net, net); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +static int +remoteDispatchNetworkDefineXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_define_xml_args *args, + remote_network_define_xml_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((net = virNetworkDefineXML(conn, args->xml)) == NULL) + goto cleanup; + + make_nonnull_network(&ret->net, net); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} static int remoteDispatchNetworkDestroy( @@ -2256,9 +2724,69 @@ cleanup: return rv; } -/* remoteDispatchNetworkLookupByName has to be implemented manually */ +static int +remoteDispatchNetworkLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_lookup_by_name_args *args, + remote_network_lookup_by_name_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((net = virNetworkLookupByName(conn, args->name)) == NULL) + goto cleanup; + + make_nonnull_network(&ret->net, net); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} + +static int +remoteDispatchNetworkLookupByUUID( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_network_lookup_by_uuid_args *args, + remote_network_lookup_by_uuid_ret *ret) +{ + int rv = -1; + virNetworkPtr net = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((net = virNetworkLookupByUUID(conn, (unsigned char *) args->uuid)) == NULL) + goto cleanup; + + make_nonnull_network(&ret->net, net); + rv = 0; -/* remoteDispatchNetworkLookupByUUID has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (net) + virNetworkFree(net); + return rv; +} static int remoteDispatchNetworkSetAutostart( @@ -2328,7 +2856,37 @@ cleanup: return rv; } -/* remoteDispatchNodeDeviceCreateXML has to be implemented manually */ +static int +remoteDispatchNodeDeviceCreateXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_create_xml_args *args, + remote_node_device_create_xml_ret *ret) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((dev = virNodeDeviceCreateXML(conn, args->xml_desc, args->flags)) == NULL) + goto cleanup; + + make_nonnull_node_device(&ret->dev, dev); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} static int remoteDispatchNodeDeviceDestroy( @@ -2438,7 +2996,37 @@ cleanup: /* remoteDispatchNodeDeviceListCaps has to be implemented manually */ -/* remoteDispatchNodeDeviceLookupByName has to be implemented manually */ +static int +remoteDispatchNodeDeviceLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_lookup_by_name_args *args, + remote_node_device_lookup_by_name_ret *ret) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((dev = virNodeDeviceLookupByName(conn, args->name)) == NULL) + goto cleanup; + + make_nonnull_node_device(&ret->dev, dev); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + return rv; +} static int remoteDispatchNodeDeviceNumOfCaps( @@ -2546,7 +3134,35 @@ cleanup: /* remoteDispatchNodeGetCellsFreeMemory has to be implemented manually */ -/* remoteDispatchNodeGetFreeMemory has to be implemented manually */ +static int +remoteDispatchNodeGetFreeMemory( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_node_get_free_memory_ret *ret) +{ + int rv = -1; + unsigned long freeMem; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((freeMem = virNodeGetFreeMemory(conn)) == 0) + goto cleanup; + + ret->freeMem = freeMem; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} /* remoteDispatchNodeGetInfo has to be implemented manually */ @@ -2856,7 +3472,37 @@ cleanup: return rv; } -/* remoteDispatchNWFilterDefineXML has to be implemented manually */ +static int +remoteDispatchNWFilterDefineXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_nwfilter_define_xml_args *args, + remote_nwfilter_define_xml_ret *ret) +{ + int rv = -1; + virNWFilterPtr nwfilter = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((nwfilter = virNWFilterDefineXML(conn, args->xml)) == NULL) + goto cleanup; + + make_nonnull_nwfilter(&ret->nwfilter, nwfilter); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (nwfilter) + virNWFilterFree(nwfilter); + return rv; +} static int remoteDispatchNWFilterGetXMLDesc( @@ -2894,9 +3540,69 @@ cleanup: return rv; } -/* remoteDispatchNWFilterLookupByName has to be implemented manually */ +static int +remoteDispatchNWFilterLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_nwfilter_lookup_by_name_args *args, + remote_nwfilter_lookup_by_name_ret *ret) +{ + int rv = -1; + virNWFilterPtr nwfilter = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((nwfilter = virNWFilterLookupByName(conn, args->name)) == NULL) + goto cleanup; + + make_nonnull_nwfilter(&ret->nwfilter, nwfilter); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (nwfilter) + virNWFilterFree(nwfilter); + return rv; +} + +static int +remoteDispatchNWFilterLookupByUUID( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_nwfilter_lookup_by_uuid_args *args, + remote_nwfilter_lookup_by_uuid_ret *ret) +{ + int rv = -1; + virNWFilterPtr nwfilter = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((nwfilter = virNWFilterLookupByUUID(conn, (unsigned char *) args->uuid)) == NULL) + goto cleanup; -/* remoteDispatchNWFilterLookupByUUID has to be implemented manually */ + make_nonnull_nwfilter(&ret->nwfilter, nwfilter); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (nwfilter) + virNWFilterFree(nwfilter); + return rv; +} static int remoteDispatchNWFilterUndefine( @@ -2934,7 +3640,37 @@ cleanup: /* remoteDispatchOpen has to be implemented manually */ -/* remoteDispatchSecretDefineXML has to be implemented manually */ +static int +remoteDispatchSecretDefineXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_secret_define_xml_args *args, + remote_secret_define_xml_ret *ret) +{ + int rv = -1; + virSecretPtr secret = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((secret = virSecretDefineXML(conn, args->xml, args->flags)) == NULL) + goto cleanup; + + make_nonnull_secret(&ret->secret, secret); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (secret) + virSecretFree(secret); + return rv; +} /* remoteDispatchSecretGetValue has to be implemented manually */ @@ -2974,9 +3710,69 @@ cleanup: return rv; } -/* remoteDispatchSecretLookupByUsage has to be implemented manually */ +static int +remoteDispatchSecretLookupByUsage( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_secret_lookup_by_usage_args *args, + remote_secret_lookup_by_usage_ret *ret) +{ + int rv = -1; + virSecretPtr secret = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((secret = virSecretLookupByUsage(conn, args->usageType, args->usageID)) == NULL) + goto cleanup; + + make_nonnull_secret(&ret->secret, secret); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (secret) + virSecretFree(secret); + return rv; +} + +static int +remoteDispatchSecretLookupByUUID( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_secret_lookup_by_uuid_args *args, + remote_secret_lookup_by_uuid_ret *ret) +{ + int rv = -1; + virSecretPtr secret = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((secret = virSecretLookupByUUID(conn, (unsigned char *) args->uuid)) == NULL) + goto cleanup; -/* remoteDispatchSecretLookupByUUID has to be implemented manually */ + make_nonnull_secret(&ret->secret, secret); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (secret) + virSecretFree(secret); + return rv; +} static int remoteDispatchSecretSetValue( @@ -3114,9 +3910,69 @@ cleanup: return rv; } -/* remoteDispatchStoragePoolCreateXML has to be implemented manually */ +static int +remoteDispatchStoragePoolCreateXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_create_xml_args *args, + remote_storage_pool_create_xml_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((pool = virStoragePoolCreateXML(conn, args->xml, args->flags)) == NULL) + goto cleanup; + + make_nonnull_storage_pool(&ret->pool, pool); + rv = 0; -/* remoteDispatchStoragePoolDefineXML has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolDefineXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_define_xml_args *args, + remote_storage_pool_define_xml_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((pool = virStoragePoolDefineXML(conn, args->xml, args->flags)) == NULL) + goto cleanup; + + make_nonnull_storage_pool(&ret->pool, pool); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} static int remoteDispatchStoragePoolDelete( @@ -3334,11 +4190,107 @@ cleanup: /* remoteDispatchStoragePoolListVolumes has to be implemented manually */ -/* remoteDispatchStoragePoolLookupByName has to be implemented manually */ +static int +remoteDispatchStoragePoolLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_lookup_by_name_args *args, + remote_storage_pool_lookup_by_name_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((pool = virStoragePoolLookupByName(conn, args->name)) == NULL) + goto cleanup; + + make_nonnull_storage_pool(&ret->pool, pool); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolLookupByUUID( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_lookup_by_uuid_args *args, + remote_storage_pool_lookup_by_uuid_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((pool = virStoragePoolLookupByUUID(conn, (unsigned char *) args->uuid)) == NULL) + goto cleanup; + + make_nonnull_storage_pool(&ret->pool, pool); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} + +static int +remoteDispatchStoragePoolLookupByVolume( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_lookup_by_volume_args *args, + remote_storage_pool_lookup_by_volume_ret *ret) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + virStoragePoolPtr pool = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchStoragePoolLookupByUUID has to be implemented manually */ + if (!(vol = get_nonnull_storage_vol(conn, args->vol))) + goto cleanup; + + if ((pool = virStoragePoolLookupByVolume(vol)) == NULL) + goto cleanup; -/* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */ + make_nonnull_storage_pool(&ret->pool, pool); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + if (pool) + virStoragePoolFree(pool); + return rv; +} static int remoteDispatchStoragePoolNumOfVolumes( @@ -3478,9 +4430,87 @@ cleanup: return rv; } -/* remoteDispatchStorageVolCreateXML has to be implemented manually */ +static int +remoteDispatchStorageVolCreateXML( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_create_xml_args *args, + remote_storage_vol_create_xml_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + virStorageVolPtr vol = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if ((vol = virStorageVolCreateXML(pool, args->xml, args->flags)) == NULL) + goto cleanup; + + make_nonnull_storage_vol(&ret->vol, vol); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + if (vol) + virStorageVolFree(vol); + return rv; +} + +static int +remoteDispatchStorageVolCreateXMLFrom( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_create_xml_from_args *args, + remote_storage_vol_create_xml_from_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + virStorageVolPtr clonevol = NULL; + virStorageVolPtr vol = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (!(clonevol = get_nonnull_storage_vol(conn, args->clonevol))) + goto cleanup; -/* remoteDispatchStorageVolCreateXMLFrom has to be implemented manually */ + if ((vol = virStorageVolCreateXMLFrom(pool, args->xml, clonevol, args->flags)) == NULL) + goto cleanup; + + make_nonnull_storage_vol(&ret->vol, vol); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + if (clonevol) + virStorageVolFree(clonevol); + if (vol) + virStorageVolFree(vol); + return rv; +} static int remoteDispatchStorageVolDelete( @@ -3592,11 +4622,107 @@ cleanup: return rv; } -/* remoteDispatchStorageVolLookupByKey has to be implemented manually */ +static int +remoteDispatchStorageVolLookupByKey( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_lookup_by_key_args *args, + remote_storage_vol_lookup_by_key_ret *ret) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((vol = virStorageVolLookupByKey(conn, args->key)) == NULL) + goto cleanup; + + make_nonnull_storage_vol(&ret->vol, vol); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + return rv; +} + +static int +remoteDispatchStorageVolLookupByName( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_lookup_by_name_args *args, + remote_storage_vol_lookup_by_name_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + virStorageVolPtr vol = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if ((vol = virStorageVolLookupByName(pool, args->name)) == NULL) + goto cleanup; + + make_nonnull_storage_vol(&ret->vol, vol); + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + if (vol) + virStorageVolFree(vol); + return rv; +} + +static int +remoteDispatchStorageVolLookupByPath( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_lookup_by_path_args *args, + remote_storage_vol_lookup_by_path_ret *ret) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((vol = virStorageVolLookupByPath(conn, args->path)) == NULL) + goto cleanup; -/* remoteDispatchStorageVolLookupByName has to be implemented manually */ + make_nonnull_storage_vol(&ret->vol, vol); + rv = 0; -/* remoteDispatchStorageVolLookupByPath has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + return rv; +} /* remoteDispatchStorageVolUpload has to be implemented manually */ diff --git a/daemon/remote_dispatch_prototypes.h b/daemon/remote_dispatch_prototypes.h index dff84d7..1e3be48 100644 --- a/daemon/remote_dispatch_prototypes.h +++ b/daemon/remote_dispatch_prototypes.h @@ -370,7 +370,7 @@ static int remoteDispatchDomainIsUpdated( remote_error *rerr, remote_domain_is_updated_args *args, remote_domain_is_updated_ret *ret); -static int remoteDispatchDomainLookupById( +static int remoteDispatchDomainLookupByID( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -834,7 +834,7 @@ static int remoteDispatchInterfaceIsActive( remote_error *rerr, remote_interface_is_active_args *args, remote_interface_is_active_ret *ret); -static int remoteDispatchInterfaceLookupByMacString( +static int remoteDispatchInterfaceLookupByMACString( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, diff --git a/daemon/remote_dispatch_table.h b/daemon/remote_dispatch_table.h index 627331e..357d1de 100644 --- a/daemon/remote_dispatch_table.h +++ b/daemon/remote_dispatch_table.h @@ -112,8 +112,8 @@ .args_filter = (xdrproc_t) xdr_remote_list_defined_domains_args, .ret_filter = (xdrproc_t) xdr_remote_list_defined_domains_ret, }, -{ /* DomainLookupById => 22 */ - .fn = (dispatch_fn) remoteDispatchDomainLookupById, +{ /* DomainLookupByID => 22 */ + .fn = (dispatch_fn) remoteDispatchDomainLookupByID, .args_filter = (xdrproc_t) xdr_remote_domain_lookup_by_id_args, .ret_filter = (xdrproc_t) xdr_remote_domain_lookup_by_id_ret, }, @@ -647,8 +647,8 @@ .args_filter = (xdrproc_t) xdr_remote_interface_lookup_by_name_args, .ret_filter = (xdrproc_t) xdr_remote_interface_lookup_by_name_ret, }, -{ /* InterfaceLookupByMacString => 129 */ - .fn = (dispatch_fn) remoteDispatchInterfaceLookupByMacString, +{ /* InterfaceLookupByMACString => 129 */ + .fn = (dispatch_fn) remoteDispatchInterfaceLookupByMACString, .args_filter = (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_args, .ret_filter = (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_ret, }, diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 0901649..1b83d52 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -33,7 +33,8 @@ sub name_to_ProcName { my @elems = split /_/, $name; @elems = map ucfirst, @elems; @elems = map { $_ =~ s/Nwfilter/NWFilter/; $_ =~ s/Xml/XML/; - $_ =~ s/Uri/URI/; $_ =~ s/Uuid/UUID/; $_ } @elems; + $_ =~ s/Uri/URI/; $_ =~ s/Uuid/UUID/; $_ =~ s/Id/ID/; + $_ =~ s/Mac/MAC/; $_ } @elems; join "", @elems } @@ -262,8 +263,6 @@ elsif ($opt_b) { "DomainBlockPeek", "DomainBlockStats", "DomainCreateWithFlags", - "DomainCreateXML", - "DomainDefineXML", "DomainEventsDeregister", "DomainEventsRegister", "DomainGetBlkioParameters", @@ -276,25 +275,14 @@ elsif ($opt_b) { "DomainGetSecurityLabel", "DomainGetVcpus", "DomainInterfaceStats", - "DomainLookupById", - "DomainLookupByName", - "DomainLookupByUUID", "DomainMemoryPeek", "DomainMemoryStats", - "DomainMigrateFinish", - "DomainMigrateFinish2", "DomainMigratePrepare", "DomainMigratePrepare2", - "DomainSnapshotCreateXML", - "DomainSnapshotCurrent", "DomainSnapshotListNames", - "DomainSnapshotLookupByName", "FindStoragePoolSources", "GetMaxVcpus", "GetType", - "InterfaceLookupByMacString", - "InterfaceLookupByName", - "InterfaceDefineXML", "ListDefinedDomains", "ListDefinedInterfaces", "ListDefinedNetworks", @@ -305,40 +293,17 @@ elsif ($opt_b) { "ListNWFilters", "ListSecrets", "ListStoragePools", - "NetworkLookupByName", - "NetworkLookupByUUID", - "NodeDeviceCreateXML", - "NetworkCreateXML", "NodeDeviceGetParent", "NodeDeviceListCaps", - "NodeDeviceLookupByName", "NodeGetCellsFreeMemory", - "NodeGetFreeMemory", "NodeGetInfo", "NodeGetSecurityModel", - "NetworkDefineXML", "NodeListDevices", "NodeNumOfDevices", - "NWFilterLookupByName", - "NWFilterLookupByUUID", - "SecretDefineXML", "SecretGetValue", - "NWFilterDefineXML", - "SecretLookupByUsage", - "SecretLookupByUUID", - "StoragePoolCreateXML", - "StoragePoolDefineXML", "StoragePoolGetInfo", "StoragePoolListVolumes", - "StoragePoolLookupByName", - "StoragePoolLookupByUUID", - "StoragePoolLookupByVolume", - "StorageVolCreateXML", - "StorageVolCreateXMLFrom", - "StorageVolGetInfo", - "StorageVolLookupByKey", - "StorageVolLookupByName", - "StorageVolLookupByPath"); + "StorageVolGetInfo"); } elsif ($structprefix eq "qemu") { @ungeneratable = ("MonitorCommand"); } @@ -350,7 +315,6 @@ elsif ($opt_b) { # skip things which are REMOTE_MESSAGE next if $calls{$_}->{msg}; - # FIXME: skip functions with explicit return value for now if (exists($ug{$calls{$_}->{ProcName}})) { print "/* ${structprefix}Dispatch$calls{$_}->{ProcName} has to " . "be implemented manually */\n\n"; @@ -390,7 +354,9 @@ elsif ($opt_b) { if ($calls{$_}->{args} ne "void") { # node device is special, as it's identified by name - if ($calls{$_}->{args} =~ m/^remote_node_device/) { + if ($calls{$_}->{args} =~ m/^remote_node_device_/ and + !($calls{$_}->{args} =~ m/^remote_node_device_lookup_by_name_/) and + !($calls{$_}->{args} =~ m/^remote_node_device_create_xml_/)) { $has_node_device = 1; push(@vars_list, "virNodeDevicePtr dev = NULL"); push(@getters_list, @@ -406,69 +372,69 @@ elsif ($opt_b) { if ($args_member =~ m/^remote_nonnull_string name;/ and $has_node_device) { # ignore the name arg for node devices next - } elsif ($args_member =~ m/^remote_nonnull_domain /) { - push(@vars_list, "virDomainPtr dom = NULL"); + } elsif ($args_member =~ m/^remote_nonnull_domain (\S+);/) { + push(@vars_list, "virDomainPtr $1 = NULL"); push(@getters_list, - " if (!(dom = get_nonnull_domain(conn, args->dom)))\n" . + " if (!($1 = get_nonnull_domain(conn, args->$1)))\n" . " goto cleanup;\n"); - push(@args_list, "dom"); + push(@args_list, "$1"); push(@free_list, - " if (dom)\n" . - " virDomainFree(dom);"); - } elsif ($args_member =~ m/^remote_nonnull_network /) { - push(@vars_list, "virNetworkPtr net = NULL"); + " if ($1)\n" . + " virDomainFree($1);"); + } elsif ($args_member =~ m/^remote_nonnull_network (\S+);/) { + push(@vars_list, "virNetworkPtr $1 = NULL"); push(@getters_list, - " if (!(net = get_nonnull_network(conn, args->net)))\n" . + " if (!($1 = get_nonnull_network(conn, args->$1)))\n" . " goto cleanup;\n"); - push(@args_list, "net"); + push(@args_list, "$1"); push(@free_list, - " if (net)\n" . - " virNetworkFree(net);"); - } elsif ($args_member =~ m/^remote_nonnull_storage_pool /) { - push(@vars_list, "virStoragePoolPtr pool = NULL"); + " if ($1)\n" . + " virNetworkFree($1);"); + } elsif ($args_member =~ m/^remote_nonnull_storage_pool (\S+);/) { + push(@vars_list, "virStoragePoolPtr $1 = NULL"); push(@getters_list, - " if (!(pool = get_nonnull_storage_pool(conn, args->pool)))\n" . + " if (!($1 = get_nonnull_storage_pool(conn, args->$1)))\n" . " goto cleanup;\n"); - push(@args_list, "pool"); + push(@args_list, "$1"); push(@free_list, - " if (pool)\n" . - " virStoragePoolFree(pool);"); - } elsif ($args_member =~ m/^remote_nonnull_storage_vol /) { - push(@vars_list, "virStorageVolPtr vol = NULL"); + " if ($1)\n" . + " virStoragePoolFree($1);"); + } elsif ($args_member =~ m/^remote_nonnull_storage_vol (\S+);/) { + push(@vars_list, "virStorageVolPtr $1 = NULL"); push(@getters_list, - " if (!(vol = get_nonnull_storage_vol(conn, args->vol)))\n" . + " if (!($1 = get_nonnull_storage_vol(conn, args->$1)))\n" . " goto cleanup;\n"); - push(@args_list, "vol"); + push(@args_list, "$1"); push(@free_list, - " if (vol)\n" . - " virStorageVolFree(vol);"); - } elsif ($args_member =~ m/^remote_nonnull_interface /) { - push(@vars_list, "virInterfacePtr iface = NULL"); + " if ($1)\n" . + " virStorageVolFree($1);"); + } elsif ($args_member =~ m/^remote_nonnull_interface (\S+);/) { + push(@vars_list, "virInterfacePtr $1 = NULL"); push(@getters_list, - " if (!(iface = get_nonnull_interface(conn, args->iface)))\n" . + " if (!($1 = get_nonnull_interface(conn, args->$1)))\n" . " goto cleanup;\n"); - push(@args_list, "iface"); + push(@args_list, "$1"); push(@free_list, - " if (iface)\n" . - " virInterfaceFree(iface);"); - } elsif ($args_member =~ m/^remote_nonnull_secret /) { - push(@vars_list, "virSecretPtr secret = NULL"); + " if ($1)\n" . + " virInterfaceFree($1);"); + } elsif ($args_member =~ m/^remote_nonnull_secret (\S+);/) { + push(@vars_list, "virSecretPtr $1 = NULL"); push(@getters_list, - " if (!(secret = get_nonnull_secret(conn, args->secret)))\n" . + " if (!($1 = get_nonnull_secret(conn, args->$1)))\n" . " goto cleanup;\n"); - push(@args_list, "secret"); + push(@args_list, "$1"); push(@free_list, - " if (secret)\n" . - " virSecretFree(secret);"); - } elsif ($args_member =~ m/^remote_nonnull_nwfilter /) { - push(@vars_list, "virNWFilterPtr nwfilter = NULL"); + " if ($1)\n" . + " virSecretFree($1);"); + } elsif ($args_member =~ m/^remote_nonnull_nwfilter (\S+);/) { + push(@vars_list, "virNWFilterPtr $1 = NULL"); push(@getters_list, - " if (!(nwfilter = get_nonnull_nwfilter(conn, args->nwfilter)))\n" . + " if (!($1 = get_nonnull_nwfilter(conn, args->$1)))\n" . " goto cleanup;\n"); - push(@args_list, "nwfilter"); + push(@args_list, "$1"); push(@free_list, - " if (nwfilter)\n" . - " virNWFilterFree(nwfilter);"); + " if ($1)\n" . + " virNWFilterFree($1);"); } elsif ($args_member =~ m/^remote_nonnull_domain_snapshot /) { push(@vars_list, "virDomainPtr dom = NULL"); push(@vars_list, "virDomainSnapshotPtr snapshot = NULL"); @@ -496,12 +462,16 @@ elsif ($opt_b) { } push(@args_list, "args->$1.$1_len"); - } elsif ($args_member =~ m/.* (\S+);/) { + } elsif ($args_member =~ m/(\S+) (\S+);/) { if (! @args_list) { push(@args_list, "conn"); } - push(@args_list, "args->$1"); + if ($1 eq "remote_uuid") { + push(@args_list, "(unsigned char *) args->$2"); + } else { + push(@args_list, "args->$2"); + } } } } @@ -521,6 +491,87 @@ elsif ($opt_b) { $single_ret_var = $1; $single_ret_by_ref = 0; $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_domain (\S+);/) { + push(@vars_list, "virDomainPtr $1 = NULL"); + push(@ret_list, "make_nonnull_domain(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virDomainFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_network (\S+);/) { + push(@vars_list, "virNetworkPtr $1 = NULL"); + push(@ret_list, "make_nonnull_network(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virNetworkFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_storage_pool (\S+);/) { + push(@vars_list, "virStoragePoolPtr $1 = NULL"); + push(@ret_list, "make_nonnull_storage_pool(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virStoragePoolFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_storage_vol (\S+);/) { + push(@vars_list, "virStorageVolPtr $1 = NULL"); + push(@ret_list, "make_nonnull_storage_vol(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virStorageVolFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_interface (\S+);/) { + push(@vars_list, "virInterfacePtr $1 = NULL"); + push(@ret_list, "make_nonnull_interface(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virInterfaceFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_node_device (\S+);/) { + push(@vars_list, "virNodeDevicePtr $1 = NULL"); + push(@ret_list, "make_nonnull_node_device(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virNodeDeviceFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_secret (\S+);/) { + push(@vars_list, "virSecretPtr $1 = NULL"); + push(@ret_list, "make_nonnull_secret(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virSecretFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_nwfilter (\S+);/) { + push(@vars_list, "virNWFilterPtr $1 = NULL"); + push(@ret_list, "make_nonnull_nwfilter(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virNWFilterFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/remote_nonnull_domain_snapshot (\S+);/) { + push(@vars_list, "virDomainSnapshotPtr $1 = NULL"); + push(@ret_list, "make_nonnull_domain_snapshot(&ret->$1, $1);"); + push(@free_list, + " if ($1)\n" . + " virDomainSnapshotFree($1);"); + $single_ret_var = $1; + $single_ret_by_ref = 0; + $single_ret_check = " == NULL"; } elsif ($ret_member =~ m/int (\S+);/) { push(@vars_list, "int $1"); push(@ret_list, "ret->$1 = $1;"); @@ -539,7 +590,8 @@ elsif ($opt_b) { push(@ret_list, "ret->$1 = $1;"); $single_ret_var = $1; - if ($calls{$_}->{ProcName} eq "DomainGetMaxMemory") { + if ($calls{$_}->{ProcName} eq "DomainGetMaxMemory" or + $calls{$_}->{ProcName} eq "NodeGetFreeMemory") { $single_ret_by_ref = 0; $single_ret_check = " == 0"; } else { @@ -578,7 +630,10 @@ elsif ($opt_b) { if (! @args_list) { push(@args_list, "conn"); - $prefix = "Connect" + + if ($calls{$_}->{ProcName} ne "NodeGetFreeMemory") { + $prefix = "Connect" + } } if ($calls{$_}->{ProcName} eq "GetSysinfo" or -- 1.7.0.4

--- daemon/remote.c | 130 ------------------------------------- daemon/remote_dispatch_bodies.c | 136 +++++++++++++++++++++++++++++++++++++- daemon/remote_generator.pl | 21 +++++-- 3 files changed, 148 insertions(+), 139 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 2b0e0dc..0c7173a 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -494,35 +494,6 @@ cleanup: } static int -remoteDispatchGetMaxVcpus(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_get_max_vcpus_args *args, - remote_get_max_vcpus_ret *ret) -{ - char *type; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - type = args->type ? *args->type : NULL; - if ((ret->max_vcpus = virConnectGetMaxVcpus(conn, type)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchNodeGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1358,46 +1329,6 @@ cleanup: } static int -remoteDispatchDomainMigratePerform(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_migrate_perform_args *args, - void *ret ATTRIBUTE_UNUSED) -{ - virDomainPtr dom = NULL; - char *dname; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - dname = args->dname == NULL ? NULL : *args->dname; - - if (virDomainMigratePerform(dom, - args->cookie.cookie_val, - args->cookie.cookie_len, - args->uri, - args->flags, dname, args->resource) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainMigratePrepare2(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3134,37 +3065,6 @@ cleanup: } static int -remoteDispatchFindStoragePoolSources(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_find_storage_pool_sources_args *args, - remote_find_storage_pool_sources_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(ret->xml = - virConnectFindStoragePoolSources(conn, - args->type, - args->srcSpec ? *args->srcSpec : NULL, - args->flags))) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchStoragePoolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3302,36 +3202,6 @@ cleanup: **************************************************************/ static int -remoteDispatchNodeNumOfDevices(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_num_of_devices_args *args, - remote_node_num_of_devices_ret *ret) -{ - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((ret->num = virNodeNumOfDevices(conn, - args->cap ? *args->cap : NULL, - args->flags)) < 0) - goto cleanup; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - -static int remoteDispatchNodeListDevices(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index bd7cddd..77b7db4 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -1016,7 +1016,42 @@ cleanup: return rv; } -/* remoteDispatchDomainMigratePerform has to be implemented manually */ +static int +remoteDispatchDomainMigratePerform( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_migrate_perform_args *args, + void *ret ATTRIBUTE_UNUSED) +{ + int rv = -1; + virDomainPtr dom = NULL; + char *dname; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + dname = args->dname ? *args->dname : NULL; + + if (virDomainMigratePerform(dom, args->cookie.cookie_val, args->cookie.cookie_len, args->uri, args->flags, dname, args->resource) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} /* remoteDispatchDomainMigratePrepare has to be implemented manually */ @@ -1906,7 +1941,38 @@ cleanup: return rv; } -/* remoteDispatchFindStoragePoolSources has to be implemented manually */ +static int +remoteDispatchFindStoragePoolSources( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_find_storage_pool_sources_args *args, + remote_find_storage_pool_sources_ret *ret) +{ + int rv = -1; + char *srcSpec; + char *xml; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + srcSpec = args->srcSpec ? *args->srcSpec : NULL; + + if ((xml = virConnectFindStoragePoolSources(conn, args->type, srcSpec, args->flags)) == NULL) + goto cleanup; + + ret->xml = xml; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} static int remoteDispatchGetCapabilities( @@ -1998,7 +2064,38 @@ cleanup: return rv; } -/* remoteDispatchGetMaxVcpus has to be implemented manually */ +static int +remoteDispatchGetMaxVcpus( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_get_max_vcpus_args *args, + remote_get_max_vcpus_ret *ret) +{ + int rv = -1; + char *type; + int max_vcpus; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + type = args->type ? *args->type : NULL; + + if ((max_vcpus = virConnectGetMaxVcpus(conn, type)) < 0) + goto cleanup; + + ret->max_vcpus = max_vcpus; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} static int remoteDispatchGetSysinfo( @@ -3170,7 +3267,38 @@ cleanup: /* remoteDispatchNodeListDevices has to be implemented manually */ -/* remoteDispatchNodeNumOfDevices has to be implemented manually */ +static int +remoteDispatchNodeNumOfDevices( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_num_of_devices_args *args, + remote_node_num_of_devices_ret *ret) +{ + int rv = -1; + char *cap; + int num; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + cap = args->cap ? *args->cap : NULL; + + if ((num = virNodeNumOfDevices(conn, cap, args->flags)) < 0) + goto cleanup; + + ret->num = num; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} static int remoteDispatchNumOfDefinedDomains( diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 1b83d52..b3cb9b5 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -241,7 +241,6 @@ elsif ($opt_b) { @ungeneratable = ("Close", "DomainEventsDeregisterAny", "DomainEventsRegisterAny", - "DomainMigratePerform", "DomainMigratePrepareTunnel", "DomainOpenConsole", "DomainPinVcpu", @@ -280,8 +279,6 @@ elsif ($opt_b) { "DomainMigratePrepare", "DomainMigratePrepare2", "DomainSnapshotListNames", - "FindStoragePoolSources", - "GetMaxVcpus", "GetType", "ListDefinedDomains", "ListDefinedInterfaces", @@ -299,7 +296,6 @@ elsif ($opt_b) { "NodeGetInfo", "NodeGetSecurityModel", "NodeListDevices", - "NodeNumOfDevices", "SecretGetValue", "StoragePoolGetInfo", "StoragePoolListVolumes", @@ -347,6 +343,7 @@ elsif ($opt_b) { my $has_node_device = 0; my @vars_list = (); + my @optionals_list = (); my @getters_list = (); my @args_list = (); my @ret_list = (); @@ -469,6 +466,10 @@ elsif ($opt_b) { if ($1 eq "remote_uuid") { push(@args_list, "(unsigned char *) args->$2"); + } elsif ($1 eq "remote_string") { + push(@vars_list, "char *$2"); + push(@optionals_list, "$2"); + push(@args_list, "$2"); } else { push(@args_list, "args->$2"); } @@ -618,6 +619,14 @@ elsif ($opt_b) { print "\n"; } + foreach my $optional (@optionals_list) { + print " $optional = args->$optional ? *args->$optional : NULL;\n"; + } + + if (@optionals_list) { + print "\n"; + } + if ($calls{$_}->{ret} eq "void") { print " if (vir$calls{$_}->{ProcName}("; print join(', ', @args_list); @@ -637,8 +646,10 @@ elsif ($opt_b) { } if ($calls{$_}->{ProcName} eq "GetSysinfo" or + $calls{$_}->{ProcName} eq "GetMaxVcpus" or $calls{$_}->{ProcName} eq "DomainXMLFromNative" or - $calls{$_}->{ProcName} eq "DomainXMLToNative") { + $calls{$_}->{ProcName} eq "DomainXMLToNative" or + $calls{$_}->{ProcName} eq "FindStoragePoolSources") { $prefix = "Connect" } elsif ($calls{$_}->{ProcName} eq "SupportsFeature") { $prefix = "Drv" -- 1.7.0.4

Avoids special case handling in the remote generator. --- daemon/remote.c | 8 ++++---- src/remote/remote_driver.c | 12 ++++++------ src/remote/remote_protocol.c | 2 +- src/remote/remote_protocol.h | 2 +- src/remote/remote_protocol.x | 2 +- src/remote_protocol-structs | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 0c7173a..f42e2db 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -3790,9 +3790,9 @@ remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUS goto cleanup; } - if (args->nameslen > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { + if (args->maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { virNetError(VIR_ERR_INTERNAL_ERROR, "%s", - _("nameslen > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX")); + _("maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX")); goto cleanup; } @@ -3800,14 +3800,14 @@ remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUS goto cleanup; /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->nameslen) < 0) { + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { virReportOOMError(); goto cleanup; } len = virDomainSnapshotListNames(dom, ret->names.names_val, - args->nameslen, + args->maxnames, args->flags); if (len < 0) goto cleanup; diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 9d6056b..935f321 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -9312,7 +9312,7 @@ done: static int remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, - int nameslen, unsigned int flags) + int maxnames, unsigned int flags) { int rv = -1; int i; @@ -9322,15 +9322,15 @@ remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, remoteDriverLock(priv); - if (nameslen > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { + if (maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { remoteError(VIR_ERR_RPC, _("too many remote domain snapshot names: %d > %d"), - nameslen, REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX); + maxnames, REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX); goto done; } make_nonnull_domain(&args.dom, domain); - args.nameslen = nameslen; + args.maxnames = maxnames; args.flags = flags; memset (&ret, 0, sizeof ret); @@ -9339,10 +9339,10 @@ remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, (xdrproc_t) xdr_remote_domain_snapshot_list_names_ret, (char *) &ret) == -1) goto done; - if (ret.names.names_len > nameslen) { + if (ret.names.names_len > maxnames) { remoteError(VIR_ERR_RPC, _("too many remote domain snapshots: %d > %d"), - ret.names.names_len, nameslen); + ret.names.names_len, maxnames); goto cleanup; } diff --git a/src/remote/remote_protocol.c b/src/remote/remote_protocol.c index e85f607..1bdd79e 100644 --- a/src/remote/remote_protocol.c +++ b/src/remote/remote_protocol.c @@ -3756,7 +3756,7 @@ xdr_remote_domain_snapshot_list_names_args (XDR *xdrs, remote_domain_snapshot_li if (!xdr_remote_nonnull_domain (xdrs, &objp->dom)) return FALSE; - if (!xdr_int (xdrs, &objp->nameslen)) + if (!xdr_int (xdrs, &objp->maxnames)) return FALSE; if (!xdr_int (xdrs, &objp->flags)) return FALSE; diff --git a/src/remote/remote_protocol.h b/src/remote/remote_protocol.h index 82d0981..ff6903c 100644 --- a/src/remote/remote_protocol.h +++ b/src/remote/remote_protocol.h @@ -2119,7 +2119,7 @@ typedef struct remote_domain_snapshot_num_ret remote_domain_snapshot_num_ret; struct remote_domain_snapshot_list_names_args { remote_nonnull_domain dom; - int nameslen; + int maxnames; int flags; }; typedef struct remote_domain_snapshot_list_names_args remote_domain_snapshot_list_names_args; diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index 0422c7b..0858096 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -1874,7 +1874,7 @@ struct remote_domain_snapshot_num_ret { struct remote_domain_snapshot_list_names_args { remote_nonnull_domain dom; - int nameslen; + int maxnames; int flags; }; diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index 73c7202..d433f6b 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -1371,7 +1371,7 @@ struct remote_domain_snapshot_num_ret { }; struct remote_domain_snapshot_list_names_args { remote_nonnull_domain dom; - int nameslen; + int maxnames; int flags; }; struct remote_domain_snapshot_list_names_ret { -- 1.7.0.4

--- daemon/remote.c | 701 --------------------------------------- daemon/remote_dispatch_bodies.c | 681 +++++++++++++++++++++++++++++++++++++- daemon/remote_generator.pl | 111 +++++- 3 files changed, 758 insertions(+), 735 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index f42e2db..4c05567 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -531,53 +531,6 @@ cleanup: } static int -remoteDispatchNodeGetCellsFreeMemory(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_get_cells_free_memory_args *args, - remote_node_get_cells_free_memory_ret *ret) -{ - int len; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxCells > REMOTE_NODE_MAX_CELLS) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxCells > REMOTE_NODE_MAX_CELLS")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->freeMems.freeMems_val, args->maxCells) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virNodeGetCellsFreeMemory(conn, - (unsigned long long *)ret->freeMems.freeMems_val, - args->startCell, - args->maxCells); - if (len <= 0) - goto cleanup; - ret->freeMems.freeMems_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->freeMems.freeMems_val); - } - return rv; -} - -static int remoteDispatchDomainGetSchedulerType(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1426,51 +1379,6 @@ cleanup: } static int -remoteDispatchListDefinedDomains(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_defined_domains_args *args, - remote_list_defined_domains_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_DOMAIN_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListDefinedDomains(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - -static int remoteDispatchDomainPinVcpu(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1942,233 +1850,6 @@ no_memory: goto cleanup; } -static int -remoteDispatchListDefinedNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_defined_networks_args *args, - remote_list_defined_networks_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListDefinedNetworks(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - -static int -remoteDispatchListDomains(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_domains_args *args, - remote_list_domains_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxids > REMOTE_DOMAIN_ID_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxids > REMOTE_DOMAIN_ID_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->ids.ids_val, args->maxids) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListDomains(conn, - ret->ids.ids_val, args->maxids); - if (len < 0) - goto cleanup; - ret->ids.ids_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->ids.ids_val); - } - return rv; -} - -static int -remoteDispatchListNetworks(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_networks_args *args, - remote_list_networks_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListNetworks(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - -/*-------------------------------------------------------------*/ - -static int -remoteDispatchListInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_interfaces_args *args, - remote_list_interfaces_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_INTERFACE_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_INTERFACE_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListInterfaces(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - -static int -remoteDispatchListDefinedInterfaces(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_defined_interfaces_args *args, - remote_list_defined_interfaces_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListDefinedInterfaces(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - /*-------------------------------------------------------------*/ static int @@ -2973,97 +2654,6 @@ remoteDispatchAuthPolkit(struct qemud_server *server ATTRIBUTE_UNUSED, * STORAGE POOL APIS ***************************************************************/ - -static int -remoteDispatchListDefinedStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_defined_storage_pools_args *args, - remote_list_defined_storage_pools_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", - _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListDefinedStoragePools(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - -static int -remoteDispatchListStoragePools(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_storage_pools_args *args, - remote_list_storage_pools_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListStoragePools(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - static int remoteDispatchStoragePoolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, @@ -3103,58 +2693,6 @@ cleanup: return rv; } -static int -remoteDispatchStoragePoolListVolumes(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_list_volumes_args *args, - remote_storage_pool_list_volumes_ret *ret) -{ - virStoragePoolPtr pool = NULL; - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virStoragePoolListVolumes(pool, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - if (pool) - virStoragePoolFree(pool); - return rv; -} - - /*************************************************************** * STORAGE VOL APIS ***************************************************************/ @@ -3202,52 +2740,6 @@ cleanup: **************************************************************/ static int -remoteDispatchNodeListDevices(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_list_devices_args *args, - remote_node_list_devices_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virNodeListDevices(conn, - args->cap ? *args->cap : NULL, - ret->names.names_val, args->maxnames, args->flags); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - -static int remoteDispatchNodeDeviceGetParent(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3297,57 +2789,6 @@ cleanup: return rv; } -static int -remoteDispatchNodeDeviceListCaps(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_node_device_list_caps_args *args, - remote_node_device_list_caps_ret *ret) -{ - virNodeDevicePtr dev = NULL; - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dev = virNodeDeviceLookupByName(conn, args->name))) - goto cleanup; - - if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virNodeDeviceListCaps(dev, ret->names.names_val, - args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - if (dev) - virNodeDeviceFree(dev); - return rv; -} - static int remoteDispatchStorageVolUpload(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client, virConnectPtr conn, @@ -3580,50 +3021,6 @@ cleanup: } static int -remoteDispatchListSecrets(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_secrets_args *args, - remote_list_secrets_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxuuids > REMOTE_SECRET_UUID_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", - _("maxuuids > REMOTE_SECRET_UUID_LIST_MAX")); - goto cleanup; - } - - if (VIR_ALLOC_N(ret->uuids.uuids_val, args->maxuuids) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListSecrets(conn, ret->uuids.uuids_val, - args->maxuuids); - if (len < 0) - goto cleanup; - ret->uuids.uuids_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->uuids.uuids_val); - } - return rv; -} - -static int remoteDispatchSecretGetValue(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3773,59 +3170,6 @@ cleanup: } static int -remoteDispatchDomainSnapshotListNames(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_snapshot_list_names_args *args, - remote_domain_snapshot_list_names_ret *ret) -{ - virDomainPtr dom = NULL; - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", - _("maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virDomainSnapshotListNames(dom, - ret->names.names_val, - args->maxnames, - args->flags); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainEventsRegisterAny(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3912,51 +3256,6 @@ cleanup: } static int -remoteDispatchListNWFilters(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_list_nwfilters_args *args, - remote_list_nwfilters_ret *ret) -{ - int rv = -1; - int len; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (args->maxnames > REMOTE_NWFILTER_NAME_LIST_MAX) { - virNetError(VIR_ERR_INTERNAL_ERROR, - "%s", _("maxnames > REMOTE_NWFILTER_NAME_LIST_MAX")); - goto cleanup; - } - - /* Allocate return buffer. */ - if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { - virReportOOMError(); - goto cleanup; - } - - len = virConnectListNWFilters(conn, - ret->names.names_val, args->maxnames); - if (len < 0) - goto cleanup; - ret->names.names_len = len; - - rv = 0; - -cleanup: - if (rv < 0) { - remoteDispatchError(rerr); - VIR_FREE(ret->names.names_val); - } - return rv; -} - -static int remoteDispatchDomainGetBlockInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index 77b7db4..d12988e 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -1703,7 +1703,55 @@ cleanup: return rv; } -/* remoteDispatchDomainSnapshotListNames has to be implemented manually */ +static int +remoteDispatchDomainSnapshotListNames( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_snapshot_list_names_args *args, + remote_domain_snapshot_list_names_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virDomainSnapshotListNames(dom, ret->names.names_val, args->maxnames, args->flags)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} static int remoteDispatchDomainSnapshotLookupByName( @@ -2489,25 +2537,445 @@ cleanup: return rv; } -/* remoteDispatchListDefinedDomains has to be implemented manually */ +static int +remoteDispatchListDefinedDomains( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_defined_domains_args *args, + remote_list_defined_domains_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_DOMAIN_NAME_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListDefinedDomains(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} + +static int +remoteDispatchListDefinedInterfaces( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_defined_interfaces_args *args, + remote_list_defined_interfaces_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListDefinedInterfaces(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} + +static int +remoteDispatchListDefinedNetworks( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_defined_networks_args *args, + remote_list_defined_networks_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListDefinedNetworks(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} + +static int +remoteDispatchListDefinedStoragePools( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_defined_storage_pools_args *args, + remote_list_defined_storage_pools_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListDefinedStoragePools(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} + +static int +remoteDispatchListDomains( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_domains_args *args, + remote_list_domains_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxids > REMOTE_DOMAIN_ID_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxids > REMOTE_DOMAIN_ID_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->ids.ids_val, args->maxids) < 0) { + virReportOOMError(); + goto cleanup; + } -/* remoteDispatchListDefinedInterfaces has to be implemented manually */ + if ((len = virConnectListDomains(conn, ret->ids.ids_val, args->maxids)) < 0) + goto cleanup; -/* remoteDispatchListDefinedNetworks has to be implemented manually */ + ret->ids.ids_len = len; + rv = 0; -/* remoteDispatchListDefinedStoragePools has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->ids.ids_val); + return rv; +} -/* remoteDispatchListDomains has to be implemented manually */ +static int +remoteDispatchListInterfaces( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_interfaces_args *args, + remote_list_interfaces_ret *ret) +{ + int rv = -1; + int len; -/* remoteDispatchListInterfaces has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchListNetworks has to be implemented manually */ + if (args->maxnames > REMOTE_INTERFACE_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_INTERFACE_NAME_LIST_MAX")); + goto cleanup; + } -/* remoteDispatchListNWFilters has to be implemented manually */ + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } -/* remoteDispatchListSecrets has to be implemented manually */ + if ((len = virConnectListInterfaces(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; -/* remoteDispatchListStoragePools has to be implemented manually */ + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} + +static int +remoteDispatchListNetworks( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_networks_args *args, + remote_list_networks_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_NETWORK_NAME_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListNetworks(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} + +static int +remoteDispatchListNWFilters( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_nwfilters_args *args, + remote_list_nwfilters_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_NWFILTER_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_NWFILTER_NAME_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListNWFilters(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} + +static int +remoteDispatchListSecrets( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_secrets_args *args, + remote_list_secrets_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxuuids > REMOTE_SECRET_UUID_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxuuids > REMOTE_SECRET_UUID_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->uuids.uuids_val, args->maxuuids) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListSecrets(conn, ret->uuids.uuids_val, args->maxuuids)) < 0) + goto cleanup; + + ret->uuids.uuids_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->uuids.uuids_val); + return rv; +} + +static int +remoteDispatchListStoragePools( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_list_storage_pools_args *args, + remote_list_storage_pools_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virConnectListStoragePools(conn, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} static int remoteDispatchNetworkCreate( @@ -3091,7 +3559,55 @@ cleanup: /* remoteDispatchNodeDeviceGetParent has to be implemented manually */ -/* remoteDispatchNodeDeviceListCaps has to be implemented manually */ +static int +remoteDispatchNodeDeviceListCaps( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_device_list_caps_args *args, + remote_node_device_list_caps_ret *ret) +{ + int rv = -1; + virNodeDevicePtr dev = NULL; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_NODE_DEVICE_CAPS_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_NODE_DEVICE_CAPS_LIST_MAX")); + goto cleanup; + } + + if (!(dev = virNodeDeviceLookupByName(conn, args->name))) + goto cleanup; + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virNodeDeviceListCaps(dev, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dev) + virNodeDeviceFree(dev); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} static int remoteDispatchNodeDeviceLookupByName( @@ -3229,7 +3745,49 @@ cleanup: return rv; } -/* remoteDispatchNodeGetCellsFreeMemory has to be implemented manually */ +static int +remoteDispatchNodeGetCellsFreeMemory( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_get_cells_free_memory_args *args, + remote_node_get_cells_free_memory_ret *ret) +{ + int rv = -1; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxCells > REMOTE_NODE_MAX_CELLS) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxfreeMems > REMOTE_NODE_MAX_CELLS")); + goto cleanup; + } + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->freeMems.freeMems_val, args->maxCells) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virNodeGetCellsFreeMemory(conn, (unsigned long long *)ret->freeMems.freeMems_val, args->startCell, args->maxCells)) <= 0) + goto cleanup; + + ret->freeMems.freeMems_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->freeMems.freeMems_val); + return rv; +} static int remoteDispatchNodeGetFreeMemory( @@ -3265,7 +3823,52 @@ cleanup: /* remoteDispatchNodeGetSecurityModel has to be implemented manually */ -/* remoteDispatchNodeListDevices has to be implemented manually */ +static int +remoteDispatchNodeListDevices( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_node_list_devices_args *args, + remote_node_list_devices_ret *ret) +{ + int rv = -1; + char *cap; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX")); + goto cleanup; + } + + cap = args->cap ? *args->cap : NULL; + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virNodeListDevices(conn, cap, ret->names.names_val, args->maxnames, args->flags)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} static int remoteDispatchNodeNumOfDevices( @@ -4316,7 +4919,55 @@ cleanup: return rv; } -/* remoteDispatchStoragePoolListVolumes has to be implemented manually */ +static int +remoteDispatchStoragePoolListVolumes( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_list_volumes_args *args, + remote_storage_pool_list_volumes_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + int len; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (args->maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) { + virNetError(VIR_ERR_INTERNAL_ERROR, + "%s", _("maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + /* Allocate return buffer. */ + if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) { + virReportOOMError(); + goto cleanup; + } + + if ((len = virStoragePoolListVolumes(pool, ret->names.names_val, args->maxnames)) < 0) + goto cleanup; + + ret->names.names_len = len; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + if (rv < 0) + VIR_FREE(ret->names.names_val); + return rv; +} static int remoteDispatchStoragePoolLookupByName( diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index b3cb9b5..e9a60bc 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -278,27 +278,12 @@ elsif ($opt_b) { "DomainMemoryStats", "DomainMigratePrepare", "DomainMigratePrepare2", - "DomainSnapshotListNames", "GetType", - "ListDefinedDomains", - "ListDefinedInterfaces", - "ListDefinedNetworks", - "ListDefinedStoragePools", - "ListDomains", - "ListInterfaces", - "ListNetworks", - "ListNWFilters", - "ListSecrets", - "ListStoragePools", "NodeDeviceGetParent", - "NodeDeviceListCaps", - "NodeGetCellsFreeMemory", "NodeGetInfo", "NodeGetSecurityModel", - "NodeListDevices", "SecretGetValue", "StoragePoolGetInfo", - "StoragePoolListVolumes", "StorageVolGetInfo"); } elsif ($structprefix eq "qemu") { @ungeneratable = ("MonitorCommand"); @@ -480,12 +465,38 @@ elsif ($opt_b) { my $single_ret_var = "undefined"; my $single_ret_by_ref = 0; my $single_ret_check = " == undefined"; + my $single_ret_as_list = 0; + my $single_ret_list_name = "undefined"; + my $single_ret_list_max_var = "undefined"; + my $single_ret_list_max_define = "undefined"; if ($calls{$_}->{ret} ne "void") { foreach my $ret_member (@{$calls{$_}->{ret_members}}) { - if ($ret_member =~ m/(\S+)<\S+>;/) { - push(@ret_list, "ret->$1.$1_val"); - push(@ret_list, "ret->$1.$1_len"); + if ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) { + push(@vars_list, "int len"); + push(@ret_list, "ret->$1.$1_len = len;"); + push(@free_list, + " if (rv < 0)\n" . + " VIR_FREE(ret->$1.$1_val);"); + $single_ret_var = "len"; + $single_ret_by_ref = 0; + $single_ret_check = " < 0"; + $single_ret_as_list = 1; + $single_ret_list_name = $1; + $single_ret_list_max_var = "max$1"; + $single_ret_list_max_define = $2; + + if ($calls{$_}->{ProcName} eq "NodeListDevices") { + my $conn = shift(@args_list); + my $cap = shift(@args_list); + unshift(@args_list, "ret->$1.$1_val"); + unshift(@args_list, $cap); + unshift(@args_list, $conn); + } else { + my $conn = shift(@args_list); + unshift(@args_list, "ret->$1.$1_val"); + unshift(@args_list, $conn); + } } elsif ($ret_member =~ m/remote_nonnull_string (\S+);/) { push(@vars_list, "char *$1"); push(@ret_list, "ret->$1 = $1;"); @@ -573,6 +584,23 @@ elsif ($opt_b) { $single_ret_var = $1; $single_ret_by_ref = 0; $single_ret_check = " == NULL"; + } elsif ($ret_member =~ m/int (\S+)<(\S+)>;/) { + push(@vars_list, "int len"); + push(@ret_list, "ret->$1.$1_len = len;"); + push(@free_list, + " if (rv < 0)\n" . + " VIR_FREE(ret->$1.$1_val);"); + $single_ret_var = "len"; + $single_ret_by_ref = 0; + $single_ret_check = " < 0"; + $single_ret_as_list = 1; + $single_ret_list_name = $1; + $single_ret_list_max_var = "max$1"; + $single_ret_list_max_define = $2; + + my $conn = shift(@args_list); + unshift(@args_list, "ret->$1.$1_val"); + unshift(@args_list, $conn); } elsif ($ret_member =~ m/int (\S+);/) { push(@vars_list, "int $1"); push(@ret_list, "ret->$1 = $1;"); @@ -586,6 +614,31 @@ elsif ($opt_b) { $single_ret_by_ref = 0; $single_ret_check = " < 0"; } + } elsif ($ret_member =~ m/hyper (\S+)<(\S+)>;/) { + push(@vars_list, "int len"); + push(@ret_list, "ret->$1.$1_len = len;"); + push(@free_list, + " if (rv < 0)\n" . + " VIR_FREE(ret->$1.$1_val);"); + $single_ret_var = "len"; + $single_ret_by_ref = 0; + $single_ret_as_list = 1; + $single_ret_list_name = $1; + $single_ret_list_max_define = $2; + + my $conn = shift(@args_list); + + if ($calls{$_}->{ProcName} eq "NodeGetCellsFreeMemory") { + $single_ret_check = " <= 0"; + $single_ret_list_max_var = "maxCells"; + unshift(@args_list, "(unsigned long long *)ret->$1.$1_val"); + } else { + $single_ret_check = " < 0"; + $single_ret_list_max_var = "max$1"; + unshift(@args_list, "ret->$1.$1_val"); + } + + unshift(@args_list, $conn); } elsif ($ret_member =~ m/hyper (\S+);/) { push(@vars_list, "unsigned long $1"); push(@ret_list, "ret->$1 = $1;"); @@ -613,6 +666,15 @@ elsif ($opt_b) { print " }\n"; print "\n"; + if ($single_ret_as_list) { + print " if (args->$single_ret_list_max_var > $single_ret_list_max_define) {\n"; + print " virNetError(VIR_ERR_INTERNAL_ERROR,\n"; + print " \"%s\", _(\"max$single_ret_list_name > $single_ret_list_max_define\"));\n"; + print " goto cleanup;\n"; + print " }\n"; + print "\n"; + } + print join("\n", @getters_list); if (@getters_list) { @@ -649,7 +711,8 @@ elsif ($opt_b) { $calls{$_}->{ProcName} eq "GetMaxVcpus" or $calls{$_}->{ProcName} eq "DomainXMLFromNative" or $calls{$_}->{ProcName} eq "DomainXMLToNative" or - $calls{$_}->{ProcName} eq "FindStoragePoolSources") { + $calls{$_}->{ProcName} eq "FindStoragePoolSources" or + $calls{$_}->{ProcName} =~ m/^List/) { $prefix = "Connect" } elsif ($calls{$_}->{ProcName} eq "SupportsFeature") { $prefix = "Drv" @@ -669,6 +732,16 @@ elsif ($opt_b) { $proc_name = "DomainGetOSType" } + if ($single_ret_as_list) { + print " /* Allocate return buffer. */\n"; + print " if (VIR_ALLOC_N(ret->$single_ret_list_name.${single_ret_list_name}_val," . + " args->$single_ret_list_max_var) < 0) {\n"; + print " virReportOOMError();\n"; + print " goto cleanup;\n"; + print " }\n"; + print "\n"; + } + if ($single_ret_by_ref) { print " if (vir$prefix$proc_name("; print join(', ', @args_list); -- 1.7.0.4

--- daemon/remote_generator.pl | 168 +++++--------------------------------------- 1 files changed, 18 insertions(+), 150 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index e9a60bc..585cf67 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -354,69 +354,17 @@ elsif ($opt_b) { if ($args_member =~ m/^remote_nonnull_string name;/ and $has_node_device) { # ignore the name arg for node devices next - } elsif ($args_member =~ m/^remote_nonnull_domain (\S+);/) { - push(@vars_list, "virDomainPtr $1 = NULL"); - push(@getters_list, - " if (!($1 = get_nonnull_domain(conn, args->$1)))\n" . - " goto cleanup;\n"); - push(@args_list, "$1"); - push(@free_list, - " if ($1)\n" . - " virDomainFree($1);"); - } elsif ($args_member =~ m/^remote_nonnull_network (\S+);/) { - push(@vars_list, "virNetworkPtr $1 = NULL"); - push(@getters_list, - " if (!($1 = get_nonnull_network(conn, args->$1)))\n" . - " goto cleanup;\n"); - push(@args_list, "$1"); - push(@free_list, - " if ($1)\n" . - " virNetworkFree($1);"); - } elsif ($args_member =~ m/^remote_nonnull_storage_pool (\S+);/) { - push(@vars_list, "virStoragePoolPtr $1 = NULL"); - push(@getters_list, - " if (!($1 = get_nonnull_storage_pool(conn, args->$1)))\n" . - " goto cleanup;\n"); - push(@args_list, "$1"); - push(@free_list, - " if ($1)\n" . - " virStoragePoolFree($1);"); - } elsif ($args_member =~ m/^remote_nonnull_storage_vol (\S+);/) { - push(@vars_list, "virStorageVolPtr $1 = NULL"); - push(@getters_list, - " if (!($1 = get_nonnull_storage_vol(conn, args->$1)))\n" . - " goto cleanup;\n"); - push(@args_list, "$1"); - push(@free_list, - " if ($1)\n" . - " virStorageVolFree($1);"); - } elsif ($args_member =~ m/^remote_nonnull_interface (\S+);/) { - push(@vars_list, "virInterfacePtr $1 = NULL"); - push(@getters_list, - " if (!($1 = get_nonnull_interface(conn, args->$1)))\n" . - " goto cleanup;\n"); - push(@args_list, "$1"); - push(@free_list, - " if ($1)\n" . - " virInterfaceFree($1);"); - } elsif ($args_member =~ m/^remote_nonnull_secret (\S+);/) { - push(@vars_list, "virSecretPtr $1 = NULL"); - push(@getters_list, - " if (!($1 = get_nonnull_secret(conn, args->$1)))\n" . - " goto cleanup;\n"); - push(@args_list, "$1"); - push(@free_list, - " if ($1)\n" . - " virSecretFree($1);"); - } elsif ($args_member =~ m/^remote_nonnull_nwfilter (\S+);/) { - push(@vars_list, "virNWFilterPtr $1 = NULL"); + } elsif ($args_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|interface|secret|nwfilter) (\S+);/) { + my $type_name = name_to_ProcName($1); + + push(@vars_list, "vir${type_name}Ptr $2 = NULL"); push(@getters_list, - " if (!($1 = get_nonnull_nwfilter(conn, args->$1)))\n" . + " if (!($2 = get_nonnull_$1(conn, args->$2)))\n" . " goto cleanup;\n"); - push(@args_list, "$1"); + push(@args_list, "$2"); push(@free_list, - " if ($1)\n" . - " virNWFilterFree($1);"); + " if ($2)\n" . + " vir${type_name}Free($2);"); } elsif ($args_member =~ m/^remote_nonnull_domain_snapshot /) { push(@vars_list, "virDomainPtr dom = NULL"); push(@vars_list, "virDomainSnapshotPtr snapshot = NULL"); @@ -503,85 +451,15 @@ elsif ($opt_b) { $single_ret_var = $1; $single_ret_by_ref = 0; $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_domain (\S+);/) { - push(@vars_list, "virDomainPtr $1 = NULL"); - push(@ret_list, "make_nonnull_domain(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virDomainFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_network (\S+);/) { - push(@vars_list, "virNetworkPtr $1 = NULL"); - push(@ret_list, "make_nonnull_network(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virNetworkFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_storage_pool (\S+);/) { - push(@vars_list, "virStoragePoolPtr $1 = NULL"); - push(@ret_list, "make_nonnull_storage_pool(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virStoragePoolFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_storage_vol (\S+);/) { - push(@vars_list, "virStorageVolPtr $1 = NULL"); - push(@ret_list, "make_nonnull_storage_vol(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virStorageVolFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_interface (\S+);/) { - push(@vars_list, "virInterfacePtr $1 = NULL"); - push(@ret_list, "make_nonnull_interface(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virInterfaceFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_node_device (\S+);/) { - push(@vars_list, "virNodeDevicePtr $1 = NULL"); - push(@ret_list, "make_nonnull_node_device(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virNodeDeviceFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_secret (\S+);/) { - push(@vars_list, "virSecretPtr $1 = NULL"); - push(@ret_list, "make_nonnull_secret(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virSecretFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_nwfilter (\S+);/) { - push(@vars_list, "virNWFilterPtr $1 = NULL"); - push(@ret_list, "make_nonnull_nwfilter(&ret->$1, $1);"); - push(@free_list, - " if ($1)\n" . - " virNWFilterFree($1);"); - $single_ret_var = $1; - $single_ret_by_ref = 0; - $single_ret_check = " == NULL"; - } elsif ($ret_member =~ m/remote_nonnull_domain_snapshot (\S+);/) { - push(@vars_list, "virDomainSnapshotPtr $1 = NULL"); - push(@ret_list, "make_nonnull_domain_snapshot(&ret->$1, $1);"); + } elsif ($ret_member =~ m/remote_nonnull_(domain|network|storage_pool|storage_vol|interface|node_device|secret|nwfilter|domain_snapshot) (\S+);/) { + my $type_name = name_to_ProcName($1); + + push(@vars_list, "vir${type_name}Ptr $2 = NULL"); + push(@ret_list, "make_nonnull_$1(&ret->$2, $2);"); push(@free_list, - " if ($1)\n" . - " virDomainSnapshotFree($1);"); - $single_ret_var = $1; + " if ($2)\n" . + " vir${type_name}Free($2);"); + $single_ret_var = $2; $single_ret_by_ref = 0; $single_ret_check = " == NULL"; } elsif ($ret_member =~ m/int (\S+)<(\S+)>;/) { @@ -716,18 +594,8 @@ elsif ($opt_b) { $prefix = "Connect" } elsif ($calls{$_}->{ProcName} eq "SupportsFeature") { $prefix = "Drv" - } elsif ($calls{$_}->{ProcName} eq "DomainDumpXML") { - $proc_name = "DomainGetXMLDesc" - } elsif ($calls{$_}->{ProcName} eq "NetworkDumpXML") { - $proc_name = "NetworkGetXMLDesc" - } elsif ($calls{$_}->{ProcName} eq "StoragePoolDumpXML") { - $proc_name = "StoragePoolGetXMLDesc" - } elsif ($calls{$_}->{ProcName} eq "StorageVolDumpXML") { - $proc_name = "StorageVolGetXMLDesc" - } elsif ($calls{$_}->{ProcName} eq "NodeDeviceDumpXML") { - $proc_name = "NodeDeviceGetXMLDesc" - } elsif ($calls{$_}->{ProcName} eq "DomainSnapshotDumpXML") { - $proc_name = "DomainSnapshotGetXMLDesc" + } elsif ($calls{$_}->{ProcName} =~ m/^(\S+)DumpXML$/) { + $proc_name = "${1}GetXMLDesc" } elsif ($calls{$_}->{ProcName} eq "DomainGetOsType") { $proc_name = "DomainGetOSType" } -- 1.7.0.4

They require additional special cases. --- daemon/remote.c | 64 ----------------------------------- daemon/remote_dispatch_bodies.c | 62 ++++++++++++++++++++++++++++++++-- daemon/remote_dispatch_prototypes.h | 6 ++-- daemon/remote_dispatch_table.h | 12 +++--- daemon/remote_generator.pl | 20 ++++++++--- 5 files changed, 82 insertions(+), 82 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 4c05567..f70c445 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -3059,70 +3059,6 @@ cleanup: } static int -remoteDispatchCpuCompare(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_cpu_compare_args *args, - remote_cpu_compare_ret *ret) -{ - int result; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if ((result = virConnectCompareCPU(conn, args->xml, args->flags)) == VIR_CPU_COMPARE_ERROR) - goto cleanup; - - ret->result = result; - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - -static int -remoteDispatchCpuBaseline(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_cpu_baseline_args *args, - remote_cpu_baseline_ret *ret) -{ - char *cpu; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(cpu = virConnectBaselineCPU(conn, - (const char **) args->xmlCPUs.xmlCPUs_val, - args->xmlCPUs.xmlCPUs_len, - args->flags))) - goto cleanup; - - ret->cpu = cpu; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - - -static int remoteDispatchDomainGetJobInfo(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index d12988e..89f0bc4 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -14,9 +14,65 @@ /* remoteDispatchClose has to be implemented manually */ -/* remoteDispatchCpuBaseline has to be implemented manually */ +static int +remoteDispatchCPUBaseline( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_cpu_baseline_args *args, + remote_cpu_baseline_ret *ret) +{ + int rv = -1; + char *cpu; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((cpu = virConnectBaselineCPU(conn, (const char **)args->xmlCPUs.xmlCPUs_val, args->xmlCPUs.xmlCPUs_len, args->flags)) == NULL) + goto cleanup; + + ret->cpu = cpu; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} + +static int +remoteDispatchCPUCompare( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_cpu_compare_args *args, + remote_cpu_compare_ret *ret) +{ + int rv = -1; + int result; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if ((result = virConnectCompareCPU(conn, args->xml, args->flags)) == VIR_CPU_COMPARE_ERROR) + goto cleanup; + + ret->result = result; + rv = 0; -/* remoteDispatchCpuCompare has to be implemented manually */ +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} static int remoteDispatchDomainAbortJob( @@ -523,7 +579,7 @@ cleanup: /* remoteDispatchDomainGetMemoryParameters has to be implemented manually */ static int -remoteDispatchDomainGetOsType( +remoteDispatchDomainGetOSType( struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, diff --git a/daemon/remote_dispatch_prototypes.h b/daemon/remote_dispatch_prototypes.h index 1e3be48..b6819c0 100644 --- a/daemon/remote_dispatch_prototypes.h +++ b/daemon/remote_dispatch_prototypes.h @@ -50,7 +50,7 @@ static int remoteDispatchClose( remote_error *rerr, void *args, void *ret); -static int remoteDispatchCpuBaseline( +static int remoteDispatchCPUBaseline( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -58,7 +58,7 @@ static int remoteDispatchCpuBaseline( remote_error *rerr, remote_cpu_baseline_args *args, remote_cpu_baseline_ret *ret); -static int remoteDispatchCpuCompare( +static int remoteDispatchCPUCompare( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, @@ -274,7 +274,7 @@ static int remoteDispatchDomainGetMemoryParameters( remote_error *rerr, remote_domain_get_memory_parameters_args *args, remote_domain_get_memory_parameters_ret *ret); -static int remoteDispatchDomainGetOsType( +static int remoteDispatchDomainGetOSType( struct qemud_server *server, struct qemud_client *client, virConnectPtr conn, diff --git a/daemon/remote_dispatch_table.h b/daemon/remote_dispatch_table.h index 357d1de..c140341 100644 --- a/daemon/remote_dispatch_table.h +++ b/daemon/remote_dispatch_table.h @@ -97,8 +97,8 @@ .args_filter = (xdrproc_t) xdr_remote_domain_get_max_vcpus_args, .ret_filter = (xdrproc_t) xdr_remote_domain_get_max_vcpus_ret, }, -{ /* DomainGetOsType => 19 */ - .fn = (dispatch_fn) remoteDispatchDomainGetOsType, +{ /* DomainGetOSType => 19 */ + .fn = (dispatch_fn) remoteDispatchDomainGetOSType, .args_filter = (xdrproc_t) xdr_remote_domain_get_os_type_args, .ret_filter = (xdrproc_t) xdr_remote_domain_get_os_type_ret, }, @@ -792,8 +792,8 @@ .args_filter = (xdrproc_t) xdr_void, .ret_filter = (xdrproc_t) xdr_remote_get_lib_version_ret, }, -{ /* CpuCompare => 158 */ - .fn = (dispatch_fn) remoteDispatchCpuCompare, +{ /* CPUCompare => 158 */ + .fn = (dispatch_fn) remoteDispatchCPUCompare, .args_filter = (xdrproc_t) xdr_remote_cpu_compare_args, .ret_filter = (xdrproc_t) xdr_remote_cpu_compare_ret, }, @@ -812,8 +812,8 @@ .args_filter = (xdrproc_t) xdr_remote_domain_detach_device_flags_args, .ret_filter = (xdrproc_t) xdr_void, }, -{ /* CpuBaseline => 162 */ - .fn = (dispatch_fn) remoteDispatchCpuBaseline, +{ /* CPUBaseline => 162 */ + .fn = (dispatch_fn) remoteDispatchCPUBaseline, .args_filter = (xdrproc_t) xdr_remote_cpu_baseline_args, .ret_filter = (xdrproc_t) xdr_remote_cpu_baseline_ret, }, diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 585cf67..2ddfdc0 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -34,7 +34,8 @@ sub name_to_ProcName { @elems = map ucfirst, @elems; @elems = map { $_ =~ s/Nwfilter/NWFilter/; $_ =~ s/Xml/XML/; $_ =~ s/Uri/URI/; $_ =~ s/Uuid/UUID/; $_ =~ s/Id/ID/; - $_ =~ s/Mac/MAC/; $_ } @elems; + $_ =~ s/Mac/MAC/; $_ =~ s/Cpu/CPU/; $_ =~ s/Os/OS/; + $_ } @elems; join "", @elems } @@ -257,8 +258,6 @@ elsif ($opt_b) { "AuthSaslStep", "AuthPolkit", - "CpuBaseline", - "CpuCompare", "DomainBlockPeek", "DomainBlockStats", "DomainCreateWithFlags", @@ -387,6 +386,8 @@ elsif ($opt_b) { if ($calls{$_}->{ProcName} eq "SecretSetValue") { push(@args_list, "(const unsigned char *)args->$1.$1_val"); + } elsif ($calls{$_}->{ProcName} eq "CPUBaseline") { + push(@args_list, "(const char **)args->$1.$1_val"); } else { push(@args_list, "args->$1.$1_val"); } @@ -490,7 +491,12 @@ elsif ($opt_b) { $single_ret_by_ref = 1; } else { $single_ret_by_ref = 0; - $single_ret_check = " < 0"; + + if ($calls{$_}->{ProcName} eq "CPUCompare") { + $single_ret_check = " == VIR_CPU_COMPARE_ERROR"; + } else { + $single_ret_check = " < 0"; + } } } elsif ($ret_member =~ m/hyper (\S+)<(\S+)>;/) { push(@vars_list, "int len"); @@ -596,8 +602,10 @@ elsif ($opt_b) { $prefix = "Drv" } elsif ($calls{$_}->{ProcName} =~ m/^(\S+)DumpXML$/) { $proc_name = "${1}GetXMLDesc" - } elsif ($calls{$_}->{ProcName} eq "DomainGetOsType") { - $proc_name = "DomainGetOSType" + } elsif ($calls{$_}->{ProcName} eq "CPUBaseline") { + $proc_name = "ConnectBaselineCPU" + } elsif ($calls{$_}->{ProcName} eq "CPUCompare") { + $proc_name = "ConnectCompareCPU" } if ($single_ret_as_list) { -- 1.7.0.4

--- daemon/remote_dispatch_bodies.c | 66 +++++++++++++++++++------------------- daemon/remote_generator.pl | 28 ++++++++++------ 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index 89f0bc4..50432f9 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -1800,12 +1800,12 @@ remoteDispatchDomainSnapshotListNames( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); + VIR_FREE(ret->names.names_val); + } if (dom) virDomainFree(dom); - if (rv < 0) - VIR_FREE(ret->names.names_val); return rv; } @@ -2630,10 +2630,10 @@ remoteDispatchListDefinedDomains( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -2674,10 +2674,10 @@ remoteDispatchListDefinedInterfaces( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -2718,10 +2718,10 @@ remoteDispatchListDefinedNetworks( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -2762,10 +2762,10 @@ remoteDispatchListDefinedStoragePools( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -2806,10 +2806,10 @@ remoteDispatchListDomains( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->ids.ids_val); + } return rv; } @@ -2850,10 +2850,10 @@ remoteDispatchListInterfaces( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -2894,10 +2894,10 @@ remoteDispatchListNetworks( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -2938,10 +2938,10 @@ remoteDispatchListNWFilters( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -2982,10 +2982,10 @@ remoteDispatchListSecrets( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->uuids.uuids_val); + } return rv; } @@ -3026,10 +3026,10 @@ remoteDispatchListStoragePools( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -3656,12 +3656,12 @@ remoteDispatchNodeDeviceListCaps( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); + VIR_FREE(ret->names.names_val); + } if (dev) virNodeDeviceFree(dev); - if (rv < 0) - VIR_FREE(ret->names.names_val); return rv; } @@ -3838,10 +3838,10 @@ remoteDispatchNodeGetCellsFreeMemory( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->freeMems.freeMems_val); + } return rv; } @@ -3919,10 +3919,10 @@ remoteDispatchNodeListDevices( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); - if (rv < 0) VIR_FREE(ret->names.names_val); + } return rv; } @@ -5016,12 +5016,12 @@ remoteDispatchStoragePoolListVolumes( rv = 0; cleanup: - if (rv < 0) + if (rv < 0) { remoteDispatchError(rerr); + VIR_FREE(ret->names.names_val); + } if (pool) virStoragePoolFree(pool); - if (rv < 0) - VIR_FREE(ret->names.names_val); return rv; } diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 2ddfdc0..1fd4627 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -332,6 +332,7 @@ elsif ($opt_b) { my @args_list = (); my @ret_list = (); my @free_list = (); + my @free_list_on_error = ("remoteDispatchError(rerr);"); if ($calls{$_}->{args} ne "void") { # node device is special, as it's identified by name @@ -424,9 +425,7 @@ elsif ($opt_b) { if ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) { push(@vars_list, "int len"); push(@ret_list, "ret->$1.$1_len = len;"); - push(@free_list, - " if (rv < 0)\n" . - " VIR_FREE(ret->$1.$1_val);"); + push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);"); $single_ret_var = "len"; $single_ret_by_ref = 0; $single_ret_check = " < 0"; @@ -466,9 +465,7 @@ elsif ($opt_b) { } elsif ($ret_member =~ m/int (\S+)<(\S+)>;/) { push(@vars_list, "int len"); push(@ret_list, "ret->$1.$1_len = len;"); - push(@free_list, - " if (rv < 0)\n" . - " VIR_FREE(ret->$1.$1_val);"); + push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);"); $single_ret_var = "len"; $single_ret_by_ref = 0; $single_ret_check = " < 0"; @@ -501,9 +498,7 @@ elsif ($opt_b) { } elsif ($ret_member =~ m/hyper (\S+)<(\S+)>;/) { push(@vars_list, "int len"); push(@ret_list, "ret->$1.$1_len = len;"); - push(@free_list, - " if (rv < 0)\n" . - " VIR_FREE(ret->$1.$1_val);"); + push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);"); $single_ret_var = "len"; $single_ret_by_ref = 0; $single_ret_as_list = 1; @@ -642,8 +637,19 @@ elsif ($opt_b) { print " rv = 0;\n"; print "\n"; print "cleanup:\n"; - print " if (rv < 0)\n"; - print " remoteDispatchError(rerr);\n"; + print " if (rv < 0)"; + + if (scalar(@free_list_on_error) > 1) { + print " {"; + } + + print "\n "; + print join("\n ", @free_list_on_error); + print "\n"; + + if (scalar(@free_list_on_error) > 1) { + print " }\n"; + } print join("\n", @free_list); -- 1.7.0.4

Once again rename members in the XDR definitions to avoid special case code in the generator. --- daemon/remote.c | 334 --------------------------------------- daemon/remote_dispatch_bodies.c | 322 ++++++++++++++++++++++++++++++++++++- daemon/remote_generator.pl | 80 ++++++++-- src/remote/remote_driver.c | 6 +- src/remote/remote_protocol.c | 6 +- src/remote/remote_protocol.h | 6 +- src/remote/remote_protocol.x | 6 +- src/remote_protocol-structs | 6 +- 8 files changed, 397 insertions(+), 369 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index f70c445..e0fb1f8 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -494,43 +494,6 @@ cleanup: } static int -remoteDispatchNodeGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - void *args ATTRIBUTE_UNUSED, - remote_node_get_info_ret *ret) -{ - virNodeInfo info; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (virNodeGetInfo(conn, &info) < 0) - goto cleanup; - - memcpy(ret->model, info.model, sizeof ret->model); - ret->memory = info.memory; - ret->cpus = info.cpus; - ret->mhz = info.mhz; - ret->nodes = info.nodes; - ret->sockets = info.sockets; - ret->cores = info.cores; - ret->threads = info.threads; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - return rv; -} - -static int remoteDispatchDomainGetSchedulerType(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -722,93 +685,6 @@ cleanup: } static int -remoteDispatchDomainBlockStats(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_block_stats_args *args, - remote_domain_block_stats_ret *ret) -{ - virDomainPtr dom = NULL; - char *path; - struct _virDomainBlockStats stats; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - path = args->path; - - if (virDomainBlockStats(dom, path, &stats, sizeof stats) < 0) - goto cleanup; - - ret->rd_req = stats.rd_req; - ret->rd_bytes = stats.rd_bytes; - ret->wr_req = stats.wr_req; - ret->wr_bytes = stats.wr_bytes; - ret->errs = stats.errs; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int -remoteDispatchDomainInterfaceStats(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_interface_stats_args *args, - remote_domain_interface_stats_ret *ret) -{ - virDomainPtr dom = NULL; - char *path; - struct _virDomainInterfaceStats stats; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - path = args->path; - - if (virDomainInterfaceStats(dom, path, &stats, sizeof stats) < 0) - goto cleanup; - - ret->rx_bytes = stats.rx_bytes; - ret->rx_packets = stats.rx_packets; - ret->rx_errs = stats.rx_errs; - ret->rx_drop = stats.rx_drop; - ret->tx_bytes = stats.tx_bytes; - ret->tx_packets = stats.tx_packets; - ret->tx_errs = stats.tx_errs; - ret->tx_drop = stats.tx_drop; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainMemoryStats(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -1012,46 +888,6 @@ cleanup: } static int -remoteDispatchDomainGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_info_args *args, - remote_domain_get_info_ret *ret) -{ - virDomainPtr dom = NULL; - virDomainInfo info; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainGetInfo(dom, &info) < 0) - goto cleanup; - - ret->state = info.state; - ret->max_mem = info.maxMem; - ret->memory = info.memory; - ret->nr_virt_cpu = info.nrVirtCpu; - ret->cpu_time = info.cpuTime; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainGetSecurityLabel(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -2651,91 +2487,6 @@ remoteDispatchAuthPolkit(struct qemud_server *server ATTRIBUTE_UNUSED, /*************************************************************** - * STORAGE POOL APIS - ***************************************************************/ - -static int -remoteDispatchStoragePoolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_pool_get_info_args *args, - remote_storage_pool_get_info_ret *ret) -{ - virStoragePoolPtr pool = NULL; - virStoragePoolInfo info; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(pool = get_nonnull_storage_pool(conn, args->pool))) - goto cleanup; - - if (virStoragePoolGetInfo(pool, &info) < 0) - goto cleanup; - - ret->state = info.state; - ret->capacity = info.capacity; - ret->allocation = info.allocation; - ret->available = info.available; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (pool) - virStoragePoolFree(pool); - return rv; -} - -/*************************************************************** - * STORAGE VOL APIS - ***************************************************************/ - -static int -remoteDispatchStorageVolGetInfo(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_storage_vol_get_info_args *args, - remote_storage_vol_get_info_ret *ret) -{ - virStorageVolPtr vol = NULL; - virStorageVolInfo info; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(vol = get_nonnull_storage_vol(conn, args->vol))) - goto cleanup; - - if (virStorageVolGetInfo(vol, &info) < 0) - goto cleanup; - - ret->type = info.type; - ret->capacity = info.capacity; - ret->allocation = info.allocation; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (vol) - virStorageVolFree(vol); - return rv; -} - -/*************************************************************** * NODE INFO APIS **************************************************************/ @@ -3059,53 +2810,6 @@ cleanup: } static int -remoteDispatchDomainGetJobInfo(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_job_info_args *args, - remote_domain_get_job_info_ret *ret) -{ - virDomainPtr dom = NULL; - virDomainJobInfo info; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainGetJobInfo(dom, &info) < 0) - goto cleanup; - - ret->type = info.type; - ret->timeElapsed = info.timeElapsed; - ret->timeRemaining = info.timeRemaining; - ret->dataTotal = info.dataTotal; - ret->dataProcessed = info.dataProcessed; - ret->dataRemaining = info.dataRemaining; - ret->memTotal = info.memTotal; - ret->memProcessed = info.memProcessed; - ret->memRemaining = info.memRemaining; - ret->fileTotal = info.fileTotal; - ret->fileProcessed = info.fileProcessed; - ret->fileRemaining = info.fileRemaining; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int remoteDispatchDomainEventsRegisterAny(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, @@ -3192,44 +2896,6 @@ cleanup: } static int -remoteDispatchDomainGetBlockInfo(struct qemud_server *server ATTRIBUTE_UNUSED, - struct qemud_client *client ATTRIBUTE_UNUSED, - virConnectPtr conn, - remote_message_header *hdr ATTRIBUTE_UNUSED, - remote_error *rerr, - remote_domain_get_block_info_args *args, - remote_domain_get_block_info_ret *ret) -{ - virDomainPtr dom = NULL; - virDomainBlockInfo info; - int rv = -1; - - if (!conn) { - virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); - goto cleanup; - } - - if (!(dom = get_nonnull_domain(conn, args->dom))) - goto cleanup; - - if (virDomainGetBlockInfo(dom, args->path, &info, args->flags) < 0) - goto cleanup; - - ret->capacity = info.capacity; - ret->allocation = info.allocation; - ret->physical = info.physical; - - rv = 0; - -cleanup: - if (rv < 0) - remoteDispatchError(rerr); - if (dom) - virDomainFree(dom); - return rv; -} - -static int qemuDispatchMonitorCommand(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, diff --git a/daemon/remote_dispatch_bodies.c b/daemon/remote_dispatch_bodies.c index 50432f9..43bfc6d 100644 --- a/daemon/remote_dispatch_bodies.c +++ b/daemon/remote_dispatch_bodies.c @@ -178,7 +178,45 @@ cleanup: /* remoteDispatchDomainBlockPeek has to be implemented manually */ -/* remoteDispatchDomainBlockStats has to be implemented manually */ +static int +remoteDispatchDomainBlockStats( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_block_stats_args *args, + remote_domain_block_stats_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainBlockStatsStruct tmp; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainBlockStats(dom, args->path, &tmp, sizeof tmp) < 0) + goto cleanup; + + ret->rd_req = tmp.rd_req; + ret->rd_bytes = tmp.rd_bytes; + ret->wr_req = tmp.wr_req; + ret->wr_bytes = tmp.wr_bytes; + ret->errs = tmp.errs; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} static int remoteDispatchDomainCoreDump( @@ -498,11 +536,130 @@ cleanup: /* remoteDispatchDomainGetBlkioParameters has to be implemented manually */ -/* remoteDispatchDomainGetBlockInfo has to be implemented manually */ +static int +remoteDispatchDomainGetBlockInfo( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_block_info_args *args, + remote_domain_get_block_info_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainBlockInfo tmp; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainGetBlockInfo(dom, args->path, &tmp, args->flags) < 0) + goto cleanup; + + ret->allocation = tmp.allocation; + ret->capacity = tmp.capacity; + ret->physical = tmp.physical; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainGetInfo( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_info_args *args, + remote_domain_get_info_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainInfo tmp; -/* remoteDispatchDomainGetInfo has to be implemented manually */ + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } -/* remoteDispatchDomainGetJobInfo has to be implemented manually */ + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainGetInfo(dom, &tmp) < 0) + goto cleanup; + + ret->state = tmp.state; + ret->maxMem = tmp.maxMem; + ret->memory = tmp.memory; + ret->nrVirtCpu = tmp.nrVirtCpu; + ret->cpuTime = tmp.cpuTime; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int +remoteDispatchDomainGetJobInfo( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_job_info_args *args, + remote_domain_get_job_info_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainJobInfo tmp; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainGetJobInfo(dom, &tmp) < 0) + goto cleanup; + + ret->type = tmp.type; + ret->timeElapsed = tmp.timeElapsed; + ret->timeRemaining = tmp.timeRemaining; + ret->dataTotal = tmp.dataTotal; + ret->dataProcessed = tmp.dataProcessed; + ret->dataRemaining = tmp.dataRemaining; + ret->memTotal = tmp.memTotal; + ret->memProcessed = tmp.memProcessed; + ret->memRemaining = tmp.memRemaining; + ret->fileTotal = tmp.fileTotal; + ret->fileProcessed = tmp.fileProcessed; + ret->fileRemaining = tmp.fileRemaining; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} static int remoteDispatchDomainGetMaxMemory( @@ -730,7 +887,48 @@ cleanup: return rv; } -/* remoteDispatchDomainInterfaceStats has to be implemented manually */ +static int +remoteDispatchDomainInterfaceStats( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_interface_stats_args *args, + remote_domain_interface_stats_ret *ret) +{ + int rv = -1; + virDomainPtr dom = NULL; + virDomainInterfaceStatsStruct tmp; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainInterfaceStats(dom, args->path, &tmp, sizeof tmp) < 0) + goto cleanup; + + ret->rx_bytes = tmp.rx_bytes; + ret->rx_packets = tmp.rx_packets; + ret->rx_errs = tmp.rx_errs; + ret->rx_drop = tmp.rx_drop; + ret->tx_bytes = tmp.tx_bytes; + ret->tx_packets = tmp.tx_packets; + ret->tx_errs = tmp.tx_errs; + ret->tx_drop = tmp.tx_drop; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} static int remoteDispatchDomainIsActive( @@ -3875,7 +4073,42 @@ cleanup: return rv; } -/* remoteDispatchNodeGetInfo has to be implemented manually */ +static int +remoteDispatchNodeGetInfo( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + void *args ATTRIBUTE_UNUSED, + remote_node_get_info_ret *ret) +{ + int rv = -1; + virNodeInfo tmp; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (virNodeGetInfo(conn, &tmp) < 0) + goto cleanup; + + memcpy(ret->model, tmp.model, sizeof ret->model); + ret->memory = tmp.memory; + ret->cpus = tmp.cpus; + ret->mhz = tmp.mhz; + ret->nodes = tmp.nodes; + ret->sockets = tmp.sockets; + ret->cores = tmp.cores; + ret->threads = tmp.threads; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + return rv; +} /* remoteDispatchNodeGetSecurityModel has to be implemented manually */ @@ -4901,7 +5134,44 @@ cleanup: return rv; } -/* remoteDispatchStoragePoolGetInfo has to be implemented manually */ +static int +remoteDispatchStoragePoolGetInfo( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_pool_get_info_args *args, + remote_storage_pool_get_info_ret *ret) +{ + int rv = -1; + virStoragePoolPtr pool = NULL; + virStoragePoolInfo tmp; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(pool = get_nonnull_storage_pool(conn, args->pool))) + goto cleanup; + + if (virStoragePoolGetInfo(pool, &tmp) < 0) + goto cleanup; + + ret->state = tmp.state; + ret->capacity = tmp.capacity; + ret->allocation = tmp.allocation; + ret->available = tmp.available; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (pool) + virStoragePoolFree(pool); + return rv; +} static int remoteDispatchStoragePoolIsActive( @@ -5419,7 +5689,43 @@ cleanup: return rv; } -/* remoteDispatchStorageVolGetInfo has to be implemented manually */ +static int +remoteDispatchStorageVolGetInfo( + struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_storage_vol_get_info_args *args, + remote_storage_vol_get_info_ret *ret) +{ + int rv = -1; + virStorageVolPtr vol = NULL; + virStorageVolInfo tmp; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(vol = get_nonnull_storage_vol(conn, args->vol))) + goto cleanup; + + if (virStorageVolGetInfo(vol, &tmp) < 0) + goto cleanup; + + ret->type = tmp.type; + ret->capacity = tmp.capacity; + ret->allocation = tmp.allocation; + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (vol) + virStorageVolFree(vol); + return rv; +} static int remoteDispatchStorageVolGetPath( diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 1fd4627..1aaeaae 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -259,31 +259,23 @@ elsif ($opt_b) { "AuthPolkit", "DomainBlockPeek", - "DomainBlockStats", "DomainCreateWithFlags", "DomainEventsDeregister", "DomainEventsRegister", "DomainGetBlkioParameters", - "DomainGetBlockInfo", - "DomainGetInfo", - "DomainGetJobInfo", "DomainGetMemoryParameters", "DomainGetSchedulerParameters", "DomainGetSchedulerType", "DomainGetSecurityLabel", "DomainGetVcpus", - "DomainInterfaceStats", "DomainMemoryPeek", "DomainMemoryStats", "DomainMigratePrepare", "DomainMigratePrepare2", "GetType", "NodeDeviceGetParent", - "NodeGetInfo", "NodeGetSecurityModel", - "SecretGetValue", - "StoragePoolGetInfo", - "StorageVolGetInfo"); + "SecretGetValue"); } elsif ($structprefix eq "qemu") { @ungeneratable = ("MonitorCommand"); } @@ -408,6 +400,10 @@ elsif ($opt_b) { } else { push(@args_list, "args->$2"); } + } elsif ($args_member =~ m/^\/*/) { + # ignore comments + } else { + die "unhandled type for argument value: $args_member"; } } } @@ -419,10 +415,27 @@ elsif ($opt_b) { my $single_ret_list_name = "undefined"; my $single_ret_list_max_var = "undefined"; my $single_ret_list_max_define = "undefined"; + my $multi_ret = 0; + + if ($calls{$_}->{ret} ne "void" and + scalar(@{$calls{$_}->{ret_members}}) > 1) { + $multi_ret = 1; + } if ($calls{$_}->{ret} ne "void") { foreach my $ret_member (@{$calls{$_}->{ret_members}}) { - if ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) { + if ($multi_ret) { + if ($ret_member =~ m/(char|short|int|hyper) (\S+)\[\S+\];/) { + push(@ret_list, "memcpy(ret->$2, tmp.$2, sizeof ret->$2);"); + } elsif ($ret_member =~ m/char (\S+);/ or + $ret_member =~ m/short (\S+);/ or + $ret_member =~ m/int (\S+);/ or + $ret_member =~ m/hyper (\S+);/) { + push(@ret_list, "ret->$1 = tmp.$1;"); + } else { + die "unhandled type for multi-return-value: $ret_member"; + } + } elsif ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) { push(@vars_list, "int len"); push(@ret_list, "ret->$1.$1_len = len;"); push(@free_list_on_error, "VIR_FREE(ret->$1.$1_val);"); @@ -530,10 +543,39 @@ elsif ($opt_b) { } else { $single_ret_by_ref = 1; } + } else { + die "unhandled type for return value: $ret_member"; } } } + if ($multi_ret) { + if (! @args_list) { + push(@args_list, "conn"); + } + + my $struct_name = $calls{$_}->{ProcName}; + $struct_name =~ s/Get//; + + if ($calls{$_}->{ProcName} eq "DomainGetBlockInfo") { + my $flags = pop(@args_list); + push(@args_list, "&tmp"); + push(@args_list, $flags); + } elsif ($calls{$_}->{ProcName} eq "DomainBlockStats") { + $struct_name .= "Struct"; + push(@args_list, "&tmp"); + push(@args_list, "sizeof tmp"); + } elsif ($calls{$_}->{ProcName} eq "DomainInterfaceStats") { + $struct_name .= "Struct"; + push(@args_list, "&tmp"); + push(@args_list, "sizeof tmp"); + } else { + push(@args_list, "&tmp"); + } + + push(@vars_list, "vir$struct_name tmp"); + } + foreach my $var (@vars_list) { print " $var;\n"; } @@ -574,7 +616,7 @@ elsif ($opt_b) { print ") < 0)\n"; print " goto cleanup;\n"; print "\n"; - } elsif (scalar(@{$calls{$_}->{ret_members}}) == 1) { + } elsif (!$multi_ret) { my $prefix = ""; my $proc_name = $calls{$_}->{ProcName}; @@ -630,7 +672,21 @@ elsif ($opt_b) { print " "; } - print join(" \n", @ret_list); + print join("\n ", @ret_list); + print "\n"; + } else { + print " if (vir$calls{$_}->{ProcName}("; + print join(', ', @args_list); + print ") < 0)\n"; + + print " goto cleanup;\n"; + print "\n"; + + if (@ret_list) { + print " "; + } + + print join("\n ", @ret_list); print "\n"; } diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 935f321..934fdda 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -2848,10 +2848,10 @@ remoteDomainGetInfo (virDomainPtr domain, virDomainInfoPtr info) goto done; info->state = ret.state; - info->maxMem = ret.max_mem; + info->maxMem = ret.maxMem; info->memory = ret.memory; - info->nrVirtCpu = ret.nr_virt_cpu; - info->cpuTime = ret.cpu_time; + info->nrVirtCpu = ret.nrVirtCpu; + info->cpuTime = ret.cpuTime; rv = 0; diff --git a/src/remote/remote_protocol.c b/src/remote/remote_protocol.c index 1bdd79e..301ffbf 100644 --- a/src/remote/remote_protocol.c +++ b/src/remote/remote_protocol.c @@ -1185,13 +1185,13 @@ xdr_remote_domain_get_info_ret (XDR *xdrs, remote_domain_get_info_ret *objp) if (!xdr_u_char (xdrs, &objp->state)) return FALSE; - if (!xdr_uint64_t (xdrs, &objp->max_mem)) + if (!xdr_uint64_t (xdrs, &objp->maxMem)) return FALSE; if (!xdr_uint64_t (xdrs, &objp->memory)) return FALSE; - if (!xdr_u_short (xdrs, &objp->nr_virt_cpu)) + if (!xdr_u_short (xdrs, &objp->nrVirtCpu)) return FALSE; - if (!xdr_uint64_t (xdrs, &objp->cpu_time)) + if (!xdr_uint64_t (xdrs, &objp->cpuTime)) return FALSE; return TRUE; } diff --git a/src/remote/remote_protocol.h b/src/remote/remote_protocol.h index ff6903c..8942646 100644 --- a/src/remote/remote_protocol.h +++ b/src/remote/remote_protocol.h @@ -641,10 +641,10 @@ typedef struct remote_domain_get_info_args remote_domain_get_info_args; struct remote_domain_get_info_ret { u_char state; - uint64_t max_mem; + uint64_t maxMem; uint64_t memory; - u_short nr_virt_cpu; - uint64_t cpu_time; + u_short nrVirtCpu; + uint64_t cpuTime; }; typedef struct remote_domain_get_info_ret remote_domain_get_info_ret; diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index 0858096..c706c36 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -693,10 +693,10 @@ struct remote_domain_get_info_args { struct remote_domain_get_info_ret { unsigned char state; - unsigned hyper max_mem; + unsigned hyper maxMem; unsigned hyper memory; - unsigned short nr_virt_cpu; - unsigned hyper cpu_time; + unsigned short nrVirtCpu; + unsigned hyper cpuTime; }; struct remote_domain_save_args { diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index d433f6b..f904c4d 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -386,10 +386,10 @@ struct remote_domain_get_info_args { }; struct remote_domain_get_info_ret { u_char state; - uint64_t max_mem; + uint64_t maxMem; uint64_t memory; - u_short nr_virt_cpu; - uint64_t cpu_time; + u_short nrVirtCpu; + uint64_t cpuTime; }; struct remote_domain_save_args { remote_nonnull_domain dom; -- 1.7.0.4

--- daemon/remote_generator.pl | 54 ++++++++++++++++++++++++------------------- 1 files changed, 30 insertions(+), 24 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 1aaeaae..9fa3caa 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -293,30 +293,6 @@ elsif ($opt_b) { next; } - print "static int\n"; - print "${structprefix}Dispatch$calls{$_}->{ProcName}(\n"; - print " struct qemud_server *server ATTRIBUTE_UNUSED,\n"; - print " struct qemud_client *client ATTRIBUTE_UNUSED,\n"; - print " virConnectPtr conn,\n"; - print " remote_message_header *hdr ATTRIBUTE_UNUSED,\n"; - print " remote_error *rerr,\n"; - print " $calls{$_}->{args} *args"; - - if ($calls{$_}->{args} eq "void") { - print " ATTRIBUTE_UNUSED" - } - - print ",\n"; - print " $calls{$_}->{ret} *ret"; - - if ($calls{$_}->{ret} eq "void") { - print " ATTRIBUTE_UNUSED" - } - - print ")\n"; - print "{\n"; - print " int rv = -1;\n"; - my $has_node_device = 0; my @vars_list = (); my @optionals_list = (); @@ -326,6 +302,7 @@ elsif ($opt_b) { my @free_list = (); my @free_list_on_error = ("remoteDispatchError(rerr);"); + # handle arguments to the function if ($calls{$_}->{args} ne "void") { # node device is special, as it's identified by name if ($calls{$_}->{args} =~ m/^remote_node_device_/ and @@ -408,6 +385,7 @@ elsif ($opt_b) { } } + # handle return values of the function my $single_ret_var = "undefined"; my $single_ret_by_ref = 0; my $single_ret_check = " == undefined"; @@ -549,6 +527,7 @@ elsif ($opt_b) { } } + # select struct type for multi-return-value functions if ($multi_ret) { if (! @args_list) { push(@args_list, "conn"); @@ -576,6 +555,33 @@ elsif ($opt_b) { push(@vars_list, "vir$struct_name tmp"); } + # print functions signature + print "static int\n"; + print "${structprefix}Dispatch$calls{$_}->{ProcName}(\n"; + print " struct qemud_server *server ATTRIBUTE_UNUSED,\n"; + print " struct qemud_client *client ATTRIBUTE_UNUSED,\n"; + print " virConnectPtr conn,\n"; + print " remote_message_header *hdr ATTRIBUTE_UNUSED,\n"; + print " remote_error *rerr,\n"; + print " $calls{$_}->{args} *args"; + + if ($calls{$_}->{args} eq "void") { + print " ATTRIBUTE_UNUSED" + } + + print ",\n"; + print " $calls{$_}->{ret} *ret"; + + if ($calls{$_}->{ret} eq "void") { + print " ATTRIBUTE_UNUSED" + } + + print ")\n"; + + # print function body + print "{\n"; + print " int rv = -1;\n"; + foreach my $var (@vars_list) { print " $var;\n"; } -- 1.7.0.4

Rename remoteSecretListSecrets to remoteListSecrets to match the normal naming pattern. --- cfg.mk | 8 +- daemon/remote_generator.pl | 335 +++++++++- src/Makefile.am | 13 +- src/remote/qemu_client_bodies.c | 4 + src/remote/remote_client_bodies.c | 1391 +++++++++++++++++++++++++++++++++++++ src/remote/remote_driver.c | 1116 +----------------------------- 6 files changed, 1750 insertions(+), 1117 deletions(-) create mode 100644 src/remote/qemu_client_bodies.c create mode 100644 src/remote/remote_client_bodies.c diff --git a/cfg.mk b/cfg.mk index a38ea48..82759bf 100644 --- a/cfg.mk +++ b/cfg.mk @@ -611,7 +611,7 @@ exclude_file_name_regexp--sc_prohibit_close = \ exclude_file_name_regexp--sc_prohibit_doubled_word = ^po/ exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \ - (^docs/api_extension/|^tests/qemuhelpdata/|\.(gif|ico|png)$$|daemon/.*_dispatch_bodies.c$$) + (^docs/api_extension/|^tests/qemuhelpdata/|\.(gif|ico|png)$$|^daemon/.*_dispatch_bodies.c$$|^src/remote/.*_client_bodies.c$$) _src2=src/(util/util|libvirt|lxc/lxc_controller) exclude_file_name_regexp--sc_prohibit_fork_wrappers = \ @@ -633,9 +633,11 @@ exclude_file_name_regexp--sc_prohibit_strncpy = \ exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/xml\.c$$ -exclude_file_name_regexp--sc_require_config_h = ^(examples/|daemon/.*_dispatch_bodies.c$$) +exclude_file_name_regexp--sc_require_config_h = \ + ^(examples/|daemon/.*_dispatch_bodies.c$$|src/remote/.*_client_bodies.c$$) -exclude_file_name_regexp--sc_require_config_h_first = ^(examples/|daemon/.*_dispatch_bodies.c$$) +exclude_file_name_regexp--sc_require_config_h_first = \ + ^(examples/|daemon/.*_dispatch_bodies.c$$|src/remote/.*_client_bodies.c$$) exclude_file_name_regexp--sc_trailing_blank = (^docs/|\.(fig|gif|ico|png)$$) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 9fa3caa..73d1596 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -20,8 +20,8 @@ use strict; use Getopt::Std; # Command line options. -our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c, $opt_b); -getopts ('ptardcb'); +our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d, $opt_c, $opt_b, $opt_k); +getopts ('ptardcbk'); my $structprefix = $ARGV[0]; my $procprefix = uc $structprefix; @@ -724,3 +724,334 @@ elsif ($opt_b) { print "\n"; } } + +# Bodies for client functions ("remote_client_bodies.c"). +elsif ($opt_k) { + # list of functions that currently are not generatable + my @ungeneratable; + + if ($structprefix eq "remote") { + @ungeneratable = ("Close", + "DomainEventsDeregisterAny", + "DomainEventsRegisterAny", + "DomainMigratePrepareTunnel", + "DomainOpenConsole", + "DomainPinVcpu", + "DomainSetSchedulerParameters", + "DomainSetMemoryParameters", + "DomainSetBlkioParameters", + "Open", + "StorageVolUpload", + "StorageVolDownload", + + "AuthList", + "AuthSaslInit", + "AuthSaslStart", + "AuthSaslStep", + "AuthPolkit", + + "CPUBaseline", + "CPUCompare", + "DomainBlockStats", + "DomainCreate", + "DomainCreateXML", + "DomainDefineXML", + "DomainDestroy", + "DomainDumpXML", + "DomainGetAutostart", + "DomainGetBlockInfo", + "DomainGetInfo", + "StoragePoolLookupByUUID", + "StoragePoolNumOfVolumes", + "NodeDeviceCreateXML", + "DomainGetJobInfo", + "DomainGetMaxMemory", + "DomainGetOSType", + "DomainGetVcpusFlags", + "HasCurrentSnapshot", + "DomainInterfaceStats", + "DomainIsActive", + "DomainIsPersistent", + "DomainIsUpdated", + "DomainLookupByID", + "DomainLookupByName", + "DomainLookupByUIID", + "DomainMigrateFinish", + "DomainGetMaxVcpus", + "DomainHasCurrentSnapshot", + "NWFilterDefineXML", + "NumOfStoragePools", + "NWFilterLookupByName", + "NWFilterLookupByUUID", + "SecretLookupByUUID", + "SecretLookupByUsage", + "StoragePoolCreateXML", + "StoragePoolIsActive", + "DomainHasManagedSaveImage", + "DomainLookupByUUID", + "DomainMigratePerform", + "DomainMigrateFinish2", + "DomainSnapshotCreateXML", + "DomainSnapshotDumpXML", + "DomainSnapshotNum", + "DomainSnapshotCurrent", + "DomainSnapshotListNames", + "GetCapabilities", + "GetHostname", + "GetLibVersion", + "GetMaxVcpus", + "DomainSnapshotLookupByName", + "DomainXMLFromNative", + "FindStoragePoolSources", + "GetSysinfo", + "GetVersion", + "GetLibVersion", + "InterfaceDefineXML", + "InterfaceGetXMLDesc", + "InterfaceLookupByName", + "IsSecure", + "ListDefinedDomains", + "ListDefinedInterfaces", + "ListNWFilters", + "NetworkCreateXML", + "SupportsFeature", + "StorageVolLookupByPath", + "StorageVolGetInfo", + "StorageVolCreateXML", + "StorageVolLookupByName", + "StorageVolLookupByKey", + "StoragePoolIsPersistent", + "StoragePoolGetInfo", + "StorageVolGetPath", + "StorageVolCreateXMLFrom", + "StoragePoolLookupByName", + "SecretGetXMLDesc", + "NWFilterGetXMLDesc", + "NumOfNWFilters", + "NumOfInterfaces", + "NumOfDomains", + "NumOfDefinedStoragePools", + "NodeListDevices", + "NodeGetCellsFreeMemory", + "NodeDeviceDumpXML", + "NetworkIsActive", + "ListDefinedNetworks", + "DomainXMLToNative", + "StorageVolDumpXML", + "StoragePoolListVolumes", + "StoragePoolDumpXML", + "SecretDefineXML", + "NumOfDefinedNetworks", + "InterfaceIsActive", + "ListDomains", + "ListStoragePools", + "NetworkDumpXML", + "NetworkGetAutostart", + "NetworkGetBridgeName", + "StoragePoolLookupByVolume", + "StoragePoolGetAutostart", + "SecretSetValue", + "NumOfDefinedInterfaces", + "StoragePoolDefineXML", + "NodeNumOfDevices", + "NodeGetInfo", + "GetURI", + "InterfaceLookupByMACString", + "ListInterfaces", + "NetworkDefineXML", + "NetworkLookupByName", + "ListDefinedStoragePools", + "NetworkIsPersistent", + "NodeDeviceDettach", + "NodeDeviceLookupByName", + "NodeGetFreeMemory", + "NumOfDefinedDomains", + "ListNetworks", + "NodeDeviceListCaps", + "NodeDeviceReset", + "NumOfNetworks", + "NetworkLookupByUUID", + "NodeDeviceNumOfCaps", + "NumOfSecrets", + "NodeDeviceReAttach", + "ListSecrets", + + "DomainBlockPeek", + "DomainCreateWithFlags", + "DomainEventsDeregister", + "DomainEventsRegister", + "DomainGetBlkioParameters", + "DomainGetMemoryParameters", + "DomainGetSchedulerParameters", + "DomainGetSchedulerType", + "DomainGetSecurityLabel", + "DomainGetVcpus", + "DomainMemoryPeek", + "DomainMemoryStats", + "DomainMigratePrepare", + "DomainMigratePrepare2", + "GetType", + "NodeDeviceGetParent", + "NodeGetSecurityModel", + "SecretGetValue"); + } elsif ($structprefix eq "qemu") { + @ungeneratable = ("MonitorCommand"); + } + + my %ug = map { $_ => 1 } @ungeneratable; + my @keys = sort (keys %calls); + + foreach (@keys) { + my $call = $calls{$_}; + + # skip things which are REMOTE_MESSAGE + next if $call->{msg}; + + if (exists($ug{$call->{ProcName}})) { + print "/* ${structprefix}Dispatch$call->{ProcName} has to " . + "be implemented manually */\n\n"; + next; + } + + my @args_list = (); + my @vars_list = (); + my @setters_list = (); + my $priv_src = "conn"; + my $priv_name = "privateData"; + my $args = "&args"; + my $ret = "&ret"; + + if ($call->{args} eq "void") { + $args = "NULL"; + } else { + push(@vars_list, "$call->{args} args"); + + my $is_first_arg = 1; + my $has_node_device = 0; + + # node device is special + if ($call->{args} =~ m/^remote_node_device_/) { + $has_node_device = 1; + } + + foreach my $args_member (@{$call->{args_members}}) { + if ($args_member =~ m/^remote_nonnull_string name;/ and $has_node_device) { + $priv_src = "dev->conn"; + $priv_name = "devMonPrivateData"; + push(@args_list, "virNodeDevicePtr dev"); + push(@setters_list, "args.name = dev->name;"); + } elsif ($args_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|interface|secret|nwfilter|domain_snapshot) (\S+);/) { + my $name = $1; + my $type_name = name_to_ProcName($name); + + if ($is_first_arg) { + if ($name eq "domain_snapshot") { + $priv_src = "$2->domain->conn"; + } else { + $priv_src = "$2->conn"; + } + + if ($name =~ m/^storage_/) { + $priv_name = "storagePrivateData"; + } elsif (!($name =~ m/^domain/)) { + $priv_name = "${name}PrivateData"; + } + } + + push(@args_list, "vir${type_name}Ptr $2"); + push(@setters_list, "make_nonnull_$1(&args.$2, $2);"); + } elsif ($args_member =~ m/^remote_nonnull_string (\S+);/) { + push(@args_list, "const char *$1"); + push(@setters_list, "args.$1 = (char *)$1;"); + } elsif ($args_member =~ m/(\S+)<\S+>;/) { + # ignored for now + } elsif ($args_member =~ m/^(.*) (\S+);/) { + my $type_name = $1; + my $arg_name = $2; + + $type_name =~ s/hyper/long/; + $type_name =~ s/^unsigned$/unsigned int/; + $type_name =~ s/u_int/unsigned int/; + + if ($type_name eq "int") { + # fix bad decisions in the xdr protocol + if ($arg_name eq "flags" and + $call->{ProcName} ne "DomainCoreDump") { + $type_name = "unsigned int"; + } elsif ($arg_name eq "nvcpus" and + $call->{ProcName} eq "DomainSetVcpus") { + $type_name = "unsigned int"; + } + } + + if ($call->{ProcName} eq "DomainMigrateSetMaxDowntime" and + $arg_name eq "downtime") { + $type_name = "unsigned long long"; + } + + push(@args_list, "$type_name $arg_name"); + push(@setters_list, "args.$arg_name = $arg_name;"); + } elsif ($args_member =~ m/^\/*/) { + # ignore comments + } else { + die "unhandled type for argument value: $args_member"; + } + + if ($is_first_arg and $priv_src eq "conn") { + unshift(@args_list, "virConnectPtr conn"); + } + + $is_first_arg = 0; + } + } + + if ($call->{ret} eq "void") { + $ret = "NULL"; + } else { + push(@vars_list, "$call->{ret} ret"); + } + + # print function + print "static int\n"; + print "remote$call->{ProcName}("; + + print join(", ", @args_list); + + print ")\n"; + print "{\n"; + print " int rv = -1;\n"; + print " struct private_data *priv = $priv_src->$priv_name;\n"; + + foreach my $var (@vars_list) { + print " $var;\n"; + } + + print "\n"; + print " remoteDriverLock(priv);\n"; + print "\n"; + + if (@setters_list) { + print " "; + } + + print join("\n ", @setters_list); + + if (@setters_list) { + print "\n"; + } + + print "\n"; + print " if (call($priv_src, priv, 0, ${procprefix}_PROC_$call->{UC_NAME},\n"; + print " (xdrproc_t)xdr_$call->{args}, (char *)$args,\n"; + print " (xdrproc_t)xdr_$call->{ret}, (char *)$ret) == -1)\n"; + print " goto done;\n"; + print "\n"; + print " rv = 0;\n"; + print "\n"; + print "done:\n"; + print " remoteDriverUnlock(priv);\n"; + print " return rv;\n"; + print "}\n"; + print "\n"; + } +} diff --git a/src/Makefile.am b/src/Makefile.am index 1eaa7d1..8ba176d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -162,8 +162,19 @@ REMOTE_DRIVER_SOURCES = \ remote/qemu_protocol.c \ remote/qemu_protocol.h +remote/remote_driver.c: remote/remote_client_bodies.c remote/qemu_client_bodies.c + +REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x +QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x + +remote/remote_client_bodies.c: $(top_srcdir)/daemon/remote_generator.pl $(REMOTE_PROTOCOL) + $(AM_V_GEN)perl -w $(top_srcdir)/daemon/remote_generator.pl -c -k remote $(REMOTE_PROTOCOL) > $@ + +remote/qemu_client_bodies.c: $(top_srcdir)/daemon/remote_generator.pl $(QEMU_PROTOCOL) + $(AM_V_GEN)perl -w $(top_srcdir)/daemon/remote_generator.pl -k remote $(QEMU_PROTOCOL) > $@ + EXTRA_DIST += remote/remote_protocol.x remote/qemu_protocol.x \ - remote/rpcgen_fix.pl + remote/rpcgen_fix.pl remote/remote_client_bodies.c remote/qemu_client_bodies.c # Ensure that we don't change the struct or member names or member ordering # in remote_protocol.x The embedded perl below needs a few comments, and diff --git a/src/remote/qemu_client_bodies.c b/src/remote/qemu_client_bodies.c new file mode 100644 index 0000000..dd66ba3 --- /dev/null +++ b/src/remote/qemu_client_bodies.c @@ -0,0 +1,4 @@ +/* Automatically generated by remote_generator.pl. + * Do not edit this file. Any changes you make will be lost. + */ + diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c new file mode 100644 index 0000000..07ddfbf --- /dev/null +++ b/src/remote/remote_client_bodies.c @@ -0,0 +1,1391 @@ +/* Automatically generated by remote_generator.pl. + * Do not edit this file. Any changes you make will be lost. + */ + +/* remoteDispatchAuthList has to be implemented manually */ + +/* remoteDispatchAuthPolkit has to be implemented manually */ + +/* remoteDispatchAuthSaslInit has to be implemented manually */ + +/* remoteDispatchAuthSaslStart has to be implemented manually */ + +/* remoteDispatchAuthSaslStep has to be implemented manually */ + +/* remoteDispatchClose has to be implemented manually */ + +/* remoteDispatchCPUBaseline has to be implemented manually */ + +/* remoteDispatchCPUCompare has to be implemented manually */ + +static int +remoteDomainAbortJob(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_abort_job_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_ABORT_JOB, + (xdrproc_t)xdr_remote_domain_abort_job_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainAttachDevice(virDomainPtr dom, const char *xml) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_attach_device_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.xml = (char *)xml; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_ATTACH_DEVICE, + (xdrproc_t)xdr_remote_domain_attach_device_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainAttachDeviceFlags(virDomainPtr dom, const char *xml, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_attach_device_flags_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.xml = (char *)xml; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_ATTACH_DEVICE_FLAGS, + (xdrproc_t)xdr_remote_domain_attach_device_flags_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainBlockPeek has to be implemented manually */ + +/* remoteDispatchDomainBlockStats has to be implemented manually */ + +static int +remoteDomainCoreDump(virDomainPtr dom, const char *to, int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_core_dump_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.to = (char *)to; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_CORE_DUMP, + (xdrproc_t)xdr_remote_domain_core_dump_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainCreate has to be implemented manually */ + +/* remoteDispatchDomainCreateWithFlags has to be implemented manually */ + +/* remoteDispatchDomainCreateXML has to be implemented manually */ + +/* remoteDispatchDomainDefineXML has to be implemented manually */ + +/* remoteDispatchDomainDestroy has to be implemented manually */ + +static int +remoteDomainDetachDevice(virDomainPtr dom, const char *xml) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_detach_device_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.xml = (char *)xml; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_DETACH_DEVICE, + (xdrproc_t)xdr_remote_domain_detach_device_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainDetachDeviceFlags(virDomainPtr dom, const char *xml, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_detach_device_flags_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.xml = (char *)xml; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_DETACH_DEVICE_FLAGS, + (xdrproc_t)xdr_remote_domain_detach_device_flags_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainDumpXML has to be implemented manually */ + +/* remoteDispatchDomainEventsDeregister has to be implemented manually */ + +/* remoteDispatchDomainEventsDeregisterAny has to be implemented manually */ + +/* remoteDispatchDomainEventsRegister has to be implemented manually */ + +/* remoteDispatchDomainEventsRegisterAny has to be implemented manually */ + +/* remoteDispatchDomainGetAutostart has to be implemented manually */ + +/* remoteDispatchDomainGetBlkioParameters has to be implemented manually */ + +/* remoteDispatchDomainGetBlockInfo has to be implemented manually */ + +/* remoteDispatchDomainGetInfo has to be implemented manually */ + +/* remoteDispatchDomainGetJobInfo has to be implemented manually */ + +/* remoteDispatchDomainGetMaxMemory has to be implemented manually */ + +/* remoteDispatchDomainGetMaxVcpus has to be implemented manually */ + +/* remoteDispatchDomainGetMemoryParameters has to be implemented manually */ + +/* remoteDispatchDomainGetOSType has to be implemented manually */ + +/* remoteDispatchDomainGetSchedulerParameters has to be implemented manually */ + +/* remoteDispatchDomainGetSchedulerType has to be implemented manually */ + +/* remoteDispatchDomainGetSecurityLabel has to be implemented manually */ + +/* remoteDispatchDomainGetVcpus has to be implemented manually */ + +/* remoteDispatchDomainGetVcpusFlags has to be implemented manually */ + +/* remoteDispatchDomainHasCurrentSnapshot has to be implemented manually */ + +/* remoteDispatchDomainHasManagedSaveImage has to be implemented manually */ + +/* remoteDispatchDomainInterfaceStats has to be implemented manually */ + +/* remoteDispatchDomainIsActive has to be implemented manually */ + +/* remoteDispatchDomainIsPersistent has to be implemented manually */ + +/* remoteDispatchDomainIsUpdated has to be implemented manually */ + +/* remoteDispatchDomainLookupByID has to be implemented manually */ + +/* remoteDispatchDomainLookupByName has to be implemented manually */ + +/* remoteDispatchDomainLookupByUUID has to be implemented manually */ + +static int +remoteDomainManagedSave(virDomainPtr dom, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_managed_save_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_MANAGED_SAVE, + (xdrproc_t)xdr_remote_domain_managed_save_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_managed_save_remove_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_MANAGED_SAVE_REMOVE, + (xdrproc_t)xdr_remote_domain_managed_save_remove_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainMemoryPeek has to be implemented manually */ + +/* remoteDispatchDomainMemoryStats has to be implemented manually */ + +/* remoteDispatchDomainMigrateFinish has to be implemented manually */ + +/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */ + +/* remoteDispatchDomainMigratePerform has to be implemented manually */ + +/* remoteDispatchDomainMigratePrepare has to be implemented manually */ + +/* remoteDispatchDomainMigratePrepare2 has to be implemented manually */ + +/* remoteDispatchDomainMigratePrepareTunnel has to be implemented manually */ + +static int +remoteDomainMigrateSetMaxDowntime(virDomainPtr dom, unsigned long long downtime, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_migrate_set_max_downtime_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.downtime = downtime; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_DOWNTIME, + (xdrproc_t)xdr_remote_domain_migrate_set_max_downtime_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainMigrateSetMaxSpeed(virDomainPtr dom, unsigned long bandwidth, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_migrate_set_max_speed_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.bandwidth = bandwidth; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_SPEED, + (xdrproc_t)xdr_remote_domain_migrate_set_max_speed_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainOpenConsole has to be implemented manually */ + +/* remoteDispatchDomainPinVcpu has to be implemented manually */ + +static int +remoteDomainReboot(virDomainPtr dom, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_reboot_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_REBOOT, + (xdrproc_t)xdr_remote_domain_reboot_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainRestore(virConnectPtr conn, const char *from) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_domain_restore_args args; + + remoteDriverLock(priv); + + args.from = (char *)from; + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_RESTORE, + (xdrproc_t)xdr_remote_domain_restore_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainResume(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_resume_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_RESUME, + (xdrproc_t)xdr_remote_domain_resume_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainRevertToSnapshot(virDomainSnapshotPtr snap, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = snap->domain->conn->privateData; + remote_domain_revert_to_snapshot_args args; + + remoteDriverLock(priv); + + make_nonnull_domain_snapshot(&args.snap, snap); + args.flags = flags; + + if (call(snap->domain->conn, priv, 0, REMOTE_PROC_DOMAIN_REVERT_TO_SNAPSHOT, + (xdrproc_t)xdr_remote_domain_revert_to_snapshot_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainSave(virDomainPtr dom, const char *to) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_save_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.to = (char *)to; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SAVE, + (xdrproc_t)xdr_remote_domain_save_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainSetAutostart(virDomainPtr dom, int autostart) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_set_autostart_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.autostart = autostart; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_AUTOSTART, + (xdrproc_t)xdr_remote_domain_set_autostart_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainSetBlkioParameters has to be implemented manually */ + +static int +remoteDomainSetMaxMemory(virDomainPtr dom, unsigned long memory) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_set_max_memory_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.memory = memory; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_MAX_MEMORY, + (xdrproc_t)xdr_remote_domain_set_max_memory_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainSetMemory(virDomainPtr dom, unsigned long memory) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_set_memory_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.memory = memory; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_MEMORY, + (xdrproc_t)xdr_remote_domain_set_memory_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainSetMemoryFlags(virDomainPtr dom, unsigned long memory, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_set_memory_flags_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.memory = memory; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_MEMORY_FLAGS, + (xdrproc_t)xdr_remote_domain_set_memory_flags_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainSetMemoryParameters has to be implemented manually */ + +/* remoteDispatchDomainSetSchedulerParameters has to be implemented manually */ + +static int +remoteDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_set_vcpus_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.nvcpus = nvcpus; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_VCPUS, + (xdrproc_t)xdr_remote_domain_set_vcpus_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_set_vcpus_flags_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.nvcpus = nvcpus; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_VCPUS_FLAGS, + (xdrproc_t)xdr_remote_domain_set_vcpus_flags_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainShutdown(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_shutdown_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SHUTDOWN, + (xdrproc_t)xdr_remote_domain_shutdown_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainSnapshotCreateXML has to be implemented manually */ + +/* remoteDispatchDomainSnapshotCurrent has to be implemented manually */ + +static int +remoteDomainSnapshotDelete(virDomainSnapshotPtr snap, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = snap->domain->conn->privateData; + remote_domain_snapshot_delete_args args; + + remoteDriverLock(priv); + + make_nonnull_domain_snapshot(&args.snap, snap); + args.flags = flags; + + if (call(snap->domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_DELETE, + (xdrproc_t)xdr_remote_domain_snapshot_delete_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainSnapshotDumpXML has to be implemented manually */ + +/* remoteDispatchDomainSnapshotListNames has to be implemented manually */ + +/* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */ + +/* remoteDispatchDomainSnapshotNum has to be implemented manually */ + +static int +remoteDomainSuspend(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_suspend_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SUSPEND, + (xdrproc_t)xdr_remote_domain_suspend_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainUndefine(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_undefine_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_UNDEFINE, + (xdrproc_t)xdr_remote_domain_undefine_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainUpdateDeviceFlags(virDomainPtr dom, const char *xml, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_update_device_flags_args args; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.xml = (char *)xml; + args.flags = flags; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_UPDATE_DEVICE_FLAGS, + (xdrproc_t)xdr_remote_domain_update_device_flags_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchDomainXMLFromNative has to be implemented manually */ + +/* remoteDispatchDomainXMLToNative has to be implemented manually */ + +/* remoteDispatchFindStoragePoolSources has to be implemented manually */ + +/* remoteDispatchGetCapabilities has to be implemented manually */ + +/* remoteDispatchGetHostname has to be implemented manually */ + +/* remoteDispatchGetLibVersion has to be implemented manually */ + +/* remoteDispatchGetMaxVcpus has to be implemented manually */ + +/* remoteDispatchGetSysinfo has to be implemented manually */ + +/* remoteDispatchGetType has to be implemented manually */ + +/* remoteDispatchGetURI has to be implemented manually */ + +/* remoteDispatchGetVersion has to be implemented manually */ + +static int +remoteInterfaceCreate(virInterfacePtr iface, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = iface->conn->interfacePrivateData; + remote_interface_create_args args; + + remoteDriverLock(priv); + + make_nonnull_interface(&args.iface, iface); + args.flags = flags; + + if (call(iface->conn, priv, 0, REMOTE_PROC_INTERFACE_CREATE, + (xdrproc_t)xdr_remote_interface_create_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchInterfaceDefineXML has to be implemented manually */ + +static int +remoteInterfaceDestroy(virInterfacePtr iface, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = iface->conn->interfacePrivateData; + remote_interface_destroy_args args; + + remoteDriverLock(priv); + + make_nonnull_interface(&args.iface, iface); + args.flags = flags; + + if (call(iface->conn, priv, 0, REMOTE_PROC_INTERFACE_DESTROY, + (xdrproc_t)xdr_remote_interface_destroy_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchInterfaceGetXMLDesc has to be implemented manually */ + +/* remoteDispatchInterfaceIsActive has to be implemented manually */ + +/* remoteDispatchInterfaceLookupByMACString has to be implemented manually */ + +/* remoteDispatchInterfaceLookupByName has to be implemented manually */ + +static int +remoteInterfaceUndefine(virInterfacePtr iface) +{ + int rv = -1; + struct private_data *priv = iface->conn->interfacePrivateData; + remote_interface_undefine_args args; + + remoteDriverLock(priv); + + make_nonnull_interface(&args.iface, iface); + + if (call(iface->conn, priv, 0, REMOTE_PROC_INTERFACE_UNDEFINE, + (xdrproc_t)xdr_remote_interface_undefine_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchIsSecure has to be implemented manually */ + +/* remoteDispatchListDefinedDomains has to be implemented manually */ + +/* remoteDispatchListDefinedInterfaces has to be implemented manually */ + +/* remoteDispatchListDefinedNetworks has to be implemented manually */ + +/* remoteDispatchListDefinedStoragePools has to be implemented manually */ + +/* remoteDispatchListDomains has to be implemented manually */ + +/* remoteDispatchListInterfaces has to be implemented manually */ + +/* remoteDispatchListNetworks has to be implemented manually */ + +/* remoteDispatchListNWFilters has to be implemented manually */ + +/* remoteDispatchListSecrets has to be implemented manually */ + +/* remoteDispatchListStoragePools has to be implemented manually */ + +static int +remoteNetworkCreate(virNetworkPtr net) +{ + int rv = -1; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_create_args args; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_CREATE, + (xdrproc_t)xdr_remote_network_create_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchNetworkCreateXML has to be implemented manually */ + +/* remoteDispatchNetworkDefineXML has to be implemented manually */ + +static int +remoteNetworkDestroy(virNetworkPtr net) +{ + int rv = -1; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_destroy_args args; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_DESTROY, + (xdrproc_t)xdr_remote_network_destroy_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchNetworkDumpXML has to be implemented manually */ + +/* remoteDispatchNetworkGetAutostart has to be implemented manually */ + +/* remoteDispatchNetworkGetBridgeName has to be implemented manually */ + +/* remoteDispatchNetworkIsActive has to be implemented manually */ + +/* remoteDispatchNetworkIsPersistent has to be implemented manually */ + +/* remoteDispatchNetworkLookupByName has to be implemented manually */ + +/* remoteDispatchNetworkLookupByUUID has to be implemented manually */ + +static int +remoteNetworkSetAutostart(virNetworkPtr net, int autostart) +{ + int rv = -1; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_set_autostart_args args; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + args.autostart = autostart; + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_SET_AUTOSTART, + (xdrproc_t)xdr_remote_network_set_autostart_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNetworkUndefine(virNetworkPtr net) +{ + int rv = -1; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_undefine_args args; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_UNDEFINE, + (xdrproc_t)xdr_remote_network_undefine_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchNodeDeviceCreateXML has to be implemented manually */ + +static int +remoteNodeDeviceDestroy(virNodeDevicePtr dev) +{ + int rv = -1; + struct private_data *priv = dev->conn->devMonPrivateData; + remote_node_device_destroy_args args; + + remoteDriverLock(priv); + + args.name = dev->name; + + if (call(dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_DESTROY, + (xdrproc_t)xdr_remote_node_device_destroy_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchNodeDeviceDettach has to be implemented manually */ + +/* remoteDispatchNodeDeviceDumpXML has to be implemented manually */ + +/* remoteDispatchNodeDeviceGetParent has to be implemented manually */ + +/* remoteDispatchNodeDeviceListCaps has to be implemented manually */ + +/* remoteDispatchNodeDeviceLookupByName has to be implemented manually */ + +/* remoteDispatchNodeDeviceNumOfCaps has to be implemented manually */ + +/* remoteDispatchNodeDeviceReAttach has to be implemented manually */ + +/* remoteDispatchNodeDeviceReset has to be implemented manually */ + +/* remoteDispatchNodeGetCellsFreeMemory has to be implemented manually */ + +/* remoteDispatchNodeGetFreeMemory has to be implemented manually */ + +/* remoteDispatchNodeGetInfo has to be implemented manually */ + +/* remoteDispatchNodeGetSecurityModel has to be implemented manually */ + +/* remoteDispatchNodeListDevices has to be implemented manually */ + +/* remoteDispatchNodeNumOfDevices has to be implemented manually */ + +/* remoteDispatchNumOfDefinedDomains has to be implemented manually */ + +/* remoteDispatchNumOfDefinedInterfaces has to be implemented manually */ + +/* remoteDispatchNumOfDefinedNetworks has to be implemented manually */ + +/* remoteDispatchNumOfDefinedStoragePools has to be implemented manually */ + +/* remoteDispatchNumOfDomains has to be implemented manually */ + +/* remoteDispatchNumOfInterfaces has to be implemented manually */ + +/* remoteDispatchNumOfNetworks has to be implemented manually */ + +/* remoteDispatchNumOfNWFilters has to be implemented manually */ + +/* remoteDispatchNumOfSecrets has to be implemented manually */ + +/* remoteDispatchNumOfStoragePools has to be implemented manually */ + +/* remoteDispatchNWFilterDefineXML has to be implemented manually */ + +/* remoteDispatchNWFilterGetXMLDesc has to be implemented manually */ + +/* remoteDispatchNWFilterLookupByName has to be implemented manually */ + +/* remoteDispatchNWFilterLookupByUUID has to be implemented manually */ + +static int +remoteNWFilterUndefine(virNWFilterPtr nwfilter) +{ + int rv = -1; + struct private_data *priv = nwfilter->conn->nwfilterPrivateData; + remote_nwfilter_undefine_args args; + + remoteDriverLock(priv); + + make_nonnull_nwfilter(&args.nwfilter, nwfilter); + + if (call(nwfilter->conn, priv, 0, REMOTE_PROC_NWFILTER_UNDEFINE, + (xdrproc_t)xdr_remote_nwfilter_undefine_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchOpen has to be implemented manually */ + +/* remoteDispatchSecretDefineXML has to be implemented manually */ + +/* remoteDispatchSecretGetValue has to be implemented manually */ + +/* remoteDispatchSecretGetXMLDesc has to be implemented manually */ + +/* remoteDispatchSecretLookupByUsage has to be implemented manually */ + +/* remoteDispatchSecretLookupByUUID has to be implemented manually */ + +/* remoteDispatchSecretSetValue has to be implemented manually */ + +static int +remoteSecretUndefine(virSecretPtr secret) +{ + int rv = -1; + struct private_data *priv = secret->conn->secretPrivateData; + remote_secret_undefine_args args; + + remoteDriverLock(priv); + + make_nonnull_secret(&args.secret, secret); + + if (call(secret->conn, priv, 0, REMOTE_PROC_SECRET_UNDEFINE, + (xdrproc_t)xdr_remote_secret_undefine_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteStoragePoolBuild(virStoragePoolPtr pool, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_build_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.flags = flags; + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_BUILD, + (xdrproc_t)xdr_remote_storage_pool_build_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteStoragePoolCreate(virStoragePoolPtr pool, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_create_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.flags = flags; + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_CREATE, + (xdrproc_t)xdr_remote_storage_pool_create_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchStoragePoolCreateXML has to be implemented manually */ + +/* remoteDispatchStoragePoolDefineXML has to be implemented manually */ + +static int +remoteStoragePoolDelete(virStoragePoolPtr pool, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_delete_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.flags = flags; + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DELETE, + (xdrproc_t)xdr_remote_storage_pool_delete_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteStoragePoolDestroy(virStoragePoolPtr pool) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_destroy_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DESTROY, + (xdrproc_t)xdr_remote_storage_pool_destroy_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchStoragePoolDumpXML has to be implemented manually */ + +/* remoteDispatchStoragePoolGetAutostart has to be implemented manually */ + +/* remoteDispatchStoragePoolGetInfo has to be implemented manually */ + +/* remoteDispatchStoragePoolIsActive has to be implemented manually */ + +/* remoteDispatchStoragePoolIsPersistent has to be implemented manually */ + +/* remoteDispatchStoragePoolListVolumes has to be implemented manually */ + +/* remoteDispatchStoragePoolLookupByName has to be implemented manually */ + +/* remoteDispatchStoragePoolLookupByUUID has to be implemented manually */ + +/* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */ + +/* remoteDispatchStoragePoolNumOfVolumes has to be implemented manually */ + +static int +remoteStoragePoolRefresh(virStoragePoolPtr pool, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_refresh_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.flags = flags; + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_REFRESH, + (xdrproc_t)xdr_remote_storage_pool_refresh_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteStoragePoolSetAutostart(virStoragePoolPtr pool, int autostart) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_set_autostart_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.autostart = autostart; + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_SET_AUTOSTART, + (xdrproc_t)xdr_remote_storage_pool_set_autostart_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteStoragePoolUndefine(virStoragePoolPtr pool) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_undefine_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_UNDEFINE, + (xdrproc_t)xdr_remote_storage_pool_undefine_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchStorageVolCreateXML has to be implemented manually */ + +/* remoteDispatchStorageVolCreateXMLFrom has to be implemented manually */ + +static int +remoteStorageVolDelete(virStorageVolPtr vol, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = vol->conn->storagePrivateData; + remote_storage_vol_delete_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_vol(&args.vol, vol); + args.flags = flags; + + if (call(vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_DELETE, + (xdrproc_t)xdr_remote_storage_vol_delete_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchStorageVolDownload has to be implemented manually */ + +/* remoteDispatchStorageVolDumpXML has to be implemented manually */ + +/* remoteDispatchStorageVolGetInfo has to be implemented manually */ + +/* remoteDispatchStorageVolGetPath has to be implemented manually */ + +/* remoteDispatchStorageVolLookupByKey has to be implemented manually */ + +/* remoteDispatchStorageVolLookupByName has to be implemented manually */ + +/* remoteDispatchStorageVolLookupByPath has to be implemented manually */ + +/* remoteDispatchStorageVolUpload has to be implemented manually */ + +static int +remoteStorageVolWipe(virStorageVolPtr vol, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = vol->conn->storagePrivateData; + remote_storage_vol_wipe_args args; + + remoteDriverLock(priv); + + make_nonnull_storage_vol(&args.vol, vol); + args.flags = flags; + + if (call(vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_WIPE, + (xdrproc_t)xdr_remote_storage_vol_wipe_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +/* remoteDispatchSupportsFeature has to be implemented manually */ + diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 934fdda..bf4d866 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -2249,99 +2249,6 @@ done: } static int -remoteDomainSuspend (virDomainPtr domain) -{ - int rv = -1; - remote_domain_suspend_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SUSPEND, - (xdrproc_t) xdr_remote_domain_suspend_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainResume (virDomainPtr domain) -{ - int rv = -1; - remote_domain_resume_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_RESUME, - (xdrproc_t) xdr_remote_domain_resume_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainShutdown (virDomainPtr domain) -{ - int rv = -1; - remote_domain_shutdown_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SHUTDOWN, - (xdrproc_t) xdr_remote_domain_shutdown_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainReboot (virDomainPtr domain, unsigned int flags) -{ - int rv = -1; - remote_domain_reboot_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_REBOOT, - (xdrproc_t) xdr_remote_domain_reboot_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainDestroy (virDomainPtr domain) { int rv = -1; @@ -2417,81 +2324,6 @@ done: } static int -remoteDomainSetMaxMemory (virDomainPtr domain, unsigned long memory) -{ - int rv = -1; - remote_domain_set_max_memory_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.memory = memory; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_MAX_MEMORY, - (xdrproc_t) xdr_remote_domain_set_max_memory_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainSetMemory (virDomainPtr domain, unsigned long memory) -{ - int rv = -1; - remote_domain_set_memory_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.memory = memory; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_MEMORY, - (xdrproc_t) xdr_remote_domain_set_memory_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainSetMemoryFlags (virDomainPtr domain, unsigned long memory, unsigned int flags) -{ - int rv = -1; - remote_domain_set_memory_flags_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.memory = memory; - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_MEMORY_FLAGS, - (xdrproc_t) xdr_remote_domain_set_memory_flags_args, - (char *) &args, - (xdrproc_t) xdr_void, - (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainSetMemoryParameters (virDomainPtr domain, virMemoryParameterPtr params, int nparams, @@ -2861,129 +2693,6 @@ done: } static int -remoteDomainSave (virDomainPtr domain, const char *to) -{ - int rv = -1; - remote_domain_save_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.to = (char *) to; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SAVE, - (xdrproc_t) xdr_remote_domain_save_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainRestore (virConnectPtr conn, const char *from) -{ - int rv = -1; - remote_domain_restore_args args; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - args.from = (char *) from; - - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_RESTORE, - (xdrproc_t) xdr_remote_domain_restore_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainCoreDump (virDomainPtr domain, const char *to, int flags) -{ - int rv = -1; - remote_domain_core_dump_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.to = (char *) to; - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_CORE_DUMP, - (xdrproc_t) xdr_remote_domain_core_dump_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainSetVcpus (virDomainPtr domain, unsigned int nvcpus) -{ - int rv = -1; - remote_domain_set_vcpus_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.nvcpus = nvcpus; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_VCPUS, - (xdrproc_t) xdr_remote_domain_set_vcpus_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainSetVcpusFlags (virDomainPtr domain, unsigned int nvcpus, - unsigned int flags) -{ - int rv = -1; - remote_domain_set_vcpus_flags_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.nvcpus = nvcpus; - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_VCPUS_FLAGS, - (xdrproc_t) xdr_remote_domain_set_vcpus_flags_args, - (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainGetVcpusFlags (virDomainPtr domain, unsigned int flags) { int rv = -1; @@ -3696,155 +3405,6 @@ done: } static int -remoteDomainUndefine (virDomainPtr domain) -{ - int rv = -1; - remote_domain_undefine_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_UNDEFINE, - (xdrproc_t) xdr_remote_domain_undefine_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainAttachDevice (virDomainPtr domain, const char *xml) -{ - int rv = -1; - remote_domain_attach_device_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.xml = (char *) xml; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_ATTACH_DEVICE, - (xdrproc_t) xdr_remote_domain_attach_device_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainAttachDeviceFlags (virDomainPtr domain, const char *xml, - unsigned int flags) -{ - int rv = -1; - remote_domain_attach_device_flags_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.xml = (char *) xml; - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_ATTACH_DEVICE_FLAGS, - (xdrproc_t) xdr_remote_domain_attach_device_flags_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainDetachDevice (virDomainPtr domain, const char *xml) -{ - int rv = -1; - remote_domain_detach_device_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.xml = (char *) xml; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_DETACH_DEVICE, - (xdrproc_t) xdr_remote_domain_detach_device_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainDetachDeviceFlags (virDomainPtr domain, const char *xml, - unsigned int flags) -{ - int rv = -1; - remote_domain_detach_device_flags_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.xml = (char *) xml; - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_DETACH_DEVICE_FLAGS, - (xdrproc_t) xdr_remote_domain_detach_device_flags_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainUpdateDeviceFlags (virDomainPtr domain, const char *xml, - unsigned int flags) -{ - int rv = -1; - remote_domain_update_device_flags_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.xml = (char *) xml; - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_UPDATE_DEVICE_FLAGS, - (xdrproc_t) xdr_remote_domain_update_device_flags_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainGetAutostart (virDomainPtr domain, int *autostart) { int rv = -1; @@ -3870,30 +3430,6 @@ done: return rv; } -static int -remoteDomainSetAutostart (virDomainPtr domain, int autostart) -{ - int rv = -1; - remote_domain_set_autostart_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.autostart = autostart; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SET_AUTOSTART, - (xdrproc_t) xdr_remote_domain_set_autostart_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - static char * remoteDomainGetSchedulerType (virDomainPtr domain, int *nparams) { @@ -4311,30 +3847,6 @@ done: } static int -remoteDomainManagedSave (virDomainPtr domain, unsigned int flags) -{ - int rv = -1; - remote_domain_managed_save_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_MANAGED_SAVE, - (xdrproc_t) xdr_remote_domain_managed_save_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainHasManagedSaveImage (virDomainPtr domain, unsigned int flags) { int rv = -1; @@ -4359,30 +3871,6 @@ done: return rv; } -static int -remoteDomainManagedSaveRemove (virDomainPtr domain, unsigned int flags) -{ - int rv = -1; - remote_domain_managed_save_remove_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_MANAGED_SAVE_REMOVE, - (xdrproc_t) xdr_remote_domain_managed_save_remove_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -4762,75 +4250,6 @@ done: return net; } -static int -remoteNetworkUndefine (virNetworkPtr network) -{ - int rv = -1; - remote_network_undefine_args args; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_UNDEFINE, - (xdrproc_t) xdr_remote_network_undefine_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteNetworkCreate (virNetworkPtr network) -{ - int rv = -1; - remote_network_create_args args; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_CREATE, - (xdrproc_t) xdr_remote_network_create_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteNetworkDestroy (virNetworkPtr network) -{ - int rv = -1; - remote_network_destroy_args args; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_DESTROY, - (xdrproc_t) xdr_remote_network_destroy_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - static char * remoteNetworkDumpXML (virNetworkPtr network, int flags) { @@ -4911,33 +4330,6 @@ done: return rv; } -static int -remoteNetworkSetAutostart (virNetworkPtr network, int autostart) -{ - int rv = -1; - remote_network_set_autostart_args args; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - args.autostart = autostart; - - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_SET_AUTOSTART, - (xdrproc_t) xdr_remote_network_set_autostart_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - - - - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -5299,79 +4691,6 @@ done: return iface; } -static int -remoteInterfaceUndefine (virInterfacePtr iface) -{ - int rv = -1; - remote_interface_undefine_args args; - struct private_data *priv = iface->conn->interfacePrivateData; - - remoteDriverLock(priv); - - make_nonnull_interface (&args.iface, iface); - - if (call (iface->conn, priv, 0, REMOTE_PROC_INTERFACE_UNDEFINE, - (xdrproc_t) xdr_remote_interface_undefine_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteInterfaceCreate (virInterfacePtr iface, - unsigned int flags) -{ - int rv = -1; - remote_interface_create_args args; - struct private_data *priv = iface->conn->interfacePrivateData; - - remoteDriverLock(priv); - - make_nonnull_interface (&args.iface, iface); - args.flags = flags; - - if (call (iface->conn, priv, 0, REMOTE_PROC_INTERFACE_CREATE, - (xdrproc_t) xdr_remote_interface_create_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteInterfaceDestroy (virInterfacePtr iface, - unsigned int flags) -{ - int rv = -1; - remote_interface_destroy_args args; - struct private_data *priv = iface->conn->interfacePrivateData; - - remoteDriverLock(priv); - - make_nonnull_interface (&args.iface, iface); - args.flags = flags; - - if (call (iface->conn, priv, 0, REMOTE_PROC_INTERFACE_DESTROY, - (xdrproc_t) xdr_remote_interface_destroy_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -5826,151 +5145,6 @@ done: } static int -remoteStoragePoolUndefine (virStoragePoolPtr pool) -{ - int rv = -1; - remote_storage_pool_undefine_args args; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_UNDEFINE, - (xdrproc_t) xdr_remote_storage_pool_undefine_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteStoragePoolCreate (virStoragePoolPtr pool, unsigned int flags) -{ - int rv = -1; - remote_storage_pool_create_args args; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - args.flags = flags; - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_CREATE, - (xdrproc_t) xdr_remote_storage_pool_create_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteStoragePoolBuild (virStoragePoolPtr pool, - unsigned int flags) -{ - int rv = -1; - remote_storage_pool_build_args args; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - args.flags = flags; - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_BUILD, - (xdrproc_t) xdr_remote_storage_pool_build_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteStoragePoolDestroy (virStoragePoolPtr pool) -{ - int rv = -1; - remote_storage_pool_destroy_args args; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DESTROY, - (xdrproc_t) xdr_remote_storage_pool_destroy_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteStoragePoolDelete (virStoragePoolPtr pool, - unsigned int flags) -{ - int rv = -1; - remote_storage_pool_delete_args args; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - args.flags = flags; - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DELETE, - (xdrproc_t) xdr_remote_storage_pool_delete_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteStoragePoolRefresh (virStoragePoolPtr pool, - unsigned int flags) -{ - int rv = -1; - remote_storage_pool_refresh_args args; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - args.flags = flags; - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_REFRESH, - (xdrproc_t) xdr_remote_storage_pool_refresh_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteStoragePoolGetInfo (virStoragePoolPtr pool, virStoragePoolInfoPtr info) { int rv = -1; @@ -6056,31 +5230,6 @@ done: } static int -remoteStoragePoolSetAutostart (virStoragePoolPtr pool, int autostart) -{ - int rv = -1; - remote_storage_pool_set_autostart_args args; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - args.autostart = autostart; - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_SET_AUTOSTART, - (xdrproc_t) xdr_remote_storage_pool_set_autostart_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - - -static int remoteStoragePoolNumOfVolumes (virStoragePoolPtr pool) { int rv = -1; @@ -6307,57 +5456,6 @@ done: } static int -remoteStorageVolDelete (virStorageVolPtr vol, - unsigned int flags) -{ - int rv = -1; - remote_storage_vol_delete_args args; - struct private_data *priv = vol->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_vol (&args.vol, vol); - args.flags = flags; - - if (call (vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_DELETE, - (xdrproc_t) xdr_remote_storage_vol_delete_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteStorageVolWipe(virStorageVolPtr vol, - unsigned int flags) -{ - int rv = -1; - remote_storage_vol_wipe_args args; - struct private_data *priv = vol->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_vol(&args.vol, vol); - args.flags = flags; - - if (call(vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_WIPE, - (xdrproc_t) xdr_remote_storage_vol_wipe_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - - -static int remoteStorageVolGetInfo (virStorageVolPtr vol, virStorageVolInfoPtr info) { int rv = -1; @@ -6863,29 +5961,6 @@ done: return dev; } -static int -remoteNodeDeviceDestroy(virNodeDevicePtr dev) -{ - int rv = -1; - remote_node_device_destroy_args args; - struct private_data *priv = dev->conn->devMonPrivateData; - - remoteDriverLock(priv); - - args.name = dev->name; - - if (call(dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_DESTROY, - (xdrproc_t) xdr_remote_node_device_destroy_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - /* ------------------------------------------------------------- */ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -6999,31 +6074,6 @@ done: return net; } - -static int -remoteNWFilterUndefine (virNWFilterPtr nwfilter) -{ - int rv = -1; - remote_nwfilter_undefine_args args; - struct private_data *priv = nwfilter->conn->nwfilterPrivateData; - - remoteDriverLock(priv); - - make_nonnull_nwfilter (&args.nwfilter, nwfilter); - - if (call (nwfilter->conn, priv, 0, REMOTE_PROC_NWFILTER_UNDEFINE, - (xdrproc_t) xdr_remote_nwfilter_undefine_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static int remoteListNWFilters (virConnectPtr conn, char **const names, int maxnames) { @@ -8252,7 +7302,7 @@ done: } static int -remoteSecretListSecrets (virConnectPtr conn, char **uuids, int maxuuids) +remoteListSecrets (virConnectPtr conn, char **uuids, int maxuuids) { int rv = -1; int i; @@ -8472,30 +7522,6 @@ done: return rv; } -static int -remoteSecretUndefine (virSecretPtr secret) -{ - int rv = -1; - remote_secret_undefine_args args; - struct private_data *priv = secret->conn->secretPrivateData; - - remoteDriverLock (priv); - - make_nonnull_secret (&args.secret, secret); - - if (call (secret->conn, priv, 0, REMOTE_PROC_SECRET_UNDEFINE, - (xdrproc_t) xdr_remote_secret_undefine_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock (priv); - return rv; -} - - static struct private_stream_data * remoteStreamOpen(virStreamPtr st, unsigned int proc_nr, @@ -9141,89 +8167,6 @@ done: return rv; } - -static int -remoteDomainAbortJob (virDomainPtr domain) -{ - int rv = -1; - remote_domain_abort_job_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_ABORT_JOB, - (xdrproc_t) xdr_remote_domain_abort_job_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - - -static int -remoteDomainMigrateSetMaxDowntime(virDomainPtr domain, - unsigned long long downtime, - unsigned int flags) -{ - struct private_data *priv = domain->conn->privateData; - remote_domain_migrate_set_max_downtime_args args; - int rv = -1; - - remoteDriverLock(priv); - - make_nonnull_domain(&args.dom, domain); - args.downtime = downtime; - args.flags = flags; - - if (call(domain->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_DOWNTIME, - (xdrproc_t) xdr_remote_domain_migrate_set_max_downtime_args, - (char *) &args, - (xdrproc_t) xdr_void, - (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainMigrateSetMaxSpeed(virDomainPtr domain, - unsigned long bandwidth, - unsigned int flags) -{ - struct private_data *priv = domain->conn->privateData; - remote_domain_migrate_set_max_speed_args args; - int rv = -1; - - remoteDriverLock(priv); - - make_nonnull_domain(&args.dom, domain); - args.bandwidth = bandwidth; - args.flags = flags; - - if (call(domain->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_SPEED, - (xdrproc_t) xdr_remote_domain_migrate_set_max_speed_args, - (char *) &args, - (xdrproc_t) xdr_void, - (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - static virDomainSnapshotPtr remoteDomainSnapshotCreateXML(virDomainPtr domain, const char *xmlDesc, @@ -9458,58 +8401,6 @@ done: return snapshot; } - -static int -remoteDomainRevertToSnapshot (virDomainSnapshotPtr snapshot, - unsigned int flags) -{ - int rv = -1; - remote_domain_revert_to_snapshot_args args; - struct private_data *priv = snapshot->domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain_snapshot(&args.snap, snapshot); - args.flags = flags; - - if (call (snapshot->domain->conn, priv, 0, REMOTE_PROC_DOMAIN_REVERT_TO_SNAPSHOT, - (xdrproc_t) xdr_remote_domain_revert_to_snapshot_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - - -static int -remoteDomainSnapshotDelete (virDomainSnapshotPtr snapshot, - unsigned int flags) -{ - int rv = -1; - remote_domain_snapshot_delete_args args; - struct private_data *priv = snapshot->domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain_snapshot(&args.snap, snapshot); - args.flags = flags; - - if (call (snapshot->domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_DELETE, - (xdrproc_t) xdr_remote_domain_snapshot_delete_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteDomainEventRegisterAny(virConnectPtr conn, virDomainPtr dom, int eventID, @@ -9770,6 +8661,9 @@ done: return rv; } +#include "remote_client_bodies.c" +#include "qemu_client_bodies.c" + /*----------------------------------------------------------------------*/ static struct remote_thread_call * @@ -11389,7 +10283,7 @@ static virSecretDriver secret_driver = { .open = remoteSecretOpen, .close = remoteSecretClose, .numOfSecrets = remoteSecretNumOfSecrets, - .listSecrets = remoteSecretListSecrets, + .listSecrets = remoteListSecrets, .lookupByUUID = remoteSecretLookupByUUID, .lookupByUsage = remoteSecretLookupByUsage, .defineXML = remoteSecretDefineXML, -- 1.7.0.4

--- daemon/remote_generator.pl | 122 +++-- src/remote/remote_client_bodies.c | 1097 +++++++++++++++++++++++++++++++++++-- src/remote/remote_driver.c | 1081 +------------------------------------ 3 files changed, 1120 insertions(+), 1180 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 73d1596..a973b21 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -751,63 +751,42 @@ elsif ($opt_k) { "AuthPolkit", "CPUBaseline", - "CPUCompare", "DomainBlockStats", "DomainCreate", "DomainCreateXML", "DomainDefineXML", "DomainDestroy", - "DomainDumpXML", "DomainGetAutostart", "DomainGetBlockInfo", "DomainGetInfo", "StoragePoolLookupByUUID", - "StoragePoolNumOfVolumes", "NodeDeviceCreateXML", "DomainGetJobInfo", - "DomainGetMaxMemory", - "DomainGetOSType", - "DomainGetVcpusFlags", - "HasCurrentSnapshot", "DomainInterfaceStats", - "DomainIsActive", - "DomainIsPersistent", - "DomainIsUpdated", "DomainLookupByID", "DomainLookupByName", "DomainLookupByUIID", "DomainMigrateFinish", - "DomainGetMaxVcpus", - "DomainHasCurrentSnapshot", "NWFilterDefineXML", - "NumOfStoragePools", "NWFilterLookupByName", "NWFilterLookupByUUID", "SecretLookupByUUID", "SecretLookupByUsage", "StoragePoolCreateXML", - "StoragePoolIsActive", - "DomainHasManagedSaveImage", "DomainLookupByUUID", "DomainMigratePerform", "DomainMigrateFinish2", "DomainSnapshotCreateXML", - "DomainSnapshotDumpXML", - "DomainSnapshotNum", "DomainSnapshotCurrent", "DomainSnapshotListNames", - "GetCapabilities", - "GetHostname", "GetLibVersion", "GetMaxVcpus", "DomainSnapshotLookupByName", "DomainXMLFromNative", "FindStoragePoolSources", - "GetSysinfo", "GetVersion", "GetLibVersion", "InterfaceDefineXML", - "InterfaceGetXMLDesc", "InterfaceLookupByName", "IsSecure", "ListDefinedDomains", @@ -820,40 +799,22 @@ elsif ($opt_k) { "StorageVolCreateXML", "StorageVolLookupByName", "StorageVolLookupByKey", - "StoragePoolIsPersistent", "StoragePoolGetInfo", - "StorageVolGetPath", "StorageVolCreateXMLFrom", "StoragePoolLookupByName", - "SecretGetXMLDesc", - "NWFilterGetXMLDesc", - "NumOfNWFilters", - "NumOfInterfaces", - "NumOfDomains", - "NumOfDefinedStoragePools", "NodeListDevices", "NodeGetCellsFreeMemory", - "NodeDeviceDumpXML", - "NetworkIsActive", "ListDefinedNetworks", "DomainXMLToNative", - "StorageVolDumpXML", "StoragePoolListVolumes", - "StoragePoolDumpXML", "SecretDefineXML", - "NumOfDefinedNetworks", - "InterfaceIsActive", "ListDomains", "ListStoragePools", - "NetworkDumpXML", "NetworkGetAutostart", - "NetworkGetBridgeName", "StoragePoolLookupByVolume", "StoragePoolGetAutostart", "SecretSetValue", - "NumOfDefinedInterfaces", "StoragePoolDefineXML", - "NodeNumOfDevices", "NodeGetInfo", "GetURI", "InterfaceLookupByMACString", @@ -861,18 +822,13 @@ elsif ($opt_k) { "NetworkDefineXML", "NetworkLookupByName", "ListDefinedStoragePools", - "NetworkIsPersistent", "NodeDeviceDettach", "NodeDeviceLookupByName", "NodeGetFreeMemory", - "NumOfDefinedDomains", "ListNetworks", "NodeDeviceListCaps", "NodeDeviceReset", - "NumOfNetworks", "NetworkLookupByUUID", - "NodeDeviceNumOfCaps", - "NumOfSecrets", "NodeDeviceReAttach", "ListSecrets", @@ -916,13 +872,16 @@ elsif ($opt_k) { my @args_list = (); my @vars_list = (); my @setters_list = (); + my @ret_list = (); my $priv_src = "conn"; my $priv_name = "privateData"; - my $args = "&args"; - my $ret = "&ret"; + my $call_args = "&args"; + my $call_ret = "&ret"; + my $single_ret_var = "int rv = -1"; + my $single_ret_type = "int"; if ($call->{args} eq "void") { - $args = "NULL"; + $call_args = "NULL"; } else { push(@vars_list, "$call->{args} args"); @@ -930,14 +889,14 @@ elsif ($opt_k) { my $has_node_device = 0; # node device is special - if ($call->{args} =~ m/^remote_node_device_/) { + if ($call->{args} =~ m/^remote_node_/) { $has_node_device = 1; + $priv_name = "devMonPrivateData"; } foreach my $args_member (@{$call->{args_members}}) { if ($args_member =~ m/^remote_nonnull_string name;/ and $has_node_device) { $priv_src = "dev->conn"; - $priv_name = "devMonPrivateData"; push(@args_list, "virNodeDevicePtr dev"); push(@setters_list, "args.name = dev->name;"); } elsif ($args_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|interface|secret|nwfilter|domain_snapshot) (\S+);/) { @@ -960,6 +919,9 @@ elsif ($opt_k) { push(@args_list, "vir${type_name}Ptr $2"); push(@setters_list, "make_nonnull_$1(&args.$2, $2);"); + } elsif ($args_member =~ m/^remote_string (\S+);/) { + push(@args_list, "const char *$1"); + push(@setters_list, "args.$1 = $1 ? (char **)&$1 : NULL;"); } elsif ($args_member =~ m/^remote_nonnull_string (\S+);/) { push(@args_list, "const char *$1"); push(@setters_list, "args.$1 = (char *)$1;"); @@ -976,7 +938,9 @@ elsif ($opt_k) { if ($type_name eq "int") { # fix bad decisions in the xdr protocol if ($arg_name eq "flags" and - $call->{ProcName} ne "DomainCoreDump") { + $call->{ProcName} ne "DomainCoreDump" and + $call->{ProcName} ne "DomainDumpXML" and + $call->{ProcName} ne "NetworkDumpXML") { $type_name = "unsigned int"; } elsif ($arg_name eq "nvcpus" and $call->{ProcName} eq "DomainSetVcpus") { @@ -1005,21 +969,52 @@ elsif ($opt_k) { } } + # fix priv_name for the NumOf* functions + if ($priv_name eq "privateData" and + !($call->{ProcName} =~ m/Domains/) and + $call->{ProcName} =~ m/NumOf(Defined|Domain)*(\S+)s/) { + my $prefix = lc $2; + $prefix =~ s/(pool|vol)$//; + $priv_name = "${prefix}PrivateData"; + } + if ($call->{ret} eq "void") { - $ret = "NULL"; + $call_ret = "NULL"; } else { push(@vars_list, "$call->{ret} ret"); + + foreach my $ret_member (@{$call->{ret_members}}) { + if ($ret_member =~ m/remote_nonnull_string (\S+);/) { + push(@ret_list, "rv = ret.$1;"); + $single_ret_var = "char *rv = NULL"; + $single_ret_type = "char *"; + } elsif ($ret_member =~ m/^int (\S+);/) { + push(@ret_list, "rv = ret.$1;"); + $single_ret_var = "int rv = -1"; + $single_ret_type = "int"; + } elsif ($ret_member =~ m/hyper (\S+);/) { + push(@ret_list, "rv = ret.$1;"); + $single_ret_var = "unsigned long rv = 0"; + $single_ret_type = "unsigned long"; + } else { + die "unhandled type for return value: $ret_member"; + } + } + } + + if (! @args_list) { + push(@args_list, "virConnectPtr conn"); } # print function - print "static int\n"; + print "static $single_ret_type\n"; print "remote$call->{ProcName}("; print join(", ", @args_list); print ")\n"; print "{\n"; - print " int rv = -1;\n"; + print " $single_ret_var;\n"; print " struct private_data *priv = $priv_src->$priv_name;\n"; foreach my $var (@vars_list) { @@ -1028,9 +1023,9 @@ elsif ($opt_k) { print "\n"; print " remoteDriverLock(priv);\n"; - print "\n"; if (@setters_list) { + print "\n"; print " "; } @@ -1040,13 +1035,26 @@ elsif ($opt_k) { print "\n"; } + if ($call->{ret} ne "void") { + print "\n"; + print " memset(&ret, 0, sizeof ret);\n"; + } + print "\n"; print " if (call($priv_src, priv, 0, ${procprefix}_PROC_$call->{UC_NAME},\n"; - print " (xdrproc_t)xdr_$call->{args}, (char *)$args,\n"; - print " (xdrproc_t)xdr_$call->{ret}, (char *)$ret) == -1)\n"; + print " (xdrproc_t)xdr_$call->{args}, (char *)$call_args,\n"; + print " (xdrproc_t)xdr_$call->{ret}, (char *)$call_ret) == -1)\n"; print " goto done;\n"; print "\n"; - print " rv = 0;\n"; + + if (@ret_list) { + print " "; + print join("\n ", @ret_list); + print "\n"; + } else { + print " rv = 0;\n"; + } + print "\n"; print "done:\n"; print " remoteDriverUnlock(priv);\n"; diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c index 07ddfbf..b878832 100644 --- a/src/remote/remote_client_bodies.c +++ b/src/remote/remote_client_bodies.c @@ -16,7 +16,32 @@ /* remoteDispatchCPUBaseline has to be implemented manually */ -/* remoteDispatchCPUCompare has to be implemented manually */ +static int +remoteCPUCompare(virConnectPtr conn, const char *xml, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_cpu_compare_args args; + remote_cpu_compare_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_CPU_COMPARE, + (xdrproc_t)xdr_remote_cpu_compare_args, (char *)&args, + (xdrproc_t)xdr_remote_cpu_compare_ret, (char *)&ret) == -1) + goto done; + + rv = ret.result; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainAbortJob(virDomainPtr dom) @@ -178,7 +203,32 @@ done: return rv; } -/* remoteDispatchDomainDumpXML has to be implemented manually */ +static char * +remoteDomainDumpXML(virDomainPtr dom, int flags) +{ + char *rv = NULL; + struct private_data *priv = dom->conn->privateData; + remote_domain_dump_xml_args args; + remote_domain_dump_xml_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_DUMP_XML, + (xdrproc_t)xdr_remote_domain_dump_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_dump_xml_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainEventsDeregister has to be implemented manually */ @@ -198,13 +248,85 @@ done: /* remoteDispatchDomainGetJobInfo has to be implemented manually */ -/* remoteDispatchDomainGetMaxMemory has to be implemented manually */ +static unsigned long +remoteDomainGetMaxMemory(virDomainPtr dom) +{ + unsigned long rv = 0; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_max_memory_args args; + remote_domain_get_max_memory_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_MAX_MEMORY, + (xdrproc_t)xdr_remote_domain_get_max_memory_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_max_memory_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchDomainGetMaxVcpus has to be implemented manually */ + rv = ret.memory; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainGetMaxVcpus(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_max_vcpus_args args; + remote_domain_get_max_vcpus_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_MAX_VCPUS, + (xdrproc_t)xdr_remote_domain_get_max_vcpus_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_max_vcpus_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainGetMemoryParameters has to be implemented manually */ -/* remoteDispatchDomainGetOSType has to be implemented manually */ +static char * +remoteDomainGetOSType(virDomainPtr dom) +{ + char *rv = NULL; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_os_type_args args; + remote_domain_get_os_type_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_OS_TYPE, + (xdrproc_t)xdr_remote_domain_get_os_type_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_os_type_ret, (char *)&ret) == -1) + goto done; + + rv = ret.type; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainGetSchedulerParameters has to be implemented manually */ @@ -214,19 +336,166 @@ done: /* remoteDispatchDomainGetVcpus has to be implemented manually */ -/* remoteDispatchDomainGetVcpusFlags has to be implemented manually */ +static int +remoteDomainGetVcpusFlags(virDomainPtr dom, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_vcpus_flags_args args; + remote_domain_get_vcpus_flags_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_VCPUS_FLAGS, + (xdrproc_t)xdr_remote_domain_get_vcpus_flags_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_vcpus_flags_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainHasCurrentSnapshot(virDomainPtr dom, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_has_current_snapshot_args args; + remote_domain_has_current_snapshot_ret ret; -/* remoteDispatchDomainHasCurrentSnapshot has to be implemented manually */ + remoteDriverLock(priv); -/* remoteDispatchDomainHasManagedSaveImage has to be implemented manually */ + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_HAS_CURRENT_SNAPSHOT, + (xdrproc_t)xdr_remote_domain_has_current_snapshot_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_has_current_snapshot_ret, (char *)&ret) == -1) + goto done; + + rv = ret.result; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainHasManagedSaveImage(virDomainPtr dom, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_has_managed_save_image_args args; + remote_domain_has_managed_save_image_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_HAS_MANAGED_SAVE_IMAGE, + (xdrproc_t)xdr_remote_domain_has_managed_save_image_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_has_managed_save_image_ret, (char *)&ret) == -1) + goto done; + + rv = ret.result; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainInterfaceStats has to be implemented manually */ -/* remoteDispatchDomainIsActive has to be implemented manually */ +static int +remoteDomainIsActive(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_is_active_args args; + remote_domain_is_active_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_IS_ACTIVE, + (xdrproc_t)xdr_remote_domain_is_active_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_is_active_ret, (char *)&ret) == -1) + goto done; + + rv = ret.active; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainIsPersistent(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_is_persistent_args args; + remote_domain_is_persistent_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_IS_PERSISTENT, + (xdrproc_t)xdr_remote_domain_is_persistent_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_is_persistent_ret, (char *)&ret) == -1) + goto done; + + rv = ret.persistent; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainIsUpdated(virDomainPtr dom) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_is_updated_args args; + remote_domain_is_updated_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_IS_UPDATED, + (xdrproc_t)xdr_remote_domain_is_updated_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_is_updated_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchDomainIsPersistent has to be implemented manually */ + rv = ret.updated; -/* remoteDispatchDomainIsUpdated has to be implemented manually */ +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainLookupByID has to be implemented manually */ @@ -673,13 +942,63 @@ done: return rv; } -/* remoteDispatchDomainSnapshotDumpXML has to be implemented manually */ +static char * +remoteDomainSnapshotDumpXML(virDomainSnapshotPtr snap, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = snap->domain->conn->privateData; + remote_domain_snapshot_dump_xml_args args; + remote_domain_snapshot_dump_xml_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain_snapshot(&args.snap, snap); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(snap->domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_DUMP_XML, + (xdrproc_t)xdr_remote_domain_snapshot_dump_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_snapshot_dump_xml_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainSnapshotListNames has to be implemented manually */ /* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */ -/* remoteDispatchDomainSnapshotNum has to be implemented manually */ +static int +remoteDomainSnapshotNum(virDomainPtr dom, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_snapshot_num_args args; + remote_domain_snapshot_num_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_NUM, + (xdrproc_t)xdr_remote_domain_snapshot_num_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_snapshot_num_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainSuspend(virDomainPtr dom) @@ -758,15 +1077,81 @@ done: /* remoteDispatchFindStoragePoolSources has to be implemented manually */ -/* remoteDispatchGetCapabilities has to be implemented manually */ +static char * +remoteGetCapabilities(virConnectPtr conn) +{ + char *rv = NULL; + struct private_data *priv = conn->privateData; + remote_get_capabilities_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_GET_CAPABILITIES, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_get_capabilities_ret, (char *)&ret) == -1) + goto done; + + rv = ret.capabilities; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static char * +remoteGetHostname(virConnectPtr conn) +{ + char *rv = NULL; + struct private_data *priv = conn->privateData; + remote_get_hostname_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); -/* remoteDispatchGetHostname has to be implemented manually */ + if (call(conn, priv, 0, REMOTE_PROC_GET_HOSTNAME, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_get_hostname_ret, (char *)&ret) == -1) + goto done; + + rv = ret.hostname; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchGetLibVersion has to be implemented manually */ /* remoteDispatchGetMaxVcpus has to be implemented manually */ -/* remoteDispatchGetSysinfo has to be implemented manually */ +static char * +remoteGetSysinfo(virConnectPtr conn, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = conn->privateData; + remote_get_sysinfo_args args; + remote_get_sysinfo_ret ret; + + remoteDriverLock(priv); + + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_GET_SYSINFO, + (xdrproc_t)xdr_remote_get_sysinfo_args, (char *)&args, + (xdrproc_t)xdr_remote_get_sysinfo_ret, (char *)&ret) == -1) + goto done; + + rv = ret.sysinfo; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchGetType has to be implemented manually */ @@ -824,9 +1209,58 @@ done: return rv; } -/* remoteDispatchInterfaceGetXMLDesc has to be implemented manually */ +static char * +remoteInterfaceGetXMLDesc(virInterfacePtr iface, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = iface->conn->interfacePrivateData; + remote_interface_get_xml_desc_args args; + remote_interface_get_xml_desc_ret ret; + + remoteDriverLock(priv); + + make_nonnull_interface(&args.iface, iface); + args.flags = flags; + + memset(&ret, 0, sizeof ret); -/* remoteDispatchInterfaceIsActive has to be implemented manually */ + if (call(iface->conn, priv, 0, REMOTE_PROC_INTERFACE_GET_XML_DESC, + (xdrproc_t)xdr_remote_interface_get_xml_desc_args, (char *)&args, + (xdrproc_t)xdr_remote_interface_get_xml_desc_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteInterfaceIsActive(virInterfacePtr iface) +{ + int rv = -1; + struct private_data *priv = iface->conn->interfacePrivateData; + remote_interface_is_active_args args; + remote_interface_is_active_ret ret; + + remoteDriverLock(priv); + + make_nonnull_interface(&args.iface, iface); + + memset(&ret, 0, sizeof ret); + + if (call(iface->conn, priv, 0, REMOTE_PROC_INTERFACE_IS_ACTIVE, + (xdrproc_t)xdr_remote_interface_is_active_args, (char *)&args, + (xdrproc_t)xdr_remote_interface_is_active_ret, (char *)&ret) == -1) + goto done; + + rv = ret.active; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchInterfaceLookupByMACString has to be implemented manually */ @@ -927,15 +1361,112 @@ done: return rv; } -/* remoteDispatchNetworkDumpXML has to be implemented manually */ +static char * +remoteNetworkDumpXML(virNetworkPtr net, int flags) +{ + char *rv = NULL; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_dump_xml_args args; + remote_network_dump_xml_ret ret; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_DUMP_XML, + (xdrproc_t)xdr_remote_network_dump_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_network_dump_xml_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNetworkGetAutostart has to be implemented manually */ -/* remoteDispatchNetworkGetBridgeName has to be implemented manually */ +static char * +remoteNetworkGetBridgeName(virNetworkPtr net) +{ + char *rv = NULL; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_get_bridge_name_args args; + remote_network_get_bridge_name_ret ret; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + + memset(&ret, 0, sizeof ret); + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_GET_BRIDGE_NAME, + (xdrproc_t)xdr_remote_network_get_bridge_name_args, (char *)&args, + (xdrproc_t)xdr_remote_network_get_bridge_name_ret, (char *)&ret) == -1) + goto done; + + rv = ret.name; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNetworkIsActive(virNetworkPtr net) +{ + int rv = -1; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_is_active_args args; + remote_network_is_active_ret ret; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + + memset(&ret, 0, sizeof ret); + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_IS_ACTIVE, + (xdrproc_t)xdr_remote_network_is_active_args, (char *)&args, + (xdrproc_t)xdr_remote_network_is_active_ret, (char *)&ret) == -1) + goto done; + + rv = ret.active; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNetworkIsPersistent(virNetworkPtr net) +{ + int rv = -1; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_is_persistent_args args; + remote_network_is_persistent_ret ret; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + + memset(&ret, 0, sizeof ret); -/* remoteDispatchNetworkIsActive has to be implemented manually */ + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_IS_PERSISTENT, + (xdrproc_t)xdr_remote_network_is_persistent_args, (char *)&args, + (xdrproc_t)xdr_remote_network_is_persistent_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchNetworkIsPersistent has to be implemented manually */ + rv = ret.persistent; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNetworkLookupByName has to be implemented manually */ @@ -1015,7 +1546,32 @@ done: /* remoteDispatchNodeDeviceDettach has to be implemented manually */ -/* remoteDispatchNodeDeviceDumpXML has to be implemented manually */ +static char * +remoteNodeDeviceDumpXML(virNodeDevicePtr dev, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = dev->conn->devMonPrivateData; + remote_node_device_dump_xml_args args; + remote_node_device_dump_xml_ret ret; + + remoteDriverLock(priv); + + args.name = dev->name; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_DUMP_XML, + (xdrproc_t)xdr_remote_node_device_dump_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_node_device_dump_xml_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNodeDeviceGetParent has to be implemented manually */ @@ -1023,7 +1579,31 @@ done: /* remoteDispatchNodeDeviceLookupByName has to be implemented manually */ -/* remoteDispatchNodeDeviceNumOfCaps has to be implemented manually */ +static int +remoteNodeDeviceNumOfCaps(virNodeDevicePtr dev) +{ + int rv = -1; + struct private_data *priv = dev->conn->devMonPrivateData; + remote_node_device_num_of_caps_args args; + remote_node_device_num_of_caps_ret ret; + + remoteDriverLock(priv); + + args.name = dev->name; + + memset(&ret, 0, sizeof ret); + + if (call(dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_NUM_OF_CAPS, + (xdrproc_t)xdr_remote_node_device_num_of_caps_args, (char *)&args, + (xdrproc_t)xdr_remote_node_device_num_of_caps_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNodeDeviceReAttach has to be implemented manually */ @@ -1039,31 +1619,291 @@ done: /* remoteDispatchNodeListDevices has to be implemented manually */ -/* remoteDispatchNodeNumOfDevices has to be implemented manually */ +static int +remoteNodeNumOfDevices(virConnectPtr conn, const char *cap, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = conn->devMonPrivateData; + remote_node_num_of_devices_args args; + remote_node_num_of_devices_ret ret; + + remoteDriverLock(priv); + + args.cap = cap ? (char **)&cap : NULL; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NODE_NUM_OF_DEVICES, + (xdrproc_t)xdr_remote_node_num_of_devices_args, (char *)&args, + (xdrproc_t)xdr_remote_node_num_of_devices_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfDefinedDomains(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_num_of_defined_domains_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_DOMAINS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_defined_domains_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfDefinedInterfaces(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->interfacePrivateData; + remote_num_of_defined_interfaces_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_INTERFACES, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_defined_interfaces_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfDefinedNetworks(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->networkPrivateData; + remote_num_of_defined_networks_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_NETWORKS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_defined_networks_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfDefinedStoragePools(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->storagePrivateData; + remote_num_of_defined_storage_pools_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_STORAGE_POOLS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_defined_storage_pools_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfDomains(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_num_of_domains_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_DOMAINS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_domains_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfInterfaces(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->interfacePrivateData; + remote_num_of_interfaces_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_INTERFACES, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_interfaces_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfNetworks(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->networkPrivateData; + remote_num_of_networks_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_NETWORKS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_networks_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; -/* remoteDispatchNumOfDefinedDomains has to be implemented manually */ +done: + remoteDriverUnlock(priv); + return rv; +} -/* remoteDispatchNumOfDefinedInterfaces has to be implemented manually */ +static int +remoteNumOfNWFilters(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->nwfilterPrivateData; + remote_num_of_nwfilters_ret ret; + + remoteDriverLock(priv); -/* remoteDispatchNumOfDefinedNetworks has to be implemented manually */ + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_NWFILTERS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_nwfilters_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchNumOfDefinedStoragePools has to be implemented manually */ + rv = ret.num; -/* remoteDispatchNumOfDomains has to be implemented manually */ +done: + remoteDriverUnlock(priv); + return rv; +} -/* remoteDispatchNumOfInterfaces has to be implemented manually */ +static int +remoteNumOfSecrets(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->secretPrivateData; + remote_num_of_secrets_ret ret; -/* remoteDispatchNumOfNetworks has to be implemented manually */ + remoteDriverLock(priv); -/* remoteDispatchNumOfNWFilters has to be implemented manually */ + memset(&ret, 0, sizeof ret); -/* remoteDispatchNumOfSecrets has to be implemented manually */ + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_SECRETS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_secrets_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchNumOfStoragePools has to be implemented manually */ + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteNumOfStoragePools(virConnectPtr conn) +{ + int rv = -1; + struct private_data *priv = conn->storagePrivateData; + remote_num_of_storage_pools_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NUM_OF_STORAGE_POOLS, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_num_of_storage_pools_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNWFilterDefineXML has to be implemented manually */ -/* remoteDispatchNWFilterGetXMLDesc has to be implemented manually */ +static char * +remoteNWFilterGetXMLDesc(virNWFilterPtr nwfilter, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = nwfilter->conn->nwfilterPrivateData; + remote_nwfilter_get_xml_desc_args args; + remote_nwfilter_get_xml_desc_ret ret; + + remoteDriverLock(priv); + + make_nonnull_nwfilter(&args.nwfilter, nwfilter); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(nwfilter->conn, priv, 0, REMOTE_PROC_NWFILTER_GET_XML_DESC, + (xdrproc_t)xdr_remote_nwfilter_get_xml_desc_args, (char *)&args, + (xdrproc_t)xdr_remote_nwfilter_get_xml_desc_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNWFilterLookupByName has to be implemented manually */ @@ -1098,7 +1938,32 @@ done: /* remoteDispatchSecretGetValue has to be implemented manually */ -/* remoteDispatchSecretGetXMLDesc has to be implemented manually */ +static char * +remoteSecretGetXMLDesc(virSecretPtr secret, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = secret->conn->secretPrivateData; + remote_secret_get_xml_desc_args args; + remote_secret_get_xml_desc_ret ret; + + remoteDriverLock(priv); + + make_nonnull_secret(&args.secret, secret); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(secret->conn, priv, 0, REMOTE_PROC_SECRET_GET_XML_DESC, + (xdrproc_t)xdr_remote_secret_get_xml_desc_args, (char *)&args, + (xdrproc_t)xdr_remote_secret_get_xml_desc_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchSecretLookupByUsage has to be implemented manually */ @@ -1228,15 +2093,88 @@ done: return rv; } -/* remoteDispatchStoragePoolDumpXML has to be implemented manually */ +static char * +remoteStoragePoolDumpXML(virStoragePoolPtr pool, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_dump_xml_args args; + remote_storage_pool_dump_xml_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DUMP_XML, + (xdrproc_t)xdr_remote_storage_pool_dump_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_dump_xml_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchStoragePoolGetAutostart has to be implemented manually */ /* remoteDispatchStoragePoolGetInfo has to be implemented manually */ -/* remoteDispatchStoragePoolIsActive has to be implemented manually */ +static int +remoteStoragePoolIsActive(virStoragePoolPtr pool) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_is_active_args args; + remote_storage_pool_is_active_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_IS_ACTIVE, + (xdrproc_t)xdr_remote_storage_pool_is_active_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_is_active_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchStoragePoolIsPersistent has to be implemented manually */ + rv = ret.active; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteStoragePoolIsPersistent(virStoragePoolPtr pool) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_is_persistent_args args; + remote_storage_pool_is_persistent_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_IS_PERSISTENT, + (xdrproc_t)xdr_remote_storage_pool_is_persistent_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_is_persistent_ret, (char *)&ret) == -1) + goto done; + + rv = ret.persistent; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchStoragePoolListVolumes has to be implemented manually */ @@ -1246,7 +2184,31 @@ done: /* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */ -/* remoteDispatchStoragePoolNumOfVolumes has to be implemented manually */ +static int +remoteStoragePoolNumOfVolumes(virStoragePoolPtr pool) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_num_of_volumes_args args; + remote_storage_pool_num_of_volumes_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_NUM_OF_VOLUMES, + (xdrproc_t)xdr_remote_storage_pool_num_of_volumes_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_num_of_volumes_ret, (char *)&ret) == -1) + goto done; + + rv = ret.num; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteStoragePoolRefresh(virStoragePoolPtr pool, unsigned int flags) @@ -1349,11 +2311,60 @@ done: /* remoteDispatchStorageVolDownload has to be implemented manually */ -/* remoteDispatchStorageVolDumpXML has to be implemented manually */ +static char * +remoteStorageVolDumpXML(virStorageVolPtr vol, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = vol->conn->storagePrivateData; + remote_storage_vol_dump_xml_args args; + remote_storage_vol_dump_xml_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_vol(&args.vol, vol); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_DUMP_XML, + (xdrproc_t)xdr_remote_storage_vol_dump_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_dump_xml_ret, (char *)&ret) == -1) + goto done; + + rv = ret.xml; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchStorageVolGetInfo has to be implemented manually */ -/* remoteDispatchStorageVolGetPath has to be implemented manually */ +static char * +remoteStorageVolGetPath(virStorageVolPtr vol) +{ + char *rv = NULL; + struct private_data *priv = vol->conn->storagePrivateData; + remote_storage_vol_get_path_args args; + remote_storage_vol_get_path_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_vol(&args.vol, vol); + + memset(&ret, 0, sizeof ret); + + if (call(vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_GET_PATH, + (xdrproc_t)xdr_remote_storage_vol_get_path_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_get_path_ret, (char *)&ret) == -1) + goto done; + + rv = ret.name; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchStorageVolLookupByKey has to be implemented manually */ diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index bf4d866..a67f9f6 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -1745,54 +1745,6 @@ done: return rv; } -static char * -remoteGetHostname (virConnectPtr conn) -{ - char *rv = NULL; - remote_get_hostname_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_GET_HOSTNAME, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_get_hostname_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees this. */ - rv = ret.hostname; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static char * -remoteGetSysinfo (virConnectPtr conn, unsigned int flags) -{ - char *rv = NULL; - remote_get_sysinfo_args args; - remote_get_sysinfo_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - args.flags = flags; - if (call (conn, priv, 0, REMOTE_PROC_GET_SYSINFO, - (xdrproc_t) xdr_remote_get_sysinfo_args, (char *) &args, - (xdrproc_t) xdr_remote_get_sysinfo_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees this. */ - rv = ret.sysinfo; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteIsSecure(virConnectPtr conn) { int rv = -1; @@ -1914,29 +1866,6 @@ done: return rv; } -static char * -remoteGetCapabilities (virConnectPtr conn) -{ - char *rv = NULL; - remote_get_capabilities_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_GET_CAPABILITIES, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_get_capabilities_ret, (char *)&ret) == -1) - goto done; - - /* Caller frees this. */ - rv = ret.capabilities; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *freeMems, @@ -2047,100 +1976,6 @@ done: return rv; } -static int -remoteNumOfDomains (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_domains_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_DOMAINS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_domains_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainIsActive(virDomainPtr domain) -{ - int rv = -1; - remote_domain_is_active_args args; - remote_domain_is_active_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_IS_ACTIVE, - (xdrproc_t) xdr_remote_domain_is_active_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_is_active_ret, (char *) &ret) == -1) - goto done; - - rv = ret.active; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainIsPersistent(virDomainPtr domain) -{ - int rv = -1; - remote_domain_is_persistent_args args; - remote_domain_is_persistent_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_IS_PERSISTENT, - (xdrproc_t) xdr_remote_domain_is_persistent_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_is_persistent_ret, (char *) &ret) == -1) - goto done; - - rv = ret.persistent; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainIsUpdated(virDomainPtr domain) -{ - int rv = -1; - remote_domain_is_updated_args args; - remote_domain_is_updated_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_IS_UPDATED, - (xdrproc_t) xdr_remote_domain_is_updated_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_is_updated_ret, (char *) &ret) == -1) - goto done; - - rv = ret.updated; - -done: - remoteDriverUnlock(priv); - return rv; -} - static virDomainPtr remoteDomainCreateXML (virConnectPtr conn, const char *xmlDesc, @@ -2272,57 +2107,6 @@ done: return rv; } -static char * -remoteDomainGetOSType (virDomainPtr domain) -{ - char *rv = NULL; - remote_domain_get_os_type_args args; - remote_domain_get_os_type_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_OS_TYPE, - (xdrproc_t) xdr_remote_domain_get_os_type_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_os_type_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.type; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static unsigned long -remoteDomainGetMaxMemory (virDomainPtr domain) -{ - unsigned long rv = 0; - remote_domain_get_max_memory_args args; - remote_domain_get_max_memory_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_MAX_MEMORY, - (xdrproc_t) xdr_remote_domain_get_max_memory_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_max_memory_ret, (char *) &ret) == -1) - goto done; - - rv = ret.memory; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteDomainSetMemoryParameters (virDomainPtr domain, virMemoryParameterPtr params, @@ -2693,32 +2477,6 @@ done: } static int -remoteDomainGetVcpusFlags (virDomainPtr domain, unsigned int flags) -{ - int rv = -1; - remote_domain_get_vcpus_flags_args args; - remote_domain_get_vcpus_flags_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_VCPUS_FLAGS, - (xdrproc_t) xdr_remote_domain_get_vcpus_flags_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_vcpus_flags_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainPinVcpu (virDomainPtr domain, unsigned int vcpu, unsigned char *cpumap, @@ -2829,31 +2587,6 @@ done: } static int -remoteDomainGetMaxVcpus (virDomainPtr domain) -{ - int rv = -1; - remote_domain_get_max_vcpus_args args; - remote_domain_get_max_vcpus_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_MAX_VCPUS, - (xdrproc_t) xdr_remote_domain_get_max_vcpus_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_max_vcpus_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainGetSecurityLabel (virDomainPtr domain, virSecurityLabelPtr seclabel) { remote_domain_get_security_label_args args; @@ -2934,33 +2667,6 @@ done: } static char * -remoteDomainDumpXML (virDomainPtr domain, int flags) -{ - char *rv = NULL; - remote_domain_dump_xml_args args; - remote_domain_dump_xml_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_DUMP_XML, - (xdrproc_t) xdr_remote_domain_dump_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_dump_xml_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static char * remoteDomainXMLFromNative (virConnectPtr conn, const char *format, const char *config, @@ -3286,28 +2992,6 @@ done: } static int -remoteNumOfDefinedDomains (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_defined_domains_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_DOMAINS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_defined_domains_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainCreate (virDomainPtr domain) { int rv = -1; @@ -3846,31 +3530,6 @@ done: return rv; } -static int -remoteDomainHasManagedSaveImage (virDomainPtr domain, unsigned int flags) -{ - int rv = -1; - remote_domain_has_managed_save_image_args args; - remote_domain_has_managed_save_image_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.flags = flags; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_HAS_MANAGED_SAVE_IMAGE, - (xdrproc_t) xdr_remote_domain_has_managed_save_image_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_has_managed_save_image_ret, (char *) &ret) == -1) - goto done; - - rv = ret.result; - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -3934,28 +3593,6 @@ remoteNetworkClose (virConnectPtr conn) } static int -remoteNumOfNetworks (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_networks_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_NETWORKS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_networks_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteListNetworks (virConnectPtr conn, char **const names, int maxnames) { int rv = -1; @@ -4015,28 +3652,6 @@ done: } static int -remoteNumOfDefinedNetworks (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_defined_networks_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_NETWORKS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_defined_networks_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteListDefinedNetworks (virConnectPtr conn, char **const names, int maxnames) { @@ -4150,54 +3765,6 @@ done: return net; } -static int -remoteNetworkIsActive(virNetworkPtr network) -{ - int rv = -1; - remote_network_is_active_args args; - remote_network_is_active_ret ret; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_IS_ACTIVE, - (xdrproc_t) xdr_remote_network_is_active_args, (char *) &args, - (xdrproc_t) xdr_remote_network_is_active_ret, (char *) &ret) == -1) - goto done; - - rv = ret.active; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteNetworkIsPersistent(virNetworkPtr network) -{ - int rv = -1; - remote_network_is_persistent_args args; - remote_network_is_persistent_ret ret; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_IS_PERSISTENT, - (xdrproc_t) xdr_remote_network_is_persistent_args, (char *) &args, - (xdrproc_t) xdr_remote_network_is_persistent_ret, (char *) &ret) == -1) - goto done; - - rv = ret.persistent; - -done: - remoteDriverUnlock(priv); - return rv; -} - static virNetworkPtr remoteNetworkCreateXML (virConnectPtr conn, const char *xmlDesc) { @@ -4250,59 +3817,6 @@ done: return net; } -static char * -remoteNetworkDumpXML (virNetworkPtr network, int flags) -{ - char *rv = NULL; - remote_network_dump_xml_args args; - remote_network_dump_xml_ret ret; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_DUMP_XML, - (xdrproc_t) xdr_remote_network_dump_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_network_dump_xml_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static char * -remoteNetworkGetBridgeName (virNetworkPtr network) -{ - char *rv = NULL; - remote_network_get_bridge_name_args args; - remote_network_get_bridge_name_ret ret; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - - memset (&ret, 0, sizeof ret); - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_GET_BRIDGE_NAME, - (xdrproc_t) xdr_remote_network_get_bridge_name_args, (char *) &args, - (xdrproc_t) xdr_remote_network_get_bridge_name_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.name; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteNetworkGetAutostart (virNetworkPtr network, int *autostart) { @@ -4393,28 +3907,6 @@ remoteInterfaceClose (virConnectPtr conn) } static int -remoteNumOfInterfaces (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_interfaces_ret ret; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_INTERFACES, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_interfaces_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteListInterfaces (virConnectPtr conn, char **const names, int maxnames) { int rv = -1; @@ -4474,28 +3966,6 @@ done: } static int -remoteNumOfDefinedInterfaces (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_defined_interfaces_ret ret; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_INTERFACES, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_defined_interfaces_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteListDefinedInterfaces (virConnectPtr conn, char **const names, int maxnames) { int rv = -1; @@ -4608,60 +4078,6 @@ done: return iface; } - -static int -remoteInterfaceIsActive(virInterfacePtr iface) -{ - int rv = -1; - remote_interface_is_active_args args; - remote_interface_is_active_ret ret; - struct private_data *priv = iface->conn->interfacePrivateData; - - remoteDriverLock(priv); - - make_nonnull_interface (&args.iface, iface); - - if (call (iface->conn, priv, 0, REMOTE_PROC_INTERFACE_IS_ACTIVE, - (xdrproc_t) xdr_remote_interface_is_active_args, (char *) &args, - (xdrproc_t) xdr_remote_interface_is_active_ret, (char *) &ret) == -1) - goto done; - - rv = ret.active; - -done: - remoteDriverUnlock(priv); - return rv; -} - - -static char * -remoteInterfaceGetXMLDesc (virInterfacePtr iface, - unsigned int flags) -{ - char *rv = NULL; - remote_interface_get_xml_desc_args args; - remote_interface_get_xml_desc_ret ret; - struct private_data *priv = iface->conn->interfacePrivateData; - - remoteDriverLock(priv); - - make_nonnull_interface (&args.iface, iface); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (iface->conn, priv, 0, REMOTE_PROC_INTERFACE_GET_XML_DESC, - (xdrproc_t) xdr_remote_interface_get_xml_desc_args, (char *) &args, - (xdrproc_t) xdr_remote_interface_get_xml_desc_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - static virInterfacePtr remoteInterfaceDefineXML (virConnectPtr conn, const char *xmlDesc, @@ -4761,28 +4177,6 @@ remoteStorageClose (virConnectPtr conn) } static int -remoteNumOfStoragePools (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_storage_pools_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_STORAGE_POOLS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_storage_pools_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteListStoragePools (virConnectPtr conn, char **const names, int maxnames) { int rv = -1; @@ -4838,28 +4232,6 @@ done: } static int -remoteNumOfDefinedStoragePools (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_defined_storage_pools_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_DEFINED_STORAGE_POOLS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_defined_storage_pools_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteListDefinedStoragePools (virConnectPtr conn, char **const names, int maxnames) { @@ -5040,56 +4412,6 @@ done: return pool; } - -static int -remoteStoragePoolIsActive(virStoragePoolPtr pool) -{ - int rv = -1; - remote_storage_pool_is_active_args args; - remote_storage_pool_is_active_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_IS_ACTIVE, - (xdrproc_t) xdr_remote_storage_pool_is_active_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_is_active_ret, (char *) &ret) == -1) - goto done; - - rv = ret.active; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteStoragePoolIsPersistent(virStoragePoolPtr pool) -{ - int rv = -1; - remote_storage_pool_is_persistent_args args; - remote_storage_pool_is_persistent_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_IS_PERSISTENT, - (xdrproc_t) xdr_remote_storage_pool_is_persistent_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_is_persistent_ret, (char *) &ret) == -1) - goto done; - - rv = ret.persistent; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static virStoragePoolPtr remoteStoragePoolCreateXML (virConnectPtr conn, const char *xmlDesc, unsigned int flags) { @@ -5174,34 +4496,6 @@ done: return rv; } -static char * -remoteStoragePoolDumpXML (virStoragePoolPtr pool, - unsigned int flags) -{ - char *rv = NULL; - remote_storage_pool_dump_xml_args args; - remote_storage_pool_dump_xml_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DUMP_XML, - (xdrproc_t) xdr_remote_storage_pool_dump_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_dump_xml_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteStoragePoolGetAutostart (virStoragePoolPtr pool, int *autostart) { @@ -5229,30 +4523,6 @@ done: return rv; } -static int -remoteStoragePoolNumOfVolumes (virStoragePoolPtr pool) -{ - int rv = -1; - remote_storage_pool_num_of_volumes_args args; - remote_storage_pool_num_of_volumes_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool(&args.pool, pool); - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_NUM_OF_VOLUMES, - (xdrproc_t) xdr_remote_storage_pool_num_of_volumes_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_num_of_volumes_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} static int remoteStoragePoolListVolumes (virStoragePoolPtr pool, char **const names, int maxnames) @@ -5484,61 +4754,6 @@ done: return rv; } -static char * -remoteStorageVolDumpXML (virStorageVolPtr vol, - unsigned int flags) -{ - char *rv = NULL; - remote_storage_vol_dump_xml_args args; - remote_storage_vol_dump_xml_ret ret; - struct private_data *priv = vol->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_vol (&args.vol, vol); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_DUMP_XML, - (xdrproc_t) xdr_remote_storage_vol_dump_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_dump_xml_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static char * -remoteStorageVolGetPath (virStorageVolPtr vol) -{ - char *rv = NULL; - remote_storage_vol_get_path_args args; - remote_storage_vol_get_path_ret ret; - struct private_data *priv = vol->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_vol (&args.vol, vol); - - memset (&ret, 0, sizeof ret); - if (call (vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_GET_PATH, - (xdrproc_t) xdr_remote_storage_vol_get_path_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_get_path_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.name; - -done: - remoteDriverUnlock(priv); - return rv; -} - - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -5606,34 +4821,6 @@ static int remoteDevMonClose(virConnectPtr conn) return ret; } -static int remoteNodeNumOfDevices(virConnectPtr conn, - const char *cap, - unsigned int flags) -{ - int rv = -1; - remote_node_num_of_devices_args args; - remote_node_num_of_devices_ret ret; - struct private_data *priv = conn->devMonPrivateData; - - remoteDriverLock(priv); - - args.cap = cap ? (char **)&cap : NULL; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NODE_NUM_OF_DEVICES, - (xdrproc_t) xdr_remote_node_num_of_devices_args, (char *) &args, - (xdrproc_t) xdr_remote_node_num_of_devices_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static int remoteNodeListDevices(virConnectPtr conn, const char *cap, char **const names, @@ -5722,33 +4909,6 @@ done: return dev; } -static char *remoteNodeDeviceDumpXML(virNodeDevicePtr dev, - unsigned int flags) -{ - char *rv = NULL; - remote_node_device_dump_xml_args args; - remote_node_device_dump_xml_ret ret; - struct private_data *priv = dev->conn->devMonPrivateData; - - remoteDriverLock(priv); - - args.name = dev->name; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_DUMP_XML, - (xdrproc_t) xdr_remote_node_device_dump_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_node_device_dump_xml_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - static char *remoteNodeDeviceGetParent(virNodeDevicePtr dev) { char *rv = NULL; @@ -5775,30 +4935,6 @@ done: return rv; } -static int remoteNodeDeviceNumOfCaps(virNodeDevicePtr dev) -{ - int rv = -1; - remote_node_device_num_of_caps_args args; - remote_node_device_num_of_caps_ret ret; - struct private_data *priv = dev->conn->devMonPrivateData; - - remoteDriverLock(priv); - - args.name = dev->name; - - memset (&ret, 0, sizeof ret); - if (call (dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_NUM_OF_CAPS, - (xdrproc_t) xdr_remote_node_device_num_of_caps_args, (char *) &args, - (xdrproc_t) xdr_remote_node_device_num_of_caps_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteNodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames) @@ -6023,30 +5159,6 @@ remoteNWFilterClose (virConnectPtr conn) return rv; } - -static int -remoteNumOfNWFilters (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_nwfilters_ret ret; - struct private_data *priv = conn->nwfilterPrivateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_NWFILTERS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_nwfilters_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static virNWFilterPtr remoteNWFilterDefineXML (virConnectPtr conn, const char *xmlDesc, unsigned int flags ATTRIBUTE_UNUSED) @@ -6189,35 +5301,6 @@ done: return net; } - -static char * -remoteNWFilterGetXMLDesc (virNWFilterPtr nwfilter, unsigned int flags) -{ - char *rv = NULL; - remote_nwfilter_get_xml_desc_args args; - remote_nwfilter_get_xml_desc_ret ret; - struct private_data *priv = nwfilter->conn->nwfilterPrivateData; - - remoteDriverLock(priv); - - make_nonnull_nwfilter (&args.nwfilter, nwfilter); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (nwfilter->conn, priv, 0, REMOTE_PROC_NWFILTER_GET_XML_DESC, - (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_args, (char *) &args, - (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - - /*----------------------------------------------------------------------*/ static int @@ -7280,28 +6363,6 @@ remoteSecretClose (virConnectPtr conn) } static int -remoteSecretNumOfSecrets (virConnectPtr conn) -{ - int rv = -1; - remote_num_of_secrets_ret ret; - struct private_data *priv = conn->secretPrivateData; - - remoteDriverLock (priv); - - memset (&ret, 0, sizeof (ret)); - if (call (conn, priv, 0, REMOTE_PROC_NUM_OF_SECRETS, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_num_of_secrets_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock (priv); - return rv; -} - -static int remoteListSecrets (virConnectPtr conn, char **uuids, int maxuuids) { int rv = -1; @@ -7440,33 +6501,6 @@ done: return rv; } -static char * -remoteSecretGetXMLDesc (virSecretPtr secret, unsigned int flags) -{ - char *rv = NULL; - remote_secret_get_xml_desc_args args; - remote_secret_get_xml_desc_ret ret; - struct private_data *priv = secret->conn->secretPrivateData; - - remoteDriverLock (priv); - - make_nonnull_secret (&args.secret, secret); - args.flags = flags; - - memset (&ret, 0, sizeof (ret)); - if (call (secret->conn, priv, 0, REMOTE_PROC_SECRET_GET_XML_DESC, - (xdrproc_t) xdr_remote_secret_get_xml_desc_args, (char *) &args, - (xdrproc_t) xdr_remote_secret_get_xml_desc_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock (priv); - return rv; -} - static int remoteSecretSetValue (virSecretPtr secret, const unsigned char *value, size_t value_size, unsigned int flags) @@ -8070,34 +7104,6 @@ done: return rv; } - -static int -remoteCPUCompare(virConnectPtr conn, const char *xmlDesc, - unsigned int flags ATTRIBUTE_UNUSED) -{ - struct private_data *priv = conn->privateData; - remote_cpu_compare_args args; - remote_cpu_compare_ret ret; - int rv = VIR_CPU_COMPARE_ERROR; - - remoteDriverLock(priv); - - args.xml = (char *) xmlDesc; - - memset(&ret, 0, sizeof (ret)); - if (call(conn, priv, 0, REMOTE_PROC_CPU_COMPARE, - (xdrproc_t) xdr_remote_cpu_compare_args, (char *) &args, - (xdrproc_t) xdr_remote_cpu_compare_ret, (char *) &ret) == -1) - goto done; - - rv = ret.result; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static char * remoteCPUBaseline(virConnectPtr conn, const char **xmlCPUs, @@ -8197,62 +7203,6 @@ done: return snapshot; } - -static char * -remoteDomainSnapshotDumpXML(virDomainSnapshotPtr snapshot, unsigned int flags) -{ - char *rv = NULL; - remote_domain_snapshot_dump_xml_args args; - remote_domain_snapshot_dump_xml_ret ret; - struct private_data *priv = snapshot->domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain_snapshot(&args.snap, snapshot); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (snapshot->domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_DUMP_XML, - (xdrproc_t) xdr_remote_domain_snapshot_dump_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_snapshot_dump_xml_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.xml; - -done: - remoteDriverUnlock(priv); - return rv; -} - - -static int -remoteDomainSnapshotNum (virDomainPtr domain, unsigned int flags) -{ - int rv = -1; - remote_domain_snapshot_num_args args; - remote_domain_snapshot_num_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_NUM, - (xdrproc_t) xdr_remote_domain_snapshot_num_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_snapshot_num_ret, (char *) &ret) == -1) - goto done; - - rv = ret.num; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static int remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, int maxnames, unsigned int flags) @@ -8346,33 +7296,6 @@ done: return snapshot; } - -static int -remoteDomainHasCurrentSnapshot(virDomainPtr domain, unsigned int flags) -{ - int rv = -1; - remote_domain_has_current_snapshot_args args; - remote_domain_has_current_snapshot_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain(&args.dom, domain); - args.flags = flags; - - if (call(domain->conn, priv, 0, REMOTE_PROC_DOMAIN_HAS_CURRENT_SNAPSHOT, - (xdrproc_t) xdr_remote_domain_has_current_snapshot_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_has_current_snapshot_ret, (char *) &ret) == -1) - goto done; - - rv = ret.result; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static virDomainSnapshotPtr remoteDomainSnapshotCurrent(virDomainPtr domain, unsigned int flags) @@ -8617,7 +7540,6 @@ done: remoteDriverUnlock(priv); return rv; - } @@ -8646,7 +7568,6 @@ remoteQemuDomainMonitorCommand (virDomainPtr domain, const char *cmd, *result = strdup(ret.result); if (*result == NULL) { - virReportOOMError(); goto cleanup; } @@ -10282,7 +9203,7 @@ static virSecretDriver secret_driver = { .name = "remote", .open = remoteSecretOpen, .close = remoteSecretClose, - .numOfSecrets = remoteSecretNumOfSecrets, + .numOfSecrets = remoteNumOfSecrets, .listSecrets = remoteListSecrets, .lookupByUUID = remoteSecretLookupByUUID, .lookupByUsage = remoteSecretLookupByUsage, -- 1.7.0.4

--- daemon/remote_generator.pl | 88 ++-- src/remote/remote_client_bodies.c | 987 +++++++++++++++++++++++++++++++++++-- src/remote/remote_driver.c | 996 ------------------------------------- 3 files changed, 993 insertions(+), 1078 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index a973b21..5045b7f 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -753,82 +753,44 @@ elsif ($opt_k) { "CPUBaseline", "DomainBlockStats", "DomainCreate", - "DomainCreateXML", - "DomainDefineXML", "DomainDestroy", "DomainGetAutostart", "DomainGetBlockInfo", "DomainGetInfo", - "StoragePoolLookupByUUID", - "NodeDeviceCreateXML", "DomainGetJobInfo", "DomainInterfaceStats", - "DomainLookupByID", - "DomainLookupByName", - "DomainLookupByUIID", "DomainMigrateFinish", - "NWFilterDefineXML", - "NWFilterLookupByName", - "NWFilterLookupByUUID", - "SecretLookupByUUID", - "SecretLookupByUsage", - "StoragePoolCreateXML", - "DomainLookupByUUID", + "NWFilterDefineXML", # public API and XDR protocol mismatch "DomainMigratePerform", "DomainMigrateFinish2", - "DomainSnapshotCreateXML", - "DomainSnapshotCurrent", "DomainSnapshotListNames", "GetLibVersion", - "GetMaxVcpus", - "DomainSnapshotLookupByName", - "DomainXMLFromNative", "FindStoragePoolSources", "GetVersion", - "GetLibVersion", - "InterfaceDefineXML", - "InterfaceLookupByName", "IsSecure", "ListDefinedDomains", "ListDefinedInterfaces", "ListNWFilters", - "NetworkCreateXML", "SupportsFeature", - "StorageVolLookupByPath", "StorageVolGetInfo", - "StorageVolCreateXML", - "StorageVolLookupByName", - "StorageVolLookupByKey", "StoragePoolGetInfo", - "StorageVolCreateXMLFrom", - "StoragePoolLookupByName", "NodeListDevices", "NodeGetCellsFreeMemory", "ListDefinedNetworks", - "DomainXMLToNative", "StoragePoolListVolumes", - "SecretDefineXML", "ListDomains", "ListStoragePools", "NetworkGetAutostart", - "StoragePoolLookupByVolume", "StoragePoolGetAutostart", "SecretSetValue", - "StoragePoolDefineXML", "NodeGetInfo", "GetURI", - "InterfaceLookupByMACString", "ListInterfaces", - "NetworkDefineXML", - "NetworkLookupByName", "ListDefinedStoragePools", "NodeDeviceDettach", - "NodeDeviceLookupByName", - "NodeGetFreeMemory", "ListNetworks", "NodeDeviceListCaps", "NodeDeviceReset", - "NetworkLookupByUUID", "NodeDeviceReAttach", "ListSecrets", @@ -889,7 +851,9 @@ elsif ($opt_k) { my $has_node_device = 0; # node device is special - if ($call->{args} =~ m/^remote_node_/) { + if ($call->{args} =~ m/^remote_node_/ and + !($call->{args} =~ m/^remote_node_device_lookup_by_name_/) and + !($call->{args} =~ m/^remote_node_device_create_xml_/)) { $has_node_device = 1; $priv_name = "devMonPrivateData"; } @@ -901,13 +865,14 @@ elsif ($opt_k) { push(@setters_list, "args.name = dev->name;"); } elsif ($args_member =~ m/^remote_nonnull_(domain|network|storage_pool|storage_vol|interface|secret|nwfilter|domain_snapshot) (\S+);/) { my $name = $1; + my $arg_name = $2; my $type_name = name_to_ProcName($name); if ($is_first_arg) { if ($name eq "domain_snapshot") { - $priv_src = "$2->domain->conn"; + $priv_src = "$arg_name->domain->conn"; } else { - $priv_src = "$2->conn"; + $priv_src = "$arg_name->conn"; } if ($name =~ m/^storage_/) { @@ -917,8 +882,11 @@ elsif ($opt_k) { } } - push(@args_list, "vir${type_name}Ptr $2"); - push(@setters_list, "make_nonnull_$1(&args.$2, $2);"); + push(@args_list, "vir${type_name}Ptr $arg_name"); + push(@setters_list, "make_nonnull_$1(&args.$arg_name, $arg_name);"); + } elsif ($args_member =~ m/^remote_uuid (\S+);/) { + push(@args_list, "const unsigned char *$1"); + push(@setters_list, "memcpy(args.$1, $1, VIR_UUID_BUFLEN);"); } elsif ($args_member =~ m/^remote_string (\S+);/) { push(@args_list, "const char *$1"); push(@setters_list, "args.$1 = $1 ? (char **)&$1 : NULL;"); @@ -988,14 +956,42 @@ elsif ($opt_k) { push(@ret_list, "rv = ret.$1;"); $single_ret_var = "char *rv = NULL"; $single_ret_type = "char *"; + } elsif ($ret_member =~ m/remote_nonnull_(domain|network|storage_pool|storage_vol|node_device|interface|secret|nwfilter|domain_snapshot) (\S+);/) { + my $name = $1; + my $arg_name = $2; + my $type_name = name_to_ProcName($name); + + if ($name eq "node_device") { + $priv_name = "devMonPrivateData"; + } elsif ($name =~ m/^storage_/) { + $priv_name = "storagePrivateData"; + } elsif (!($name =~ m/^domain/)) { + $priv_name = "${name}PrivateData"; + } + + if ($name eq "domain_snapshot") { + push(@ret_list, "rv = get_nonnull_$name(dom, ret.$arg_name);"); + } else { + push(@ret_list, "rv = get_nonnull_$name($priv_src, ret.$arg_name);"); + } + + push(@ret_list, "xdr_free((xdrproc_t)xdr_$call->{ret}, (char *)&ret);"); + $single_ret_var = "vir${type_name}Ptr rv = NULL"; + $single_ret_type = "vir${type_name}Ptr"; } elsif ($ret_member =~ m/^int (\S+);/) { push(@ret_list, "rv = ret.$1;"); $single_ret_var = "int rv = -1"; $single_ret_type = "int"; } elsif ($ret_member =~ m/hyper (\S+);/) { push(@ret_list, "rv = ret.$1;"); - $single_ret_var = "unsigned long rv = 0"; - $single_ret_type = "unsigned long"; + + if ($call->{ProcName} eq "NodeGetFreeMemory") { + $single_ret_var = "unsigned long long rv = 0"; + $single_ret_type = "unsigned long long"; + } else { + $single_ret_var = "unsigned long rv = 0"; + $single_ret_type = "unsigned long"; + } } else { die "unhandled type for return value: $ret_member"; } diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c index b878832..5471c1b 100644 --- a/src/remote/remote_client_bodies.c +++ b/src/remote/remote_client_bodies.c @@ -148,9 +148,60 @@ done: /* remoteDispatchDomainCreateWithFlags has to be implemented manually */ -/* remoteDispatchDomainCreateXML has to be implemented manually */ +static virDomainPtr +remoteDomainCreateXML(virConnectPtr conn, const char *xml_desc, unsigned int flags) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_create_xml_args args; + remote_domain_create_xml_ret ret; + + remoteDriverLock(priv); + + args.xml_desc = (char *)xml_desc; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_CREATE_XML, + (xdrproc_t)xdr_remote_domain_create_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_create_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain(conn, ret.dom); + xdr_free((xdrproc_t)xdr_remote_domain_create_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virDomainPtr +remoteDomainDefineXML(virConnectPtr conn, const char *xml) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_define_xml_args args; + remote_domain_define_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_DEFINE_XML, + (xdrproc_t)xdr_remote_domain_define_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_define_xml_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchDomainDefineXML has to be implemented manually */ + rv = get_nonnull_domain(conn, ret.dom); + xdr_free((xdrproc_t)xdr_remote_domain_define_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainDestroy has to be implemented manually */ @@ -497,11 +548,86 @@ done: return rv; } -/* remoteDispatchDomainLookupByID has to be implemented manually */ +static virDomainPtr +remoteDomainLookupByID(virConnectPtr conn, int id) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_lookup_by_id_args args; + remote_domain_lookup_by_id_ret ret; + + remoteDriverLock(priv); + + args.id = id; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_LOOKUP_BY_ID, + (xdrproc_t)xdr_remote_domain_lookup_by_id_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_lookup_by_id_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain(conn, ret.dom); + xdr_free((xdrproc_t)xdr_remote_domain_lookup_by_id_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virDomainPtr +remoteDomainLookupByName(virConnectPtr conn, const char *name) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_lookup_by_name_args args; + remote_domain_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + args.name = (char *)name; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_domain_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain(conn, ret.dom); + xdr_free((xdrproc_t)xdr_remote_domain_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virDomainPtr +remoteDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_lookup_by_uuid_args args; + remote_domain_lookup_by_uuid_ret ret; + + remoteDriverLock(priv); + + memcpy(args.uuid, uuid, VIR_UUID_BUFLEN); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_LOOKUP_BY_UUID, + (xdrproc_t)xdr_remote_domain_lookup_by_uuid_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_lookup_by_uuid_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchDomainLookupByName has to be implemented manually */ + rv = get_nonnull_domain(conn, ret.dom); + xdr_free((xdrproc_t)xdr_remote_domain_lookup_by_uuid_ret, (char *)&ret); -/* remoteDispatchDomainLookupByUUID has to be implemented manually */ +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainManagedSave(virDomainPtr dom, unsigned int flags) @@ -914,9 +1040,62 @@ done: return rv; } -/* remoteDispatchDomainSnapshotCreateXML has to be implemented manually */ +static virDomainSnapshotPtr +remoteDomainSnapshotCreateXML(virDomainPtr dom, const char *xml_desc, unsigned int flags) +{ + virDomainSnapshotPtr rv = NULL; + struct private_data *priv = dom->conn->privateData; + remote_domain_snapshot_create_xml_args args; + remote_domain_snapshot_create_xml_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.xml_desc = (char *)xml_desc; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_CREATE_XML, + (xdrproc_t)xdr_remote_domain_snapshot_create_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_snapshot_create_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain_snapshot(dom, ret.snap); + xdr_free((xdrproc_t)xdr_remote_domain_snapshot_create_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virDomainSnapshotPtr +remoteDomainSnapshotCurrent(virDomainPtr dom, unsigned int flags) +{ + virDomainSnapshotPtr rv = NULL; + struct private_data *priv = dom->conn->privateData; + remote_domain_snapshot_current_args args; + remote_domain_snapshot_current_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.flags = flags; + + memset(&ret, 0, sizeof ret); -/* remoteDispatchDomainSnapshotCurrent has to be implemented manually */ + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_CURRENT, + (xdrproc_t)xdr_remote_domain_snapshot_current_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_snapshot_current_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain_snapshot(dom, ret.snap); + xdr_free((xdrproc_t)xdr_remote_domain_snapshot_current_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainSnapshotDelete(virDomainSnapshotPtr snap, unsigned int flags) @@ -971,7 +1150,34 @@ done: /* remoteDispatchDomainSnapshotListNames has to be implemented manually */ -/* remoteDispatchDomainSnapshotLookupByName has to be implemented manually */ +static virDomainSnapshotPtr +remoteDomainSnapshotLookupByName(virDomainPtr dom, const char *name, unsigned int flags) +{ + virDomainSnapshotPtr rv = NULL; + struct private_data *priv = dom->conn->privateData; + remote_domain_snapshot_lookup_by_name_args args; + remote_domain_snapshot_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.name = (char *)name; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_domain_snapshot_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_snapshot_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain_snapshot(dom, ret.snap); + xdr_free((xdrproc_t)xdr_remote_domain_snapshot_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainSnapshotNum(virDomainPtr dom, unsigned int flags) @@ -1071,9 +1277,61 @@ done: return rv; } -/* remoteDispatchDomainXMLFromNative has to be implemented manually */ +static char * +remoteDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat, const char *nativeConfig, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_xml_from_native_args args; + remote_domain_xml_from_native_ret ret; + + remoteDriverLock(priv); + + args.nativeFormat = (char *)nativeFormat; + args.nativeConfig = (char *)nativeConfig; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_XML_FROM_NATIVE, + (xdrproc_t)xdr_remote_domain_xml_from_native_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_xml_from_native_ret, (char *)&ret) == -1) + goto done; + + rv = ret.domainXml; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static char * +remoteDomainXMLToNative(virConnectPtr conn, const char *nativeFormat, const char *domainXml, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_xml_to_native_args args; + remote_domain_xml_to_native_ret ret; + + remoteDriverLock(priv); + + args.nativeFormat = (char *)nativeFormat; + args.domainXml = (char *)domainXml; + args.flags = flags; -/* remoteDispatchDomainXMLToNative has to be implemented manually */ + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_XML_TO_NATIVE, + (xdrproc_t)xdr_remote_domain_xml_to_native_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_xml_to_native_ret, (char *)&ret) == -1) + goto done; + + rv = ret.nativeConfig; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchFindStoragePoolSources has to be implemented manually */ @@ -1125,7 +1383,31 @@ done: /* remoteDispatchGetLibVersion has to be implemented manually */ -/* remoteDispatchGetMaxVcpus has to be implemented manually */ +static int +remoteGetMaxVcpus(virConnectPtr conn, const char *type) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_get_max_vcpus_args args; + remote_get_max_vcpus_ret ret; + + remoteDriverLock(priv); + + args.type = type ? (char **)&type : NULL; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_GET_MAX_VCPUS, + (xdrproc_t)xdr_remote_get_max_vcpus_args, (char *)&args, + (xdrproc_t)xdr_remote_get_max_vcpus_ret, (char *)&ret) == -1) + goto done; + + rv = ret.max_vcpus; + +done: + remoteDriverUnlock(priv); + return rv; +} static char * remoteGetSysinfo(virConnectPtr conn, unsigned int flags) @@ -1183,7 +1465,33 @@ done: return rv; } -/* remoteDispatchInterfaceDefineXML has to be implemented manually */ +static virInterfacePtr +remoteInterfaceDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) +{ + virInterfacePtr rv = NULL; + struct private_data *priv = conn->interfacePrivateData; + remote_interface_define_xml_args args; + remote_interface_define_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_INTERFACE_DEFINE_XML, + (xdrproc_t)xdr_remote_interface_define_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_interface_define_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_interface(conn, ret.iface); + xdr_free((xdrproc_t)xdr_remote_interface_define_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteInterfaceDestroy(virInterfacePtr iface, unsigned int flags) @@ -1262,9 +1570,59 @@ done: return rv; } -/* remoteDispatchInterfaceLookupByMACString has to be implemented manually */ +static virInterfacePtr +remoteInterfaceLookupByMACString(virConnectPtr conn, const char *mac) +{ + virInterfacePtr rv = NULL; + struct private_data *priv = conn->interfacePrivateData; + remote_interface_lookup_by_mac_string_args args; + remote_interface_lookup_by_mac_string_ret ret; + + remoteDriverLock(priv); + + args.mac = (char *)mac; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_INTERFACE_LOOKUP_BY_MAC_STRING, + (xdrproc_t)xdr_remote_interface_lookup_by_mac_string_args, (char *)&args, + (xdrproc_t)xdr_remote_interface_lookup_by_mac_string_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_interface(conn, ret.iface); + xdr_free((xdrproc_t)xdr_remote_interface_lookup_by_mac_string_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virInterfacePtr +remoteInterfaceLookupByName(virConnectPtr conn, const char *name) +{ + virInterfacePtr rv = NULL; + struct private_data *priv = conn->interfacePrivateData; + remote_interface_lookup_by_name_args args; + remote_interface_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + args.name = (char *)name; + + memset(&ret, 0, sizeof ret); -/* remoteDispatchInterfaceLookupByName has to be implemented manually */ + if (call(conn, priv, 0, REMOTE_PROC_INTERFACE_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_interface_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_interface_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_interface(conn, ret.iface); + xdr_free((xdrproc_t)xdr_remote_interface_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteInterfaceUndefine(virInterfacePtr iface) @@ -1334,9 +1692,59 @@ done: return rv; } -/* remoteDispatchNetworkCreateXML has to be implemented manually */ +static virNetworkPtr +remoteNetworkCreateXML(virConnectPtr conn, const char *xml) +{ + virNetworkPtr rv = NULL; + struct private_data *priv = conn->networkPrivateData; + remote_network_create_xml_args args; + remote_network_create_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NETWORK_CREATE_XML, + (xdrproc_t)xdr_remote_network_create_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_network_create_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_network(conn, ret.net); + xdr_free((xdrproc_t)xdr_remote_network_create_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virNetworkPtr +remoteNetworkDefineXML(virConnectPtr conn, const char *xml) +{ + virNetworkPtr rv = NULL; + struct private_data *priv = conn->networkPrivateData; + remote_network_define_xml_args args; + remote_network_define_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NETWORK_DEFINE_XML, + (xdrproc_t)xdr_remote_network_define_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_network_define_xml_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchNetworkDefineXML has to be implemented manually */ + rv = get_nonnull_network(conn, ret.net); + xdr_free((xdrproc_t)xdr_remote_network_define_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteNetworkDestroy(virNetworkPtr net) @@ -1468,9 +1876,59 @@ done: return rv; } -/* remoteDispatchNetworkLookupByName has to be implemented manually */ +static virNetworkPtr +remoteNetworkLookupByName(virConnectPtr conn, const char *name) +{ + virNetworkPtr rv = NULL; + struct private_data *priv = conn->networkPrivateData; + remote_network_lookup_by_name_args args; + remote_network_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + args.name = (char *)name; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NETWORK_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_network_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_network_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_network(conn, ret.net); + xdr_free((xdrproc_t)xdr_remote_network_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virNetworkPtr +remoteNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid) +{ + virNetworkPtr rv = NULL; + struct private_data *priv = conn->networkPrivateData; + remote_network_lookup_by_uuid_args args; + remote_network_lookup_by_uuid_ret ret; + + remoteDriverLock(priv); + + memcpy(args.uuid, uuid, VIR_UUID_BUFLEN); -/* remoteDispatchNetworkLookupByUUID has to be implemented manually */ + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NETWORK_LOOKUP_BY_UUID, + (xdrproc_t)xdr_remote_network_lookup_by_uuid_args, (char *)&args, + (xdrproc_t)xdr_remote_network_lookup_by_uuid_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_network(conn, ret.net); + xdr_free((xdrproc_t)xdr_remote_network_lookup_by_uuid_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteNetworkSetAutostart(virNetworkPtr net, int autostart) @@ -1519,7 +1977,33 @@ done: return rv; } -/* remoteDispatchNodeDeviceCreateXML has to be implemented manually */ +static virNodeDevicePtr +remoteNodeDeviceCreateXML(virConnectPtr conn, const char *xml_desc, unsigned int flags) +{ + virNodeDevicePtr rv = NULL; + struct private_data *priv = conn->devMonPrivateData; + remote_node_device_create_xml_args args; + remote_node_device_create_xml_ret ret; + + remoteDriverLock(priv); + + args.xml_desc = (char *)xml_desc; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NODE_DEVICE_CREATE_XML, + (xdrproc_t)xdr_remote_node_device_create_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_node_device_create_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_node_device(conn, ret.dev); + xdr_free((xdrproc_t)xdr_remote_node_device_create_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteNodeDeviceDestroy(virNodeDevicePtr dev) @@ -1577,7 +2061,32 @@ done: /* remoteDispatchNodeDeviceListCaps has to be implemented manually */ -/* remoteDispatchNodeDeviceLookupByName has to be implemented manually */ +static virNodeDevicePtr +remoteNodeDeviceLookupByName(virConnectPtr conn, const char *name) +{ + virNodeDevicePtr rv = NULL; + struct private_data *priv = conn->devMonPrivateData; + remote_node_device_lookup_by_name_args args; + remote_node_device_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + args.name = (char *)name; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NODE_DEVICE_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_node_device_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_node_device_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_node_device(conn, ret.dev); + xdr_free((xdrproc_t)xdr_remote_node_device_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteNodeDeviceNumOfCaps(virNodeDevicePtr dev) @@ -1611,7 +2120,28 @@ done: /* remoteDispatchNodeGetCellsFreeMemory has to be implemented manually */ -/* remoteDispatchNodeGetFreeMemory has to be implemented manually */ +static unsigned long long +remoteNodeGetFreeMemory(virConnectPtr conn) +{ + unsigned long long rv = 0; + struct private_data *priv = conn->privateData; + remote_node_get_free_memory_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NODE_GET_FREE_MEMORY, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_node_get_free_memory_ret, (char *)&ret) == -1) + goto done; + + rv = ret.freeMem; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNodeGetInfo has to be implemented manually */ @@ -1905,9 +2435,59 @@ done: return rv; } -/* remoteDispatchNWFilterLookupByName has to be implemented manually */ +static virNWFilterPtr +remoteNWFilterLookupByName(virConnectPtr conn, const char *name) +{ + virNWFilterPtr rv = NULL; + struct private_data *priv = conn->nwfilterPrivateData; + remote_nwfilter_lookup_by_name_args args; + remote_nwfilter_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + args.name = (char *)name; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NWFILTER_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_nwfilter_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_nwfilter_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_nwfilter(conn, ret.nwfilter); + xdr_free((xdrproc_t)xdr_remote_nwfilter_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virNWFilterPtr +remoteNWFilterLookupByUUID(virConnectPtr conn, const unsigned char *uuid) +{ + virNWFilterPtr rv = NULL; + struct private_data *priv = conn->nwfilterPrivateData; + remote_nwfilter_lookup_by_uuid_args args; + remote_nwfilter_lookup_by_uuid_ret ret; + + remoteDriverLock(priv); + + memcpy(args.uuid, uuid, VIR_UUID_BUFLEN); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NWFILTER_LOOKUP_BY_UUID, + (xdrproc_t)xdr_remote_nwfilter_lookup_by_uuid_args, (char *)&args, + (xdrproc_t)xdr_remote_nwfilter_lookup_by_uuid_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchNWFilterLookupByUUID has to be implemented manually */ + rv = get_nonnull_nwfilter(conn, ret.nwfilter); + xdr_free((xdrproc_t)xdr_remote_nwfilter_lookup_by_uuid_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteNWFilterUndefine(virNWFilterPtr nwfilter) @@ -1934,7 +2514,33 @@ done: /* remoteDispatchOpen has to be implemented manually */ -/* remoteDispatchSecretDefineXML has to be implemented manually */ +static virSecretPtr +remoteSecretDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) +{ + virSecretPtr rv = NULL; + struct private_data *priv = conn->secretPrivateData; + remote_secret_define_xml_args args; + remote_secret_define_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_SECRET_DEFINE_XML, + (xdrproc_t)xdr_remote_secret_define_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_secret_define_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_secret(conn, ret.secret); + xdr_free((xdrproc_t)xdr_remote_secret_define_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchSecretGetValue has to be implemented manually */ @@ -1965,9 +2571,60 @@ done: return rv; } -/* remoteDispatchSecretLookupByUsage has to be implemented manually */ +static virSecretPtr +remoteSecretLookupByUsage(virConnectPtr conn, int usageType, const char *usageID) +{ + virSecretPtr rv = NULL; + struct private_data *priv = conn->secretPrivateData; + remote_secret_lookup_by_usage_args args; + remote_secret_lookup_by_usage_ret ret; + + remoteDriverLock(priv); + + args.usageType = usageType; + args.usageID = (char *)usageID; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_SECRET_LOOKUP_BY_USAGE, + (xdrproc_t)xdr_remote_secret_lookup_by_usage_args, (char *)&args, + (xdrproc_t)xdr_remote_secret_lookup_by_usage_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_secret(conn, ret.secret); + xdr_free((xdrproc_t)xdr_remote_secret_lookup_by_usage_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virSecretPtr +remoteSecretLookupByUUID(virConnectPtr conn, const unsigned char *uuid) +{ + virSecretPtr rv = NULL; + struct private_data *priv = conn->secretPrivateData; + remote_secret_lookup_by_uuid_args args; + remote_secret_lookup_by_uuid_ret ret; + + remoteDriverLock(priv); + + memcpy(args.uuid, uuid, VIR_UUID_BUFLEN); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_SECRET_LOOKUP_BY_UUID, + (xdrproc_t)xdr_remote_secret_lookup_by_uuid_args, (char *)&args, + (xdrproc_t)xdr_remote_secret_lookup_by_uuid_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchSecretLookupByUUID has to be implemented manually */ + rv = get_nonnull_secret(conn, ret.secret); + xdr_free((xdrproc_t)xdr_remote_secret_lookup_by_uuid_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchSecretSetValue has to be implemented manually */ @@ -2042,9 +2699,61 @@ done: return rv; } -/* remoteDispatchStoragePoolCreateXML has to be implemented manually */ +static virStoragePoolPtr +remoteStoragePoolCreateXML(virConnectPtr conn, const char *xml, unsigned int flags) +{ + virStoragePoolPtr rv = NULL; + struct private_data *priv = conn->storagePrivateData; + remote_storage_pool_create_xml_args args; + remote_storage_pool_create_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_STORAGE_POOL_CREATE_XML, + (xdrproc_t)xdr_remote_storage_pool_create_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_create_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_pool(conn, ret.pool); + xdr_free((xdrproc_t)xdr_remote_storage_pool_create_xml_ret, (char *)&ret); -/* remoteDispatchStoragePoolDefineXML has to be implemented manually */ +done: + remoteDriverUnlock(priv); + return rv; +} + +static virStoragePoolPtr +remoteStoragePoolDefineXML(virConnectPtr conn, const char *xml, unsigned int flags) +{ + virStoragePoolPtr rv = NULL; + struct private_data *priv = conn->storagePrivateData; + remote_storage_pool_define_xml_args args; + remote_storage_pool_define_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DEFINE_XML, + (xdrproc_t)xdr_remote_storage_pool_define_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_define_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_pool(conn, ret.pool); + xdr_free((xdrproc_t)xdr_remote_storage_pool_define_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteStoragePoolDelete(virStoragePoolPtr pool, unsigned int flags) @@ -2178,11 +2887,86 @@ done: /* remoteDispatchStoragePoolListVolumes has to be implemented manually */ -/* remoteDispatchStoragePoolLookupByName has to be implemented manually */ +static virStoragePoolPtr +remoteStoragePoolLookupByName(virConnectPtr conn, const char *name) +{ + virStoragePoolPtr rv = NULL; + struct private_data *priv = conn->storagePrivateData; + remote_storage_pool_lookup_by_name_args args; + remote_storage_pool_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + args.name = (char *)name; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_storage_pool_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_pool(conn, ret.pool); + xdr_free((xdrproc_t)xdr_remote_storage_pool_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virStoragePoolPtr +remoteStoragePoolLookupByUUID(virConnectPtr conn, const unsigned char *uuid) +{ + virStoragePoolPtr rv = NULL; + struct private_data *priv = conn->storagePrivateData; + remote_storage_pool_lookup_by_uuid_args args; + remote_storage_pool_lookup_by_uuid_ret ret; + + remoteDriverLock(priv); + + memcpy(args.uuid, uuid, VIR_UUID_BUFLEN); -/* remoteDispatchStoragePoolLookupByUUID has to be implemented manually */ + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_UUID, + (xdrproc_t)xdr_remote_storage_pool_lookup_by_uuid_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_lookup_by_uuid_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_pool(conn, ret.pool); + xdr_free((xdrproc_t)xdr_remote_storage_pool_lookup_by_uuid_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virStoragePoolPtr +remoteStoragePoolLookupByVolume(virStorageVolPtr vol) +{ + virStoragePoolPtr rv = NULL; + struct private_data *priv = vol->conn->storagePrivateData; + remote_storage_pool_lookup_by_volume_args args; + remote_storage_pool_lookup_by_volume_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_vol(&args.vol, vol); + + memset(&ret, 0, sizeof ret); -/* remoteDispatchStoragePoolLookupByVolume has to be implemented manually */ + if (call(vol->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_VOLUME, + (xdrproc_t)xdr_remote_storage_pool_lookup_by_volume_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_lookup_by_volume_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_pool(vol->conn, ret.pool); + xdr_free((xdrproc_t)xdr_remote_storage_pool_lookup_by_volume_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteStoragePoolNumOfVolumes(virStoragePoolPtr pool) @@ -2281,9 +3065,64 @@ done: return rv; } -/* remoteDispatchStorageVolCreateXML has to be implemented manually */ +static virStorageVolPtr +remoteStorageVolCreateXML(virStoragePoolPtr pool, const char *xml, unsigned int flags) +{ + virStorageVolPtr rv = NULL; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_vol_create_xml_args args; + remote_storage_vol_create_xml_ret ret; + + remoteDriverLock(priv); -/* remoteDispatchStorageVolCreateXMLFrom has to be implemented manually */ + make_nonnull_storage_pool(&args.pool, pool); + args.xml = (char *)xml; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_CREATE_XML, + (xdrproc_t)xdr_remote_storage_vol_create_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_create_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_vol(pool->conn, ret.vol); + xdr_free((xdrproc_t)xdr_remote_storage_vol_create_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virStorageVolPtr +remoteStorageVolCreateXMLFrom(virStoragePoolPtr pool, const char *xml, virStorageVolPtr clonevol, unsigned int flags) +{ + virStorageVolPtr rv = NULL; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_vol_create_xml_from_args args; + remote_storage_vol_create_xml_from_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.xml = (char *)xml; + make_nonnull_storage_vol(&args.clonevol, clonevol); + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_CREATE_XML_FROM, + (xdrproc_t)xdr_remote_storage_vol_create_xml_from_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_create_xml_from_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_vol(pool->conn, ret.vol); + xdr_free((xdrproc_t)xdr_remote_storage_vol_create_xml_from_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteStorageVolDelete(virStorageVolPtr vol, unsigned int flags) @@ -2366,11 +3205,87 @@ done: return rv; } -/* remoteDispatchStorageVolLookupByKey has to be implemented manually */ +static virStorageVolPtr +remoteStorageVolLookupByKey(virConnectPtr conn, const char *key) +{ + virStorageVolPtr rv = NULL; + struct private_data *priv = conn->storagePrivateData; + remote_storage_vol_lookup_by_key_args args; + remote_storage_vol_lookup_by_key_ret ret; + + remoteDriverLock(priv); -/* remoteDispatchStorageVolLookupByName has to be implemented manually */ + args.key = (char *)key; -/* remoteDispatchStorageVolLookupByPath has to be implemented manually */ + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_KEY, + (xdrproc_t)xdr_remote_storage_vol_lookup_by_key_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_lookup_by_key_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_vol(conn, ret.vol); + xdr_free((xdrproc_t)xdr_remote_storage_vol_lookup_by_key_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virStorageVolPtr +remoteStorageVolLookupByName(virStoragePoolPtr pool, const char *name) +{ + virStorageVolPtr rv = NULL; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_vol_lookup_by_name_args args; + remote_storage_vol_lookup_by_name_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + args.name = (char *)name; + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_NAME, + (xdrproc_t)xdr_remote_storage_vol_lookup_by_name_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_lookup_by_name_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_vol(pool->conn, ret.vol); + xdr_free((xdrproc_t)xdr_remote_storage_vol_lookup_by_name_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virStorageVolPtr +remoteStorageVolLookupByPath(virConnectPtr conn, const char *path) +{ + virStorageVolPtr rv = NULL; + struct private_data *priv = conn->storagePrivateData; + remote_storage_vol_lookup_by_path_args args; + remote_storage_vol_lookup_by_path_ret ret; + + remoteDriverLock(priv); + + args.path = (char *)path; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_PATH, + (xdrproc_t)xdr_remote_storage_vol_lookup_by_path_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_lookup_by_path_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_storage_vol(conn, ret.vol); + xdr_free((xdrproc_t)xdr_remote_storage_vol_lookup_by_path_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchStorageVolUpload has to be implemented manually */ diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index a67f9f6..79ebfb3 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -1810,31 +1810,6 @@ done: return rv; } - -static int -remoteGetMaxVcpus (virConnectPtr conn, const char *type) -{ - int rv = -1; - remote_get_max_vcpus_args args; - remote_get_max_vcpus_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - args.type = type == NULL ? NULL : (char **) &type; - if (call (conn, priv, 0, REMOTE_PROC_GET_MAX_VCPUS, - (xdrproc_t) xdr_remote_get_max_vcpus_args, (char *) &args, - (xdrproc_t) xdr_remote_get_max_vcpus_ret, (char *) &ret) == -1) - goto done; - - rv = ret.max_vcpus; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteNodeGetInfo (virConnectPtr conn, virNodeInfoPtr info) { @@ -1908,29 +1883,6 @@ done: return rv; } -static unsigned long long -remoteNodeGetFreeMemory (virConnectPtr conn) -{ - unsigned long long rv = 0; /* 0 is error value this special function*/ - remote_node_get_free_memory_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NODE_GET_FREE_MEMORY, - (xdrproc_t) xdr_void, NULL, - (xdrproc_t) xdr_remote_node_get_free_memory_ret, (char *)&ret) == -1) - goto done; - - rv = ret.freeMem; - -done: - remoteDriverUnlock(priv); - return rv; -} - - static int remoteListDomains (virConnectPtr conn, int *ids, int maxids) { @@ -1976,113 +1928,6 @@ done: return rv; } -static virDomainPtr -remoteDomainCreateXML (virConnectPtr conn, - const char *xmlDesc, - unsigned int flags) -{ - virDomainPtr dom = NULL; - remote_domain_create_xml_args args; - remote_domain_create_xml_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - args.xml_desc = (char *) xmlDesc; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_CREATE_XML, - (xdrproc_t) xdr_remote_domain_create_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_create_xml_ret, (char *) &ret) == -1) - goto done; - - dom = get_nonnull_domain (conn, ret.dom); - xdr_free ((xdrproc_t) &xdr_remote_domain_create_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return dom; -} - -static virDomainPtr -remoteDomainLookupByID (virConnectPtr conn, int id) -{ - virDomainPtr dom = NULL; - remote_domain_lookup_by_id_args args; - remote_domain_lookup_by_id_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - args.id = id; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_LOOKUP_BY_ID, - (xdrproc_t) xdr_remote_domain_lookup_by_id_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_lookup_by_id_ret, (char *) &ret) == -1) - goto done; - - dom = get_nonnull_domain (conn, ret.dom); - xdr_free ((xdrproc_t) &xdr_remote_domain_lookup_by_id_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return dom; -} - -static virDomainPtr -remoteDomainLookupByUUID (virConnectPtr conn, const unsigned char *uuid) -{ - virDomainPtr dom = NULL; - remote_domain_lookup_by_uuid_args args; - remote_domain_lookup_by_uuid_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memcpy (args.uuid, uuid, VIR_UUID_BUFLEN); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_LOOKUP_BY_UUID, - (xdrproc_t) xdr_remote_domain_lookup_by_uuid_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_lookup_by_uuid_ret, (char *) &ret) == -1) - goto done; - - dom = get_nonnull_domain (conn, ret.dom); - xdr_free ((xdrproc_t) &xdr_remote_domain_lookup_by_uuid_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return dom; -} - -static virDomainPtr -remoteDomainLookupByName (virConnectPtr conn, const char *name) -{ - virDomainPtr dom = NULL; - remote_domain_lookup_by_name_args args; - remote_domain_lookup_by_name_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - args.name = (char *) name; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_domain_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - dom = get_nonnull_domain (conn, ret.dom); - xdr_free ((xdrproc_t) &xdr_remote_domain_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return dom; -} - static int remoteDomainDestroy (virDomainPtr domain) { @@ -2666,68 +2511,6 @@ done: return rv; } -static char * -remoteDomainXMLFromNative (virConnectPtr conn, - const char *format, - const char *config, - unsigned int flags) -{ - char *rv = NULL; - remote_domain_xml_from_native_args args; - remote_domain_xml_from_native_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - args.nativeFormat = (char *)format; - args.nativeConfig = (char *)config; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_XML_FROM_NATIVE, - (xdrproc_t) xdr_remote_domain_xml_from_native_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_xml_from_native_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.domainXml; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static char * -remoteDomainXMLToNative (virConnectPtr conn, - const char *format, - const char *xml, - unsigned int flags) -{ - char *rv = NULL; - remote_domain_xml_to_native_args args; - remote_domain_xml_to_native_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - args.nativeFormat = (char *)format; - args.domainXml = (char *)xml; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_XML_TO_NATIVE, - (xdrproc_t) xdr_remote_domain_xml_to_native_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_xml_to_native_ret, (char *) &ret) == -1) - goto done; - - /* Caller frees. */ - rv = ret.nativeConfig; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteDomainMigratePrepare (virConnectPtr dconn, char **cookie, int *cookielen, @@ -3062,32 +2845,6 @@ done: return rv; } -static virDomainPtr -remoteDomainDefineXML (virConnectPtr conn, const char *xml) -{ - virDomainPtr dom = NULL; - remote_domain_define_xml_args args; - remote_domain_define_xml_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - args.xml = (char *) xml; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_DOMAIN_DEFINE_XML, - (xdrproc_t) xdr_remote_domain_define_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_define_xml_ret, (char *) &ret) == -1) - goto done; - - dom = get_nonnull_domain (conn, ret.dom); - xdr_free ((xdrproc_t) xdr_remote_domain_define_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return dom; -} - static int remoteDomainGetAutostart (virDomainPtr domain, int *autostart) { @@ -3711,112 +3468,6 @@ done: return rv; } -static virNetworkPtr -remoteNetworkLookupByUUID (virConnectPtr conn, - const unsigned char *uuid) -{ - virNetworkPtr net = NULL; - remote_network_lookup_by_uuid_args args; - remote_network_lookup_by_uuid_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - memcpy (args.uuid, uuid, VIR_UUID_BUFLEN); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NETWORK_LOOKUP_BY_UUID, - (xdrproc_t) xdr_remote_network_lookup_by_uuid_args, (char *) &args, - (xdrproc_t) xdr_remote_network_lookup_by_uuid_ret, (char *) &ret) == -1) - goto done; - - net = get_nonnull_network (conn, ret.net); - xdr_free ((xdrproc_t) &xdr_remote_network_lookup_by_uuid_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return net; -} - -static virNetworkPtr -remoteNetworkLookupByName (virConnectPtr conn, - const char *name) -{ - virNetworkPtr net = NULL; - remote_network_lookup_by_name_args args; - remote_network_lookup_by_name_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - args.name = (char *) name; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NETWORK_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_network_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_network_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - net = get_nonnull_network (conn, ret.net); - xdr_free ((xdrproc_t) &xdr_remote_network_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return net; -} - -static virNetworkPtr -remoteNetworkCreateXML (virConnectPtr conn, const char *xmlDesc) -{ - virNetworkPtr net = NULL; - remote_network_create_xml_args args; - remote_network_create_xml_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - args.xml = (char *) xmlDesc; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NETWORK_CREATE_XML, - (xdrproc_t) xdr_remote_network_create_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_network_create_xml_ret, (char *) &ret) == -1) - goto done; - - net = get_nonnull_network (conn, ret.net); - xdr_free ((xdrproc_t) &xdr_remote_network_create_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return net; -} - -static virNetworkPtr -remoteNetworkDefineXML (virConnectPtr conn, const char *xml) -{ - virNetworkPtr net = NULL; - remote_network_define_xml_args args; - remote_network_define_xml_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - args.xml = (char *) xml; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NETWORK_DEFINE_XML, - (xdrproc_t) xdr_remote_network_define_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_network_define_xml_ret, (char *) &ret) == -1) - goto done; - - net = get_nonnull_network (conn, ret.net); - xdr_free ((xdrproc_t) &xdr_remote_network_define_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return net; -} - static int remoteNetworkGetAutostart (virNetworkPtr network, int *autostart) { @@ -4024,89 +3675,6 @@ done: return rv; } -static virInterfacePtr -remoteInterfaceLookupByName (virConnectPtr conn, - const char *name) -{ - virInterfacePtr iface = NULL; - remote_interface_lookup_by_name_args args; - remote_interface_lookup_by_name_ret ret; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - - args.name = (char *) name; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_INTERFACE_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_interface_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_interface_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - iface = get_nonnull_interface (conn, ret.iface); - xdr_free ((xdrproc_t) &xdr_remote_interface_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return iface; -} - -static virInterfacePtr -remoteInterfaceLookupByMACString (virConnectPtr conn, - const char *mac) -{ - virInterfacePtr iface = NULL; - remote_interface_lookup_by_mac_string_args args; - remote_interface_lookup_by_mac_string_ret ret; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - - args.mac = (char *) mac; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_INTERFACE_LOOKUP_BY_MAC_STRING, - (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_args, (char *) &args, - (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_ret, (char *) &ret) == -1) - goto done; - - iface = get_nonnull_interface (conn, ret.iface); - xdr_free ((xdrproc_t) &xdr_remote_interface_lookup_by_mac_string_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return iface; -} - -static virInterfacePtr -remoteInterfaceDefineXML (virConnectPtr conn, - const char *xmlDesc, - unsigned int flags) -{ - virInterfacePtr iface = NULL; - remote_interface_define_xml_args args; - remote_interface_define_xml_ret ret; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - - args.xml = (char *) xmlDesc; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_INTERFACE_DEFINE_XML, - (xdrproc_t) xdr_remote_interface_define_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_interface_define_xml_ret, (char *) &ret) == -1) - goto done; - - iface = get_nonnull_interface (conn, ret.iface); - xdr_free ((xdrproc_t) &xdr_remote_interface_define_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return iface; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -4332,140 +3900,6 @@ done: return rv; } -static virStoragePoolPtr -remoteStoragePoolLookupByUUID (virConnectPtr conn, - const unsigned char *uuid) -{ - virStoragePoolPtr pool = NULL; - remote_storage_pool_lookup_by_uuid_args args; - remote_storage_pool_lookup_by_uuid_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - memcpy (args.uuid, uuid, VIR_UUID_BUFLEN); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_UUID, - (xdrproc_t) xdr_remote_storage_pool_lookup_by_uuid_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_lookup_by_uuid_ret, (char *) &ret) == -1) - goto done; - - pool = get_nonnull_storage_pool (conn, ret.pool); - xdr_free ((xdrproc_t) &xdr_remote_storage_pool_lookup_by_uuid_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return pool; -} - -static virStoragePoolPtr -remoteStoragePoolLookupByName (virConnectPtr conn, - const char *name) -{ - virStoragePoolPtr pool = NULL; - remote_storage_pool_lookup_by_name_args args; - remote_storage_pool_lookup_by_name_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - args.name = (char *) name; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_storage_pool_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - pool = get_nonnull_storage_pool (conn, ret.pool); - xdr_free ((xdrproc_t) &xdr_remote_storage_pool_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return pool; -} - -static virStoragePoolPtr -remoteStoragePoolLookupByVolume (virStorageVolPtr vol) -{ - virStoragePoolPtr pool = NULL; - remote_storage_pool_lookup_by_volume_args args; - remote_storage_pool_lookup_by_volume_ret ret; - struct private_data *priv = vol->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_vol (&args.vol, vol); - - memset (&ret, 0, sizeof ret); - if (call (vol->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_VOLUME, - (xdrproc_t) xdr_remote_storage_pool_lookup_by_volume_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_lookup_by_volume_ret, (char *) &ret) == -1) - goto done; - - pool = get_nonnull_storage_pool (vol->conn, ret.pool); - xdr_free ((xdrproc_t) &xdr_remote_storage_pool_lookup_by_volume_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return pool; -} - -static virStoragePoolPtr -remoteStoragePoolCreateXML (virConnectPtr conn, const char *xmlDesc, unsigned int flags) -{ - virStoragePoolPtr pool = NULL; - remote_storage_pool_create_xml_args args; - remote_storage_pool_create_xml_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - args.xml = (char *) xmlDesc; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_STORAGE_POOL_CREATE_XML, - (xdrproc_t) xdr_remote_storage_pool_create_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_create_xml_ret, (char *) &ret) == -1) - goto done; - - pool = get_nonnull_storage_pool (conn, ret.pool); - xdr_free ((xdrproc_t) &xdr_remote_storage_pool_create_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return pool; -} - -static virStoragePoolPtr -remoteStoragePoolDefineXML (virConnectPtr conn, const char *xml, unsigned int flags) -{ - virStoragePoolPtr pool = NULL; - remote_storage_pool_define_xml_args args; - remote_storage_pool_define_xml_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - args.xml = (char *) xml; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_STORAGE_POOL_DEFINE_XML, - (xdrproc_t) xdr_remote_storage_pool_define_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_define_xml_ret, (char *) &ret) == -1) - goto done; - - pool = get_nonnull_storage_pool (conn, ret.pool); - xdr_free ((xdrproc_t) &xdr_remote_storage_pool_define_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return pool; -} - static int remoteStoragePoolGetInfo (virStoragePoolPtr pool, virStoragePoolInfoPtr info) { @@ -4580,151 +4014,6 @@ done: return rv; } - - -static virStorageVolPtr -remoteStorageVolLookupByName (virStoragePoolPtr pool, - const char *name) -{ - virStorageVolPtr vol = NULL; - remote_storage_vol_lookup_by_name_args args; - remote_storage_vol_lookup_by_name_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool(&args.pool, pool); - args.name = (char *) name; - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_storage_vol_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - vol = get_nonnull_storage_vol (pool->conn, ret.vol); - xdr_free ((xdrproc_t) &xdr_remote_storage_vol_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return vol; -} - -static virStorageVolPtr -remoteStorageVolLookupByKey (virConnectPtr conn, - const char *key) -{ - virStorageVolPtr vol = NULL; - remote_storage_vol_lookup_by_key_args args; - remote_storage_vol_lookup_by_key_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - args.key = (char *) key; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_KEY, - (xdrproc_t) xdr_remote_storage_vol_lookup_by_key_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_lookup_by_key_ret, (char *) &ret) == -1) - goto done; - - vol = get_nonnull_storage_vol (conn, ret.vol); - xdr_free ((xdrproc_t) &xdr_remote_storage_vol_lookup_by_key_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return vol; -} - -static virStorageVolPtr -remoteStorageVolLookupByPath (virConnectPtr conn, - const char *path) -{ - virStorageVolPtr vol = NULL; - remote_storage_vol_lookup_by_path_args args; - remote_storage_vol_lookup_by_path_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - args.path = (char *) path; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_STORAGE_VOL_LOOKUP_BY_PATH, - (xdrproc_t) xdr_remote_storage_vol_lookup_by_path_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_lookup_by_path_ret, (char *) &ret) == -1) - goto done; - - vol = get_nonnull_storage_vol (conn, ret.vol); - xdr_free ((xdrproc_t) &xdr_remote_storage_vol_lookup_by_path_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return vol; -} - -static virStorageVolPtr -remoteStorageVolCreateXML (virStoragePoolPtr pool, const char *xmlDesc, - unsigned int flags) -{ - virStorageVolPtr vol = NULL; - remote_storage_vol_create_xml_args args; - remote_storage_vol_create_xml_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - args.xml = (char *) xmlDesc; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_CREATE_XML, - (xdrproc_t) xdr_remote_storage_vol_create_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_create_xml_ret, (char *) &ret) == -1) - goto done; - - vol = get_nonnull_storage_vol (pool->conn, ret.vol); - xdr_free ((xdrproc_t) &xdr_remote_storage_vol_create_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return vol; -} - -static virStorageVolPtr -remoteStorageVolCreateXMLFrom (virStoragePoolPtr pool, - const char *xmlDesc, - virStorageVolPtr clonevol, - unsigned int flags) -{ - virStorageVolPtr newvol = NULL; - remote_storage_vol_create_xml_from_args args; - remote_storage_vol_create_xml_from_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - make_nonnull_storage_vol (&args.clonevol, clonevol); - args.xml = (char *) xmlDesc; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_CREATE_XML_FROM, - (xdrproc_t) xdr_remote_storage_vol_create_xml_from_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_create_xml_from_ret, (char *) &ret) == -1) - goto done; - - newvol = get_nonnull_storage_vol (pool->conn, ret.vol); - xdr_free ((xdrproc_t) &xdr_remote_storage_vol_create_xml_from_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return newvol; -} - static int remoteStorageVolGetInfo (virStorageVolPtr vol, virStorageVolInfoPtr info) { @@ -4881,34 +4170,6 @@ done: return rv; } - -static virNodeDevicePtr remoteNodeDeviceLookupByName(virConnectPtr conn, - const char *name) -{ - remote_node_device_lookup_by_name_args args; - remote_node_device_lookup_by_name_ret ret; - virNodeDevicePtr dev = NULL; - struct private_data *priv = conn->devMonPrivateData; - - remoteDriverLock(priv); - - args.name = (char *)name; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NODE_DEVICE_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_node_device_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_node_device_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - dev = get_nonnull_node_device(conn, ret.dev); - - xdr_free ((xdrproc_t) xdr_remote_node_device_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return dev; -} - static char *remoteNodeDeviceGetParent(virNodeDevicePtr dev) { char *rv = NULL; @@ -5067,36 +4328,6 @@ done: return rv; } - -static virNodeDevicePtr -remoteNodeDeviceCreateXML(virConnectPtr conn, - const char *xmlDesc, - unsigned int flags) -{ - remote_node_device_create_xml_args args; - remote_node_device_create_xml_ret ret; - virNodeDevicePtr dev = NULL; - struct private_data *priv = conn->devMonPrivateData; - - remoteDriverLock(priv); - - memset(&ret, 0, sizeof ret); - args.xml_desc = (char *)xmlDesc; - args.flags = flags; - - if (call(conn, priv, 0, REMOTE_PROC_NODE_DEVICE_CREATE_XML, - (xdrproc_t) xdr_remote_node_device_create_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_node_device_create_xml_ret, (char *) &ret) == -1) - goto done; - - dev = get_nonnull_node_device(conn, ret.dev); - xdr_free ((xdrproc_t) xdr_remote_node_device_create_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return dev; -} - /* ------------------------------------------------------------- */ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -5245,62 +4476,6 @@ done: return rv; } - - -static virNWFilterPtr -remoteNWFilterLookupByUUID (virConnectPtr conn, - const unsigned char *uuid) -{ - virNWFilterPtr net = NULL; - remote_nwfilter_lookup_by_uuid_args args; - remote_nwfilter_lookup_by_uuid_ret ret; - struct private_data *priv = conn->nwfilterPrivateData; - - remoteDriverLock(priv); - - memcpy (args.uuid, uuid, VIR_UUID_BUFLEN); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NWFILTER_LOOKUP_BY_UUID, - (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_args, (char *) &args, - (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_ret, (char *) &ret) == -1) - goto done; - - net = get_nonnull_nwfilter (conn, ret.nwfilter); - xdr_free ((xdrproc_t) &xdr_remote_nwfilter_lookup_by_uuid_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return net; -} - -static virNWFilterPtr -remoteNWFilterLookupByName (virConnectPtr conn, - const char *name) -{ - virNWFilterPtr net = NULL; - remote_nwfilter_lookup_by_name_args args; - remote_nwfilter_lookup_by_name_ret ret; - struct private_data *priv = conn->nwfilterPrivateData; - - remoteDriverLock(priv); - - args.name = (char *) name; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NWFILTER_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - net = get_nonnull_nwfilter (conn, ret.nwfilter); - xdr_free ((xdrproc_t) &xdr_remote_nwfilter_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return net; -} - /*----------------------------------------------------------------------*/ static int @@ -6418,89 +5593,6 @@ done: return rv; } -static virSecretPtr -remoteSecretLookupByUUID (virConnectPtr conn, const unsigned char *uuid) -{ - virSecretPtr rv = NULL; - remote_secret_lookup_by_uuid_args args; - remote_secret_lookup_by_uuid_ret ret; - struct private_data *priv = conn->secretPrivateData; - - remoteDriverLock (priv); - - memcpy (args.uuid, uuid, VIR_UUID_BUFLEN); - - memset (&ret, 0, sizeof (ret)); - if (call (conn, priv, 0, REMOTE_PROC_SECRET_LOOKUP_BY_UUID, - (xdrproc_t) xdr_remote_secret_lookup_by_uuid_args, (char *) &args, - (xdrproc_t) xdr_remote_secret_lookup_by_uuid_ret, (char *) &ret) == -1) - goto done; - - rv = get_nonnull_secret (conn, ret.secret); - xdr_free ((xdrproc_t) xdr_remote_secret_lookup_by_uuid_ret, - (char *) &ret); - -done: - remoteDriverUnlock (priv); - return rv; -} - -static virSecretPtr -remoteSecretLookupByUsage (virConnectPtr conn, int usageType, const char *usageID) -{ - virSecretPtr rv = NULL; - remote_secret_lookup_by_usage_args args; - remote_secret_lookup_by_usage_ret ret; - struct private_data *priv = conn->secretPrivateData; - - remoteDriverLock (priv); - - args.usageType = usageType; - args.usageID = (char *)usageID; - - memset (&ret, 0, sizeof (ret)); - if (call (conn, priv, 0, REMOTE_PROC_SECRET_LOOKUP_BY_USAGE, - (xdrproc_t) xdr_remote_secret_lookup_by_usage_args, (char *) &args, - (xdrproc_t) xdr_remote_secret_lookup_by_usage_ret, (char *) &ret) == -1) - goto done; - - rv = get_nonnull_secret (conn, ret.secret); - xdr_free ((xdrproc_t) xdr_remote_secret_lookup_by_usage_ret, - (char *) &ret); - -done: - remoteDriverUnlock (priv); - return rv; -} - -static virSecretPtr -remoteSecretDefineXML (virConnectPtr conn, const char *xml, unsigned int flags) -{ - virSecretPtr rv = NULL; - remote_secret_define_xml_args args; - remote_secret_define_xml_ret ret; - struct private_data *priv = conn->secretPrivateData; - - remoteDriverLock (priv); - - args.xml = (char *) xml; - args.flags = flags; - - memset (&ret, 0, sizeof (ret)); - if (call (conn, priv, 0, REMOTE_PROC_SECRET_DEFINE_XML, - (xdrproc_t) xdr_remote_secret_define_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_secret_define_xml_ret, (char *) &ret) == -1) - goto done; - - rv = get_nonnull_secret (conn, ret.secret); - xdr_free ((xdrproc_t) xdr_remote_secret_define_xml_ret, - (char *) &ret); - -done: - remoteDriverUnlock (priv); - return rv; -} - static int remoteSecretSetValue (virSecretPtr secret, const unsigned char *value, size_t value_size, unsigned int flags) @@ -7173,36 +6265,6 @@ done: return rv; } -static virDomainSnapshotPtr -remoteDomainSnapshotCreateXML(virDomainPtr domain, - const char *xmlDesc, - unsigned int flags) -{ - virDomainSnapshotPtr snapshot = NULL; - remote_domain_snapshot_create_xml_args args; - remote_domain_snapshot_create_xml_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.xml_desc = (char *) xmlDesc; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_CREATE_XML, - (xdrproc_t) xdr_remote_domain_snapshot_create_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_snapshot_create_xml_ret, (char *) &ret) == -1) - goto done; - - snapshot = get_nonnull_domain_snapshot(domain, ret.snap); - xdr_free ((xdrproc_t) &xdr_remote_domain_snapshot_create_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return snapshot; -} - static int remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, int maxnames, unsigned int flags) @@ -7266,64 +6328,6 @@ done: return rv; } - -static virDomainSnapshotPtr -remoteDomainSnapshotLookupByName (virDomainPtr domain, const char *name, - unsigned int flags) -{ - virDomainSnapshotPtr snapshot = NULL; - remote_domain_snapshot_lookup_by_name_args args; - remote_domain_snapshot_lookup_by_name_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain(&args.dom, domain); - args.name = (char *) name; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_LOOKUP_BY_NAME, - (xdrproc_t) xdr_remote_domain_snapshot_lookup_by_name_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_snapshot_lookup_by_name_ret, (char *) &ret) == -1) - goto done; - - snapshot = get_nonnull_domain_snapshot (domain, ret.snap); - xdr_free ((xdrproc_t) &xdr_remote_domain_snapshot_lookup_by_name_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return snapshot; -} - -static virDomainSnapshotPtr -remoteDomainSnapshotCurrent(virDomainPtr domain, - unsigned int flags) -{ - virDomainSnapshotPtr snapshot = NULL; - remote_domain_snapshot_current_args args; - remote_domain_snapshot_current_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain(&args.dom, domain); - args.flags = flags; - - memset(&ret, 0, sizeof ret); - if (call(domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_CURRENT, - (xdrproc_t) xdr_remote_domain_snapshot_current_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_snapshot_current_ret, (char *) &ret) == -1) - goto done; - - snapshot = get_nonnull_domain_snapshot(domain, ret.snap); - xdr_free((xdrproc_t) &xdr_remote_domain_snapshot_current_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return snapshot; -} - static int remoteDomainEventRegisterAny(virConnectPtr conn, virDomainPtr dom, int eventID, -- 1.7.0.4

--- daemon/remote_generator.pl | 63 +++++++--- src/remote/remote_client_bodies.c | 257 ++++++++++++++++++++++++++++++++++- src/remote/remote_driver.c | 266 ------------------------------------- 3 files changed, 296 insertions(+), 290 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 5045b7f..b0e9a4c 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -751,14 +751,9 @@ elsif ($opt_k) { "AuthPolkit", "CPUBaseline", - "DomainBlockStats", "DomainCreate", "DomainDestroy", "DomainGetAutostart", - "DomainGetBlockInfo", - "DomainGetInfo", - "DomainGetJobInfo", - "DomainInterfaceStats", "DomainMigrateFinish", "NWFilterDefineXML", # public API and XDR protocol mismatch "DomainMigratePerform", @@ -772,8 +767,6 @@ elsif ($opt_k) { "ListDefinedInterfaces", "ListNWFilters", "SupportsFeature", - "StorageVolGetInfo", - "StoragePoolGetInfo", "NodeListDevices", "NodeGetCellsFreeMemory", "ListDefinedNetworks", @@ -783,7 +776,6 @@ elsif ($opt_k) { "NetworkGetAutostart", "StoragePoolGetAutostart", "SecretSetValue", - "NodeGetInfo", "GetURI", "ListInterfaces", "ListDefinedStoragePools", @@ -831,16 +823,13 @@ elsif ($opt_k) { next; } + # handle arguments to the function my @args_list = (); my @vars_list = (); my @setters_list = (); - my @ret_list = (); my $priv_src = "conn"; my $priv_name = "privateData"; my $call_args = "&args"; - my $call_ret = "&ret"; - my $single_ret_var = "int rv = -1"; - my $single_ret_type = "int"; if ($call->{args} eq "void") { $call_args = "NULL"; @@ -937,6 +926,10 @@ elsif ($opt_k) { } } + if (! @args_list) { + push(@args_list, "virConnectPtr conn"); + } + # fix priv_name for the NumOf* functions if ($priv_name eq "privateData" and !($call->{ProcName} =~ m/Domains/) and @@ -946,13 +939,36 @@ elsif ($opt_k) { $priv_name = "${prefix}PrivateData"; } + # handle return values of the function + my @ret_list = (); + my $call_ret = "&ret"; + my $single_ret_var = "int rv = -1"; + my $single_ret_type = "int"; + my $multi_ret = 0; + + if ($call->{ret} ne "void" and + scalar(@{$call->{ret_members}}) > 1) { + $multi_ret = 1; + } + if ($call->{ret} eq "void") { $call_ret = "NULL"; } else { push(@vars_list, "$call->{ret} ret"); foreach my $ret_member (@{$call->{ret_members}}) { - if ($ret_member =~ m/remote_nonnull_string (\S+);/) { + if ($multi_ret) { + if ($ret_member =~ m/(char|short|int|hyper) (\S+)\[\S+\];/) { + push(@ret_list, "memcpy(result->$2, ret.$2, sizeof result->$2);"); + } elsif ($ret_member =~ m/char (\S+);/ or + $ret_member =~ m/short (\S+);/ or + $ret_member =~ m/int (\S+);/ or + $ret_member =~ m/hyper (\S+);/) { + push(@ret_list, "result->$1 = ret.$1;"); + } else { + die "unhandled type for multi-return-value: $ret_member"; + } + } elsif ($ret_member =~ m/remote_nonnull_string (\S+);/) { push(@ret_list, "rv = ret.$1;"); $single_ret_var = "char *rv = NULL"; $single_ret_type = "char *"; @@ -998,8 +1014,21 @@ elsif ($opt_k) { } } - if (! @args_list) { - push(@args_list, "virConnectPtr conn"); + # select struct type for multi-return-value functions + if ($multi_ret) { + my $last_arg; + my $struct_name = $call->{ProcName}; + $struct_name =~ s/Get//; + + if ($call->{ProcName} eq "DomainGetBlockInfo") { + $last_arg = pop(@args_list); + } + + push(@args_list, "vir${struct_name}Ptr result"); + + if (defined $last_arg) { + push(@args_list, $last_arg); + } } # print function @@ -1047,7 +1076,9 @@ elsif ($opt_k) { print " "; print join("\n ", @ret_list); print "\n"; - } else { + } + + if ($multi_ret or !@ret_list) { print " rv = 0;\n"; } diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c index 5471c1b..334b963 100644 --- a/src/remote/remote_client_bodies.c +++ b/src/remote/remote_client_bodies.c @@ -117,7 +117,37 @@ done: /* remoteDispatchDomainBlockPeek has to be implemented manually */ -/* remoteDispatchDomainBlockStats has to be implemented manually */ +static int +remoteDomainBlockStats(virDomainPtr dom, const char *path, virDomainBlockStatsPtr result) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_block_stats_args args; + remote_domain_block_stats_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.path = (char *)path; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_BLOCK_STATS, + (xdrproc_t)xdr_remote_domain_block_stats_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_block_stats_ret, (char *)&ret) == -1) + goto done; + + result->rd_req = ret.rd_req; + result->rd_bytes = ret.rd_bytes; + result->wr_req = ret.wr_req; + result->wr_bytes = ret.wr_bytes; + result->errs = ret.errs; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainCoreDump(virDomainPtr dom, const char *to, int flags) @@ -293,11 +323,105 @@ done: /* remoteDispatchDomainGetBlkioParameters has to be implemented manually */ -/* remoteDispatchDomainGetBlockInfo has to be implemented manually */ +static int +remoteDomainGetBlockInfo(virDomainPtr dom, const char *path, virDomainBlockInfoPtr result, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_block_info_args args; + remote_domain_get_block_info_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.path = (char *)path; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_BLOCK_INFO, + (xdrproc_t)xdr_remote_domain_get_block_info_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_block_info_ret, (char *)&ret) == -1) + goto done; + + result->allocation = ret.allocation; + result->capacity = ret.capacity; + result->physical = ret.physical; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainGetInfo(virDomainPtr dom, virDomainInfoPtr result) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_info_args args; + remote_domain_get_info_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_INFO, + (xdrproc_t)xdr_remote_domain_get_info_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_info_ret, (char *)&ret) == -1) + goto done; -/* remoteDispatchDomainGetInfo has to be implemented manually */ + result->state = ret.state; + result->maxMem = ret.maxMem; + result->memory = ret.memory; + result->nrVirtCpu = ret.nrVirtCpu; + result->cpuTime = ret.cpuTime; + rv = 0; -/* remoteDispatchDomainGetJobInfo has to be implemented manually */ +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainGetJobInfo(virDomainPtr dom, virDomainJobInfoPtr result) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_job_info_args args; + remote_domain_get_job_info_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_JOB_INFO, + (xdrproc_t)xdr_remote_domain_get_job_info_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_job_info_ret, (char *)&ret) == -1) + goto done; + + result->type = ret.type; + result->timeElapsed = ret.timeElapsed; + result->timeRemaining = ret.timeRemaining; + result->dataTotal = ret.dataTotal; + result->dataProcessed = ret.dataProcessed; + result->dataRemaining = ret.dataRemaining; + result->memTotal = ret.memTotal; + result->memProcessed = ret.memProcessed; + result->memRemaining = ret.memRemaining; + result->fileTotal = ret.fileTotal; + result->fileProcessed = ret.fileProcessed; + result->fileRemaining = ret.fileRemaining; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static unsigned long remoteDomainGetMaxMemory(virDomainPtr dom) @@ -468,7 +592,40 @@ done: return rv; } -/* remoteDispatchDomainInterfaceStats has to be implemented manually */ +static int +remoteDomainInterfaceStats(virDomainPtr dom, const char *path, virDomainInterfaceStatsPtr result) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_interface_stats_args args; + remote_domain_interface_stats_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + args.path = (char *)path; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_INTERFACE_STATS, + (xdrproc_t)xdr_remote_domain_interface_stats_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_interface_stats_ret, (char *)&ret) == -1) + goto done; + + result->rx_bytes = ret.rx_bytes; + result->rx_packets = ret.rx_packets; + result->rx_errs = ret.rx_errs; + result->rx_drop = ret.rx_drop; + result->tx_bytes = ret.tx_bytes; + result->tx_packets = ret.tx_packets; + result->tx_errs = ret.tx_errs; + result->tx_drop = ret.tx_drop; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainIsActive(virDomainPtr dom) @@ -2143,7 +2300,36 @@ done: return rv; } -/* remoteDispatchNodeGetInfo has to be implemented manually */ +static int +remoteNodeGetInfo(virConnectPtr conn, virNodeInfoPtr result) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_node_get_info_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NODE_GET_INFO, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_node_get_info_ret, (char *)&ret) == -1) + goto done; + + memcpy(result->model, ret.model, sizeof result->model); + result->memory = ret.memory; + result->cpus = ret.cpus; + result->mhz = ret.mhz; + result->nodes = ret.nodes; + result->sockets = ret.sockets; + result->cores = ret.cores; + result->threads = ret.threads; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchNodeGetSecurityModel has to be implemented manually */ @@ -2831,7 +3017,35 @@ done: /* remoteDispatchStoragePoolGetAutostart has to be implemented manually */ -/* remoteDispatchStoragePoolGetInfo has to be implemented manually */ +static int +remoteStoragePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr result) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_get_info_args args; + remote_storage_pool_get_info_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_GET_INFO, + (xdrproc_t)xdr_remote_storage_pool_get_info_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_get_info_ret, (char *)&ret) == -1) + goto done; + + result->state = ret.state; + result->capacity = ret.capacity; + result->allocation = ret.allocation; + result->available = ret.available; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteStoragePoolIsActive(virStoragePoolPtr pool) @@ -3177,7 +3391,34 @@ done: return rv; } -/* remoteDispatchStorageVolGetInfo has to be implemented manually */ +static int +remoteStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr result) +{ + int rv = -1; + struct private_data *priv = vol->conn->storagePrivateData; + remote_storage_vol_get_info_args args; + remote_storage_vol_get_info_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_vol(&args.vol, vol); + + memset(&ret, 0, sizeof ret); + + if (call(vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_GET_INFO, + (xdrproc_t)xdr_remote_storage_vol_get_info_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_vol_get_info_ret, (char *)&ret) == -1) + goto done; + + result->type = ret.type; + result->capacity = ret.capacity; + result->allocation = ret.allocation; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static char * remoteStorageVolGetPath(virStorageVolPtr vol) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 79ebfb3..6cbcc35 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -1811,37 +1811,6 @@ done: } static int -remoteNodeGetInfo (virConnectPtr conn, virNodeInfoPtr info) -{ - int rv = -1; - remote_node_get_info_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NODE_GET_INFO, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_node_get_info_ret, (char *) &ret) == -1) - goto done; - - if (virStrcpyStatic(info->model, ret.model) == NULL) - goto done; - info->memory = ret.memory; - info->cpus = ret.cpus; - info->mhz = ret.mhz; - info->nodes = ret.nodes; - info->sockets = ret.sockets; - info->cores = ret.cores; - info->threads = ret.threads; - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *freeMems, int startCell, @@ -2291,37 +2260,6 @@ done: } static int -remoteDomainGetInfo (virDomainPtr domain, virDomainInfoPtr info) -{ - int rv = -1; - remote_domain_get_info_args args; - remote_domain_get_info_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_INFO, - (xdrproc_t) xdr_remote_domain_get_info_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_info_ret, (char *) &ret) == -1) - goto done; - - info->state = ret.state; - info->maxMem = ret.maxMem; - info->memory = ret.memory; - info->nrVirtCpu = ret.nrVirtCpu; - info->cpuTime = ret.cpuTime; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainPinVcpu (virDomainPtr domain, unsigned int vcpu, unsigned char *cpumap, @@ -3035,78 +2973,6 @@ done: } static int -remoteDomainBlockStats (virDomainPtr domain, const char *path, - struct _virDomainBlockStats *stats) -{ - int rv = -1; - remote_domain_block_stats_args args; - remote_domain_block_stats_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.path = (char *) path; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_BLOCK_STATS, - (xdrproc_t) xdr_remote_domain_block_stats_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_block_stats_ret, (char *) &ret) - == -1) - goto done; - - stats->rd_req = ret.rd_req; - stats->rd_bytes = ret.rd_bytes; - stats->wr_req = ret.wr_req; - stats->wr_bytes = ret.wr_bytes; - stats->errs = ret.errs; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteDomainInterfaceStats (virDomainPtr domain, const char *path, - struct _virDomainInterfaceStats *stats) -{ - int rv = -1; - remote_domain_interface_stats_args args; - remote_domain_interface_stats_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.path = (char *) path; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_INTERFACE_STATS, - (xdrproc_t) xdr_remote_domain_interface_stats_args, - (char *) &args, - (xdrproc_t) xdr_remote_domain_interface_stats_ret, - (char *) &ret) == -1) - goto done; - - stats->rx_bytes = ret.rx_bytes; - stats->rx_packets = ret.rx_packets; - stats->rx_errs = ret.rx_errs; - stats->rx_drop = ret.rx_drop; - stats->tx_bytes = ret.tx_bytes; - stats->tx_packets = ret.tx_packets; - stats->tx_errs = ret.tx_errs; - stats->tx_drop = ret.tx_drop; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainMemoryStats (virDomainPtr domain, struct _virDomainMemoryStat *stats, unsigned int nr_stats) @@ -3253,40 +3119,6 @@ done: return rv; } -static int -remoteDomainGetBlockInfo (virDomainPtr domain, - const char *path, - virDomainBlockInfoPtr info, - unsigned int flags) -{ - int rv = -1; - remote_domain_get_block_info_args args; - remote_domain_get_block_info_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.path = (char*)path; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_BLOCK_INFO, - (xdrproc_t) xdr_remote_domain_get_block_info_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_block_info_ret, (char *) &ret) == -1) - goto done; - - info->allocation = ret.allocation; - info->capacity = ret.capacity; - info->physical = ret.physical; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -3901,36 +3733,6 @@ done: } static int -remoteStoragePoolGetInfo (virStoragePoolPtr pool, virStoragePoolInfoPtr info) -{ - int rv = -1; - remote_storage_pool_get_info_args args; - remote_storage_pool_get_info_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_GET_INFO, - (xdrproc_t) xdr_remote_storage_pool_get_info_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_get_info_ret, (char *) &ret) == -1) - goto done; - - info->state = ret.state; - info->capacity = ret.capacity; - info->allocation = ret.allocation; - info->available = ret.available; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteStoragePoolGetAutostart (virStoragePoolPtr pool, int *autostart) { int rv = -1; @@ -4014,35 +3816,6 @@ done: return rv; } -static int -remoteStorageVolGetInfo (virStorageVolPtr vol, virStorageVolInfoPtr info) -{ - int rv = -1; - remote_storage_vol_get_info_args args; - remote_storage_vol_get_info_ret ret; - struct private_data *priv = vol->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_vol (&args.vol, vol); - - memset (&ret, 0, sizeof ret); - if (call (vol->conn, priv, 0, REMOTE_PROC_STORAGE_VOL_GET_INFO, - (xdrproc_t) xdr_remote_storage_vol_get_info_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_vol_get_info_ret, (char *) &ret) == -1) - goto done; - - info->type = ret.type; - info->capacity = ret.capacity; - info->allocation = ret.allocation; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -6226,45 +5999,6 @@ done: return cpu; } - -static int -remoteDomainGetJobInfo (virDomainPtr domain, virDomainJobInfoPtr info) -{ - int rv = -1; - remote_domain_get_job_info_args args; - remote_domain_get_job_info_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_JOB_INFO, - (xdrproc_t) xdr_remote_domain_get_job_info_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_job_info_ret, (char *) &ret) == -1) - goto done; - - info->type = ret.type; - info->timeElapsed = ret.timeElapsed; - info->timeRemaining = ret.timeRemaining; - info->dataTotal = ret.dataTotal; - info->dataProcessed = ret.dataProcessed; - info->dataRemaining = ret.dataRemaining; - info->memTotal = ret.memTotal; - info->memProcessed = ret.memProcessed; - info->memRemaining = ret.memRemaining; - info->fileTotal = ret.fileTotal; - info->fileProcessed = ret.fileProcessed; - info->fileRemaining = ret.fileRemaining; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, int maxnames, unsigned int flags) -- 1.7.0.4

--- daemon/remote_generator.pl | 44 ++++++++----- src/remote/remote_client_bodies.c | 129 +++++++++++++++++++++++++++++++++++-- src/remote/remote_driver.c | 128 ------------------------------------ 3 files changed, 152 insertions(+), 149 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index b0e9a4c..774188b 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -473,9 +473,7 @@ elsif ($opt_b) { push(@ret_list, "ret->$1 = $1;"); $single_ret_var = $1; - if ($calls{$_}->{ProcName} eq "DomainGetAutostart" or - $calls{$_}->{ProcName} eq "NetworkGetAutostart" or - $calls{$_}->{ProcName} eq "StoragePoolGetAutostart") { + if ($calls{$_}->{ProcName} =~ m/GetAutostart$/) { $single_ret_by_ref = 1; } else { $single_ret_by_ref = 0; @@ -753,15 +751,12 @@ elsif ($opt_k) { "CPUBaseline", "DomainCreate", "DomainDestroy", - "DomainGetAutostart", "DomainMigrateFinish", "NWFilterDefineXML", # public API and XDR protocol mismatch "DomainMigratePerform", "DomainMigrateFinish2", "DomainSnapshotListNames", - "GetLibVersion", "FindStoragePoolSources", - "GetVersion", "IsSecure", "ListDefinedDomains", "ListDefinedInterfaces", @@ -773,8 +768,6 @@ elsif ($opt_k) { "StoragePoolListVolumes", "ListDomains", "ListStoragePools", - "NetworkGetAutostart", - "StoragePoolGetAutostart", "SecretSetValue", "GetURI", "ListInterfaces", @@ -995,18 +988,37 @@ elsif ($opt_k) { $single_ret_var = "vir${type_name}Ptr rv = NULL"; $single_ret_type = "vir${type_name}Ptr"; } elsif ($ret_member =~ m/^int (\S+);/) { - push(@ret_list, "rv = ret.$1;"); + my $arg_name = $1; + + if ($call->{ProcName} =~ m/GetAutostart$/) { + push(@args_list, "int *$arg_name"); + push(@ret_list, "if ($arg_name) *$arg_name = ret.$arg_name;"); + push(@ret_list, "rv = 0;"); + } else { + push(@ret_list, "rv = ret.$arg_name;"); + } + $single_ret_var = "int rv = -1"; $single_ret_type = "int"; } elsif ($ret_member =~ m/hyper (\S+);/) { - push(@ret_list, "rv = ret.$1;"); - - if ($call->{ProcName} eq "NodeGetFreeMemory") { - $single_ret_var = "unsigned long long rv = 0"; - $single_ret_type = "unsigned long long"; + my $arg_name = $1; + + if ($call->{ProcName} =~ m/Get(Lib)?Version/) { + push(@args_list, "unsigned long *$arg_name"); + push(@ret_list, "if ($arg_name) *$arg_name = ret.$arg_name;"); + push(@ret_list, "rv = 0;"); + $single_ret_var = "int rv = -1"; + $single_ret_type = "int"; } else { - $single_ret_var = "unsigned long rv = 0"; - $single_ret_type = "unsigned long"; + push(@ret_list, "rv = ret.$arg_name;"); + + if ($call->{ProcName} eq "NodeGetFreeMemory") { + $single_ret_var = "unsigned long long rv = 0"; + $single_ret_type = "unsigned long long"; + } else { + $single_ret_var = "unsigned long rv = 0"; + $single_ret_type = "unsigned long"; + } } } else { die "unhandled type for return value: $ret_member"; diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c index 334b963..e61055b 100644 --- a/src/remote/remote_client_bodies.c +++ b/src/remote/remote_client_bodies.c @@ -319,7 +319,32 @@ done: /* remoteDispatchDomainEventsRegisterAny has to be implemented manually */ -/* remoteDispatchDomainGetAutostart has to be implemented manually */ +static int +remoteDomainGetAutostart(virDomainPtr dom, int *autostart) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_get_autostart_args args; + remote_domain_get_autostart_ret ret; + + remoteDriverLock(priv); + + make_nonnull_domain(&args.dom, dom); + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_AUTOSTART, + (xdrproc_t)xdr_remote_domain_get_autostart_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_get_autostart_ret, (char *)&ret) == -1) + goto done; + + if (autostart) *autostart = ret.autostart; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainGetBlkioParameters has to be implemented manually */ @@ -1538,7 +1563,29 @@ done: return rv; } -/* remoteDispatchGetLibVersion has to be implemented manually */ +static int +remoteGetLibVersion(virConnectPtr conn, unsigned long *lib_ver) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_get_lib_version_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_GET_LIB_VERSION, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_get_lib_version_ret, (char *)&ret) == -1) + goto done; + + if (lib_ver) *lib_ver = ret.lib_ver; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteGetMaxVcpus(virConnectPtr conn, const char *type) @@ -1596,7 +1643,29 @@ done: /* remoteDispatchGetURI has to be implemented manually */ -/* remoteDispatchGetVersion has to be implemented manually */ +static int +remoteGetVersion(virConnectPtr conn, unsigned long *hv_ver) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_get_version_ret ret; + + remoteDriverLock(priv); + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_GET_VERSION, + (xdrproc_t)xdr_void, (char *)NULL, + (xdrproc_t)xdr_remote_get_version_ret, (char *)&ret) == -1) + goto done; + + if (hv_ver) *hv_ver = ret.hv_ver; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteInterfaceCreate(virInterfacePtr iface, unsigned int flags) @@ -1953,7 +2022,32 @@ done: return rv; } -/* remoteDispatchNetworkGetAutostart has to be implemented manually */ +static int +remoteNetworkGetAutostart(virNetworkPtr net, int *autostart) +{ + int rv = -1; + struct private_data *priv = net->conn->networkPrivateData; + remote_network_get_autostart_args args; + remote_network_get_autostart_ret ret; + + remoteDriverLock(priv); + + make_nonnull_network(&args.net, net); + + memset(&ret, 0, sizeof ret); + + if (call(net->conn, priv, 0, REMOTE_PROC_NETWORK_GET_AUTOSTART, + (xdrproc_t)xdr_remote_network_get_autostart_args, (char *)&args, + (xdrproc_t)xdr_remote_network_get_autostart_ret, (char *)&ret) == -1) + goto done; + + if (autostart) *autostart = ret.autostart; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static char * remoteNetworkGetBridgeName(virNetworkPtr net) @@ -3015,7 +3109,32 @@ done: return rv; } -/* remoteDispatchStoragePoolGetAutostart has to be implemented manually */ +static int +remoteStoragePoolGetAutostart(virStoragePoolPtr pool, int *autostart) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_get_autostart_args args; + remote_storage_pool_get_autostart_ret ret; + + remoteDriverLock(priv); + + make_nonnull_storage_pool(&args.pool, pool); + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_GET_AUTOSTART, + (xdrproc_t)xdr_remote_storage_pool_get_autostart_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_get_autostart_ret, (char *)&ret) == -1) + goto done; + + if (autostart) *autostart = ret.autostart; + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteStoragePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr result) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 6cbcc35..8dc71d6 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -1698,53 +1698,6 @@ done: return rv; } -static int -remoteGetVersion (virConnectPtr conn, unsigned long *hvVer) -{ - int rv = -1; - remote_get_version_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_GET_VERSION, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_get_version_ret, (char *) &ret) == -1) - goto done; - - if (hvVer) *hvVer = ret.hv_ver; - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteGetLibVersion (virConnectPtr conn, unsigned long *libVer) -{ - int rv = -1; - remote_get_lib_version_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_GET_LIB_VERSION, - (xdrproc_t) xdr_void, (char *) NULL, - (xdrproc_t) xdr_remote_get_lib_version_ret, - (char *) &ret) == -1) - goto done; - - if (libVer) *libVer = ret.lib_ver; - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteIsSecure(virConnectPtr conn) { int rv = -1; @@ -2783,32 +2736,6 @@ done: return rv; } -static int -remoteDomainGetAutostart (virDomainPtr domain, int *autostart) -{ - int rv = -1; - remote_domain_get_autostart_args args; - remote_domain_get_autostart_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_GET_AUTOSTART, - (xdrproc_t) xdr_remote_domain_get_autostart_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_get_autostart_ret, (char *) &ret) == -1) - goto done; - - if (autostart) *autostart = ret.autostart; - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - static char * remoteDomainGetSchedulerType (virDomainPtr domain, int *nparams) { @@ -3300,33 +3227,6 @@ done: return rv; } -static int -remoteNetworkGetAutostart (virNetworkPtr network, int *autostart) -{ - int rv = -1; - remote_network_get_autostart_args args; - remote_network_get_autostart_ret ret; - struct private_data *priv = network->conn->networkPrivateData; - - remoteDriverLock(priv); - - make_nonnull_network (&args.net, network); - - memset (&ret, 0, sizeof ret); - if (call (network->conn, priv, 0, REMOTE_PROC_NETWORK_GET_AUTOSTART, - (xdrproc_t) xdr_remote_network_get_autostart_args, (char *) &args, - (xdrproc_t) xdr_remote_network_get_autostart_ret, (char *) &ret) == -1) - goto done; - - if (autostart) *autostart = ret.autostart; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -3733,34 +3633,6 @@ done: } static int -remoteStoragePoolGetAutostart (virStoragePoolPtr pool, int *autostart) -{ - int rv = -1; - remote_storage_pool_get_autostart_args args; - remote_storage_pool_get_autostart_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - make_nonnull_storage_pool (&args.pool, pool); - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_GET_AUTOSTART, - (xdrproc_t) xdr_remote_storage_pool_get_autostart_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_get_autostart_ret, (char *) &ret) == -1) - goto done; - - if (autostart) *autostart = ret.autostart; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - - -static int remoteStoragePoolListVolumes (virStoragePoolPtr pool, char **const names, int maxnames) { int rv = -1; -- 1.7.0.4

Add generic versions of the open and close functions and call them. --- src/remote/remote_driver.c | 347 +++++++------------------------------------- 1 files changed, 51 insertions(+), 296 deletions(-) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 8dc71d6..777a7bf 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -3049,9 +3049,8 @@ done: /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) -remoteNetworkOpen (virConnectPtr conn, - virConnectAuthPtr auth, - int flags) +remoteGenericOpen(virConnectPtr conn, virConnectAuthPtr auth, + int flags, void **genericPrivateData) { if (inside_daemon) return VIR_DRV_OPEN_DECLINED; @@ -3060,45 +3059,48 @@ remoteNetworkOpen (virConnectPtr conn, STREQ (conn->driver->name, "remote")) { struct private_data *priv; - /* If we're here, the remote driver is already + /* If we're here, the remote driver is already * in use due to a) a QEMU uri, or b) a remote - * URI. So we can re-use existing connection - */ + * URI. So we can re-use existing connection */ priv = conn->privateData; remoteDriverLock(priv); priv->localUses++; - conn->networkPrivateData = priv; + *genericPrivateData = priv; + remoteDriverUnlock(priv); + return VIR_DRV_OPEN_SUCCESS; + } else if (conn->networkDriver && + STREQ (conn->networkDriver->name, "remote")) { + struct private_data *priv = conn->networkPrivateData; + remoteDriverLock(priv); + *genericPrivateData = priv; + priv->localUses++; remoteDriverUnlock(priv); return VIR_DRV_OPEN_SUCCESS; } else { /* Using a non-remote driver, so we need to open a * new connection for network APIs, forcing it to * use the UNIX transport. This handles Xen driver - * which doesn't have its own impl of the network APIs. - */ + * which doesn't have its own impl of the network APIs. */ struct private_data *priv; int ret; - ret = remoteOpenSecondaryDriver(conn, - auth, - flags, - &priv); + ret = remoteOpenSecondaryDriver(conn, auth, flags, &priv); if (ret == VIR_DRV_OPEN_SUCCESS) - conn->networkPrivateData = priv; + *genericPrivateData = priv; return ret; } } static int -remoteNetworkClose (virConnectPtr conn) +remoteGenericClose(virConnectPtr conn, void **genericPrivateData) { int rv = 0; - struct private_data *priv = conn->networkPrivateData; + struct private_data *priv = *genericPrivateData; remoteDriverLock(priv); priv->localUses--; if (!priv->localUses) { rv = doRemoteClose(conn, priv); - conn->networkPrivateData = NULL; + *genericPrivateData = NULL; remoteDriverUnlock(priv); virMutexDestroy(&priv->lock); VIR_FREE(priv); @@ -3108,6 +3110,18 @@ remoteNetworkClose (virConnectPtr conn) return rv; } +static virDrvOpenStatus ATTRIBUTE_NONNULL (1) +remoteNetworkOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags) +{ + return remoteGenericOpen(conn, auth, flags, &conn->networkPrivateData); +} + +static int +remoteNetworkClose(virConnectPtr conn) +{ + return remoteGenericClose(conn, &conn->networkPrivateData); +} + static int remoteListNetworks (virConnectPtr conn, char **const names, int maxnames) { @@ -3230,63 +3244,15 @@ done: /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) -remoteInterfaceOpen (virConnectPtr conn, - virConnectAuthPtr auth, - int flags) +remoteInterfaceOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags) { - if (inside_daemon) - return VIR_DRV_OPEN_DECLINED; - - if (conn->driver && - STREQ (conn->driver->name, "remote")) { - struct private_data *priv; - - /* If we're here, the remote driver is already - * in use due to a) a QEMU uri, or b) a remote - * URI. So we can re-use existing connection - */ - priv = conn->privateData; - remoteDriverLock(priv); - priv->localUses++; - conn->interfacePrivateData = priv; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else { - /* Using a non-remote driver, so we need to open a - * new connection for interface APIs, forcing it to - * use the UNIX transport. This handles Xen driver - * which doesn't have its own impl of the interface APIs. - */ - struct private_data *priv; - int ret; - ret = remoteOpenSecondaryDriver(conn, - auth, - flags, - &priv); - if (ret == VIR_DRV_OPEN_SUCCESS) - conn->interfacePrivateData = priv; - return ret; - } + return remoteGenericOpen(conn, auth, flags, &conn->interfacePrivateData); } static int -remoteInterfaceClose (virConnectPtr conn) +remoteInterfaceClose(virConnectPtr conn) { - int rv = 0; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - priv->localUses--; - if (!priv->localUses) { - rv = doRemoteClose(conn, priv); - conn->interfacePrivateData = NULL; - remoteDriverUnlock(priv); - virMutexDestroy(&priv->lock); - VIR_FREE(priv); - } - if (priv) - remoteDriverUnlock(priv); - return rv; + return remoteGenericClose(conn, &conn->interfacePrivateData); } static int @@ -3410,70 +3376,15 @@ done: /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) -remoteStorageOpen (virConnectPtr conn, - virConnectAuthPtr auth, - int flags) +remoteStorageOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags) { - if (inside_daemon) - return VIR_DRV_OPEN_DECLINED; - - if (conn->driver && - STREQ (conn->driver->name, "remote")) { - struct private_data *priv = conn->privateData; - /* If we're here, the remote driver is already - * in use due to a) a QEMU uri, or b) a remote - * URI. So we can re-use existing connection - */ - remoteDriverLock(priv); - priv->localUses++; - conn->storagePrivateData = priv; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else if (conn->networkDriver && - STREQ (conn->networkDriver->name, "remote")) { - struct private_data *priv = conn->networkPrivateData; - remoteDriverLock(priv); - conn->storagePrivateData = priv; - priv->localUses++; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else { - /* Using a non-remote driver, so we need to open a - * new connection for network APIs, forcing it to - * use the UNIX transport. This handles Xen driver - * which doesn't have its own impl of the network APIs. - */ - struct private_data *priv; - int ret; - ret = remoteOpenSecondaryDriver(conn, - auth, - flags, - &priv); - if (ret == VIR_DRV_OPEN_SUCCESS) - conn->storagePrivateData = priv; - return ret; - } + return remoteGenericOpen(conn, auth, flags, &conn->storagePrivateData); } static int -remoteStorageClose (virConnectPtr conn) +remoteStorageClose(virConnectPtr conn) { - int ret = 0; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - priv->localUses--; - if (!priv->localUses) { - ret = doRemoteClose(conn, priv); - conn->storagePrivateData = NULL; - remoteDriverUnlock(priv); - virMutexDestroy(&priv->lock); - VIR_FREE(priv); - } - if (priv) - remoteDriverUnlock(priv); - - return ret; + return remoteGenericClose(conn, &conn->storagePrivateData); } static int @@ -3691,68 +3602,15 @@ done: /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) -remoteDevMonOpen(virConnectPtr conn, - virConnectAuthPtr auth ATTRIBUTE_UNUSED, - int flags ATTRIBUTE_UNUSED) +remoteDevMonOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags) { - if (inside_daemon) - return VIR_DRV_OPEN_DECLINED; - - if (conn->driver && - STREQ (conn->driver->name, "remote")) { - struct private_data *priv = conn->privateData; - /* If we're here, the remote driver is already - * in use due to a) a QEMU uri, or b) a remote - * URI. So we can re-use existing connection - */ - remoteDriverLock(priv); - priv->localUses++; - conn->devMonPrivateData = priv; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else if (conn->networkDriver && - STREQ (conn->networkDriver->name, "remote")) { - struct private_data *priv = conn->networkPrivateData; - remoteDriverLock(priv); - conn->devMonPrivateData = priv; - priv->localUses++; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else { - /* Using a non-remote driver, so we need to open a - * new connection for network APIs, forcing it to - * use the UNIX transport. This handles Xen driver - * which doesn't have its own impl of the network APIs. - */ - struct private_data *priv; - int ret; - ret = remoteOpenSecondaryDriver(conn, - auth, - flags, - &priv); - if (ret == VIR_DRV_OPEN_SUCCESS) - conn->devMonPrivateData = priv; - return ret; - } + return remoteGenericOpen(conn, auth, flags, &conn->devMonPrivateData); } -static int remoteDevMonClose(virConnectPtr conn) +static int +remoteDevMonClose(virConnectPtr conn) { - int ret = 0; - struct private_data *priv = conn->devMonPrivateData; - - remoteDriverLock(priv); - priv->localUses--; - if (!priv->localUses) { - ret = doRemoteClose(conn, priv); - conn->devMonPrivateData = NULL; - remoteDriverUnlock(priv); - virMutexDestroy(&priv->lock); - VIR_FREE(priv); - } - if (priv) - remoteDriverUnlock(priv); - return ret; + return remoteGenericClose(conn, &conn->devMonPrivateData); } static int remoteNodeListDevices(virConnectPtr conn, @@ -3976,63 +3834,15 @@ done: /* ------------------------------------------------------------- */ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) -remoteNWFilterOpen (virConnectPtr conn, - virConnectAuthPtr auth, - int flags) +remoteNWFilterOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags) { - if (inside_daemon) - return VIR_DRV_OPEN_DECLINED; - - if (conn->driver && - STREQ (conn->driver->name, "remote")) { - struct private_data *priv; - - /* If we're here, the remote driver is already - * in use due to a) a QEMU uri, or b) a remote - * URI. So we can re-use existing connection - */ - priv = conn->privateData; - remoteDriverLock(priv); - priv->localUses++; - conn->nwfilterPrivateData = priv; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else { - /* Using a non-remote driver, so we need to open a - * new connection for network filtering APIs, forcing it to - * use the UNIX transport. This handles Xen driver - * which doesn't have its own impl of the network filtering APIs. - */ - struct private_data *priv; - int ret; - ret = remoteOpenSecondaryDriver(conn, - auth, - flags, - &priv); - if (ret == VIR_DRV_OPEN_SUCCESS) - conn->nwfilterPrivateData = priv; - return ret; - } + return remoteGenericOpen(conn, auth, flags, &conn->nwfilterPrivateData); } static int -remoteNWFilterClose (virConnectPtr conn) +remoteNWFilterClose(virConnectPtr conn) { - int rv = 0; - struct private_data *priv = conn->nwfilterPrivateData; - - remoteDriverLock(priv); - priv->localUses--; - if (!priv->localUses) { - rv = doRemoteClose(conn, priv); - conn->nwfilterPrivateData = NULL; - remoteDriverUnlock(priv); - virMutexDestroy(&priv->lock); - VIR_FREE(priv); - } - if (priv) - remoteDriverUnlock(priv); - return rv; + return remoteGenericClose(conn, &conn->nwfilterPrivateData); } static virNWFilterPtr @@ -5116,70 +4926,15 @@ no_memory: static virDrvOpenStatus ATTRIBUTE_NONNULL (1) -remoteSecretOpen (virConnectPtr conn, - virConnectAuthPtr auth, - int flags) +remoteSecretOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags) { - if (inside_daemon) - return VIR_DRV_OPEN_DECLINED; - - if (conn->driver && - STREQ (conn->driver->name, "remote")) { - struct private_data *priv; - - /* If we're here, the remote driver is already - * in use due to a) a QEMU uri, or b) a remote - * URI. So we can re-use existing connection - */ - priv = conn->privateData; - remoteDriverLock(priv); - priv->localUses++; - conn->secretPrivateData = priv; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else if (conn->networkDriver && - STREQ (conn->networkDriver->name, "remote")) { - struct private_data *priv = conn->networkPrivateData; - remoteDriverLock(priv); - conn->secretPrivateData = priv; - priv->localUses++; - remoteDriverUnlock(priv); - return VIR_DRV_OPEN_SUCCESS; - } else { - /* Using a non-remote driver, so we need to open a - * new connection for secret APIs, forcing it to - * use the UNIX transport. - */ - struct private_data *priv; - int ret; - ret = remoteOpenSecondaryDriver(conn, - auth, - flags, - &priv); - if (ret == VIR_DRV_OPEN_SUCCESS) - conn->secretPrivateData = priv; - return ret; - } + return remoteGenericOpen(conn, auth, flags, &conn->secretPrivateData); } static int remoteSecretClose (virConnectPtr conn) { - int rv = 0; - struct private_data *priv = conn->secretPrivateData; - - conn->secretPrivateData = NULL; - remoteDriverLock(priv); - priv->localUses--; - if (!priv->localUses) { - rv = doRemoteClose(conn, priv); - remoteDriverUnlock(priv); - virMutexDestroy(&priv->lock); - VIR_FREE(priv); - } - if (priv) - remoteDriverUnlock(priv); - return rv; + return remoteGenericClose(conn, &conn->secretPrivateData); } static int -- 1.7.0.4

--- daemon/remote_generator.pl | 93 ++++- src/remote/remote_client_bodies.c | 786 ++++++++++++++++++++++++++++++++++++- src/remote/remote_driver.c | 758 ----------------------------------- 3 files changed, 851 insertions(+), 786 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 774188b..f5be8d6 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -755,29 +755,16 @@ elsif ($opt_k) { "NWFilterDefineXML", # public API and XDR protocol mismatch "DomainMigratePerform", "DomainMigrateFinish2", - "DomainSnapshotListNames", "FindStoragePoolSources", "IsSecure", - "ListDefinedDomains", - "ListDefinedInterfaces", - "ListNWFilters", "SupportsFeature", - "NodeListDevices", "NodeGetCellsFreeMemory", - "ListDefinedNetworks", - "StoragePoolListVolumes", "ListDomains", - "ListStoragePools", "SecretSetValue", "GetURI", - "ListInterfaces", - "ListDefinedStoragePools", "NodeDeviceDettach", - "ListNetworks", - "NodeDeviceListCaps", "NodeDeviceReset", "NodeDeviceReAttach", - "ListSecrets", "DomainBlockPeek", "DomainCreateWithFlags", @@ -925,8 +912,9 @@ elsif ($opt_k) { # fix priv_name for the NumOf* functions if ($priv_name eq "privateData" and - !($call->{ProcName} =~ m/Domains/) and - $call->{ProcName} =~ m/NumOf(Defined|Domain)*(\S+)s/) { + !($call->{ProcName} =~ m/(Domains|DomainSnapshot)/) and + ($call->{ProcName} =~ m/NumOf(Defined|Domain)*(\S+)s/ or + $call->{ProcName} =~ m/List(Defined|Domain)*(\S+)s/)) { my $prefix = lc $2; $prefix =~ s/(pool|vol)$//; $priv_name = "${prefix}PrivateData"; @@ -937,6 +925,11 @@ elsif ($opt_k) { my $call_ret = "&ret"; my $single_ret_var = "int rv = -1"; my $single_ret_type = "int"; + my $single_ret_as_list = 0; + my $single_ret_list_error_msg_type = "undefined"; + my $single_ret_list_name = "undefined"; + my $single_ret_list_max_var = "undefined"; + my $single_ret_list_max_define = "undefined"; my $multi_ret = 0; if ($call->{ret} ne "void" and @@ -961,6 +954,30 @@ elsif ($opt_k) { } else { die "unhandled type for multi-return-value: $ret_member"; } + } elsif ($ret_member =~ m/remote_nonnull_string (\S+)<(\S+)>;/) { + $single_ret_as_list = 1; + $single_ret_list_name = $1; + $single_ret_list_max_var = "max$1"; + $single_ret_list_max_define = $2; + + my $first_arg = shift(@args_list); + my $second_arg; + + if ($call->{ProcName} eq "NodeListDevices") { + $second_arg = shift(@args_list); + } + + unshift(@args_list, "char **const $1"); + + if (defined $second_arg) { + unshift(@args_list, $second_arg); + } + + unshift(@args_list, $first_arg); + + push(@ret_list, "rv = ret.$1.$1_len;"); + $single_ret_var = "int rv = -1"; + $single_ret_type = "int"; } elsif ($ret_member =~ m/remote_nonnull_string (\S+);/) { push(@ret_list, "rv = ret.$1;"); $single_ret_var = "char *rv = NULL"; @@ -1058,9 +1075,23 @@ elsif ($opt_k) { print " $var;\n"; } + if ($single_ret_as_list) { + print " int i;\n"; + } + print "\n"; print " remoteDriverLock(priv);\n"; + if ($single_ret_as_list) { + print "\n"; + print " if ($single_ret_list_max_var > $single_ret_list_max_define) {\n"; + print " remoteError(VIR_ERR_RPC,\n"; + print " _(\"too many remote ${single_ret_list_error_msg_type}s: %d > %d\"),\n"; + print " $single_ret_list_max_var, $single_ret_list_max_define);\n"; + print " goto done;\n"; + print " }\n"; + } + if (@setters_list) { print "\n"; print " "; @@ -1084,6 +1115,32 @@ elsif ($opt_k) { print " goto done;\n"; print "\n"; + if ($single_ret_as_list) { + print " if (ret.$single_ret_list_name.${single_ret_list_name}_len > $single_ret_list_max_var) {\n"; + print " remoteError(VIR_ERR_RPC,\n"; + print " _(\"too many remote ${single_ret_list_error_msg_type}s: %d > %d\"),\n"; + print " ret.$single_ret_list_name.${single_ret_list_name}_len, $single_ret_list_max_var);\n"; + print " goto cleanup;\n"; + print " }\n"; + print "\n"; + print " /* This call is caller-frees (although that isn't clear from\n"; + print " * the documentation). However xdr_free will free up both the\n"; + print " * names and the list of pointers, so we have to strdup the\n"; + print " * names here. */\n"; + print " for (i = 0; i < ret.$single_ret_list_name.${single_ret_list_name}_len; ++i) {\n"; + print " ${single_ret_list_name}[i] = strdup(ret.$single_ret_list_name.${single_ret_list_name}_val[i]);\n"; + print "\n"; + print " if (${single_ret_list_name}[i] == NULL) {\n"; + print " for (--i; i >= 0; --i)\n"; + print " VIR_FREE(${single_ret_list_name}[i]);\n"; + print "\n"; + print " virReportOOMError();\n"; + print " goto cleanup;\n"; + print " }\n"; + print " }\n"; + print "\n"; + } + if (@ret_list) { print " "; print join("\n ", @ret_list); @@ -1094,6 +1151,12 @@ elsif ($opt_k) { print " rv = 0;\n"; } + if ($single_ret_as_list) { + print "\n"; + print "cleanup:\n"; + print " xdr_free((xdrproc_t)xdr_remote_$call->{name}_ret, (char *)&ret);\n"; + } + print "\n"; print "done:\n"; print " remoteDriverUnlock(priv);\n"; diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c index e61055b..4970c23 100644 --- a/src/remote/remote_client_bodies.c +++ b/src/remote/remote_client_bodies.c @@ -1330,7 +1330,67 @@ done: return rv; } -/* remoteDispatchDomainSnapshotListNames has to be implemented manually */ +static int +remoteDomainSnapshotListNames(virDomainPtr dom, char **const names, int maxnames, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_snapshot_list_names_args args; + remote_domain_snapshot_list_names_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX); + goto done; + } + + make_nonnull_domain(&args.dom, dom); + args.maxnames = maxnames; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_NAMES, + (xdrproc_t)xdr_remote_domain_snapshot_list_names_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_snapshot_list_names_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_domain_snapshot_list_names_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static virDomainSnapshotPtr remoteDomainSnapshotLookupByName(virDomainPtr dom, const char *name, unsigned int flags) @@ -1875,25 +1935,547 @@ done: /* remoteDispatchIsSecure has to be implemented manually */ -/* remoteDispatchListDefinedDomains has to be implemented manually */ +static int +remoteListDefinedDomains(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->privateData; + remote_list_defined_domains_args args; + remote_list_defined_domains_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_DOMAIN_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_DEFINED_DOMAINS, + (xdrproc_t)xdr_remote_list_defined_domains_args, (char *)&args, + (xdrproc_t)xdr_remote_list_defined_domains_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } -/* remoteDispatchListDefinedInterfaces has to be implemented manually */ + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); -/* remoteDispatchListDefinedNetworks has to be implemented manually */ + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); -/* remoteDispatchListDefinedStoragePools has to be implemented manually */ + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_defined_domains_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteListDefinedInterfaces(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->interfacePrivateData; + remote_list_defined_interfaces_args args; + remote_list_defined_interfaces_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_DEFINED_INTERFACES, + (xdrproc_t)xdr_remote_list_defined_interfaces_args, (char *)&args, + (xdrproc_t)xdr_remote_list_defined_interfaces_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_defined_interfaces_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteListDefinedNetworks(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->networkPrivateData; + remote_list_defined_networks_args args; + remote_list_defined_networks_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_NETWORK_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_DEFINED_NETWORKS, + (xdrproc_t)xdr_remote_list_defined_networks_args, (char *)&args, + (xdrproc_t)xdr_remote_list_defined_networks_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_defined_networks_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteListDefinedStoragePools(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->storagePrivateData; + remote_list_defined_storage_pools_args args; + remote_list_defined_storage_pools_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_STORAGE_POOL_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_DEFINED_STORAGE_POOLS, + (xdrproc_t)xdr_remote_list_defined_storage_pools_args, (char *)&args, + (xdrproc_t)xdr_remote_list_defined_storage_pools_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_defined_storage_pools_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchListDomains has to be implemented manually */ -/* remoteDispatchListInterfaces has to be implemented manually */ +static int +remoteListInterfaces(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->interfacePrivateData; + remote_list_interfaces_args args; + remote_list_interfaces_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_INTERFACE_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_INTERFACE_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_INTERFACES, + (xdrproc_t)xdr_remote_list_interfaces_args, (char *)&args, + (xdrproc_t)xdr_remote_list_interfaces_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_interfaces_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteListNetworks(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->networkPrivateData; + remote_list_networks_args args; + remote_list_networks_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_NETWORK_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_NETWORKS, + (xdrproc_t)xdr_remote_list_networks_args, (char *)&args, + (xdrproc_t)xdr_remote_list_networks_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_networks_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteListNWFilters(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->nwfilterPrivateData; + remote_list_nwfilters_args args; + remote_list_nwfilters_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_NWFILTER_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_NWFILTER_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_NWFILTERS, + (xdrproc_t)xdr_remote_list_nwfilters_args, (char *)&args, + (xdrproc_t)xdr_remote_list_nwfilters_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_nwfilters_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteListSecrets(virConnectPtr conn, char **const uuids, int maxuuids) +{ + int rv = -1; + struct private_data *priv = conn->secretPrivateData; + remote_list_secrets_args args; + remote_list_secrets_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxuuids > REMOTE_SECRET_UUID_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined uuids: %d > %d"), + maxuuids, REMOTE_SECRET_UUID_LIST_MAX); + goto done; + } + + args.maxuuids = maxuuids; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_SECRETS, + (xdrproc_t)xdr_remote_list_secrets_args, (char *)&args, + (xdrproc_t)xdr_remote_list_secrets_ret, (char *)&ret) == -1) + goto done; + + if (ret.uuids.uuids_len > maxuuids) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.uuids.uuids_len, maxuuids); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.uuids.uuids_len; ++i) { + uuids[i] = strdup(ret.uuids.uuids_val[i]); -/* remoteDispatchListNetworks has to be implemented manually */ + if (uuids[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(uuids[i]); -/* remoteDispatchListNWFilters has to be implemented manually */ + virReportOOMError(); + goto cleanup; + } + } -/* remoteDispatchListSecrets has to be implemented manually */ + rv = ret.uuids.uuids_len; -/* remoteDispatchListStoragePools has to be implemented manually */ +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_secrets_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteListStoragePools(virConnectPtr conn, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = conn->storagePrivateData; + remote_list_storage_pools_args args; + remote_list_storage_pools_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_STORAGE_POOL_NAME_LIST_MAX); + goto done; + } + + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_LIST_STORAGE_POOLS, + (xdrproc_t)xdr_remote_list_storage_pools_args, (char *)&args, + (xdrproc_t)xdr_remote_list_storage_pools_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_list_storage_pools_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteNetworkCreate(virNetworkPtr net) @@ -2310,7 +2892,66 @@ done: /* remoteDispatchNodeDeviceGetParent has to be implemented manually */ -/* remoteDispatchNodeDeviceListCaps has to be implemented manually */ +static int +remoteNodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = dev->conn->devMonPrivateData; + remote_node_device_list_caps_args args; + remote_node_device_list_caps_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_NODE_DEVICE_CAPS_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_NODE_DEVICE_CAPS_LIST_MAX); + goto done; + } + + args.name = dev->name; + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_LIST_CAPS, + (xdrproc_t)xdr_remote_node_device_list_caps_args, (char *)&args, + (xdrproc_t)xdr_remote_node_device_list_caps_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_node_device_list_caps_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static virNodeDevicePtr remoteNodeDeviceLookupByName(virConnectPtr conn, const char *name) @@ -2427,7 +3068,67 @@ done: /* remoteDispatchNodeGetSecurityModel has to be implemented manually */ -/* remoteDispatchNodeListDevices has to be implemented manually */ +static int +remoteNodeListDevices(virConnectPtr conn, const char *cap, char **const names, int maxnames, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = conn->devMonPrivateData; + remote_node_list_devices_args args; + remote_node_list_devices_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_NODE_DEVICE_NAME_LIST_MAX); + goto done; + } + + args.cap = cap ? (char **)&cap : NULL; + args.maxnames = maxnames; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NODE_LIST_DEVICES, + (xdrproc_t)xdr_remote_node_list_devices_args, (char *)&args, + (xdrproc_t)xdr_remote_node_list_devices_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_node_list_devices_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteNodeNumOfDevices(virConnectPtr conn, const char *cap, unsigned int flags) @@ -3218,7 +3919,66 @@ done: return rv; } -/* remoteDispatchStoragePoolListVolumes has to be implemented manually */ +static int +remoteStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, int maxnames) +{ + int rv = -1; + struct private_data *priv = pool->conn->storagePrivateData; + remote_storage_pool_list_volumes_args args; + remote_storage_pool_list_volumes_ret ret; + int i; + + remoteDriverLock(priv); + + if (maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) { + remoteError(VIR_ERR_RPC, + _("too many remote undefined names: %d > %d"), + maxnames, REMOTE_STORAGE_VOL_NAME_LIST_MAX); + goto done; + } + + make_nonnull_storage_pool(&args.pool, pool); + args.maxnames = maxnames; + + memset(&ret, 0, sizeof ret); + + if (call(pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LIST_VOLUMES, + (xdrproc_t)xdr_remote_storage_pool_list_volumes_args, (char *)&args, + (xdrproc_t)xdr_remote_storage_pool_list_volumes_ret, (char *)&ret) == -1) + goto done; + + if (ret.names.names_len > maxnames) { + remoteError(VIR_ERR_RPC, + _("too many remote undefineds: %d > %d"), + ret.names.names_len, maxnames); + goto cleanup; + } + + /* This call is caller-frees (although that isn't clear from + * the documentation). However xdr_free will free up both the + * names and the list of pointers, so we have to strdup the + * names here. */ + for (i = 0; i < ret.names.names_len; ++i) { + names[i] = strdup(ret.names.names_val[i]); + + if (names[i] == NULL) { + for (--i; i >= 0; --i) + VIR_FREE(names[i]); + + virReportOOMError(); + goto cleanup; + } + } + + rv = ret.names.names_len; + +cleanup: + xdr_free((xdrproc_t)xdr_remote_storage_pool_list_volumes_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static virStoragePoolPtr remoteStoragePoolLookupByName(virConnectPtr conn, const char *name) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 777a7bf..8a0fc0e 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -2607,65 +2607,6 @@ done: } static int -remoteListDefinedDomains (virConnectPtr conn, char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_defined_domains_args args; - remote_list_defined_domains_ret ret; - struct private_data *priv = conn->privateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, - _("too many remote domain names: %d > %d"), - maxnames, REMOTE_DOMAIN_NAME_LIST_MAX); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_DEFINED_DOMAINS, - (xdrproc_t) xdr_remote_list_defined_domains_args, (char *) &args, - (xdrproc_t) xdr_remote_list_defined_domains_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, - _("too many remote domain names: %d > %d"), - ret.names.names_len, maxnames); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_defined_domains_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainCreate (virDomainPtr domain) { int rv = -1; @@ -3122,125 +3063,6 @@ remoteNetworkClose(virConnectPtr conn) return remoteGenericClose(conn, &conn->networkPrivateData); } -static int -remoteListNetworks (virConnectPtr conn, char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_networks_args args; - remote_list_networks_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, - _("too many remote networks: %d > %d"), - maxnames, REMOTE_NETWORK_NAME_LIST_MAX); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_NETWORKS, - (xdrproc_t) xdr_remote_list_networks_args, (char *) &args, - (xdrproc_t) xdr_remote_list_networks_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, - _("too many remote networks: %d > %d"), - ret.names.names_len, maxnames); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_networks_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteListDefinedNetworks (virConnectPtr conn, - char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_defined_networks_args args; - remote_list_defined_networks_ret ret; - struct private_data *priv = conn->networkPrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, - _("too many remote networks: %d > %d"), - maxnames, REMOTE_NETWORK_NAME_LIST_MAX); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_DEFINED_NETWORKS, - (xdrproc_t) xdr_remote_list_defined_networks_args, (char *) &args, - (xdrproc_t) xdr_remote_list_defined_networks_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, - _("too many remote networks: %d > %d"), - ret.names.names_len, maxnames); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_defined_networks_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -3255,124 +3077,6 @@ remoteInterfaceClose(virConnectPtr conn) return remoteGenericClose(conn, &conn->interfacePrivateData); } -static int -remoteListInterfaces (virConnectPtr conn, char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_interfaces_args args; - remote_list_interfaces_ret ret; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_INTERFACE_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, - _("too many remote interfaces: %d > %d"), - maxnames, REMOTE_INTERFACE_NAME_LIST_MAX); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_INTERFACES, - (xdrproc_t) xdr_remote_list_interfaces_args, (char *) &args, - (xdrproc_t) xdr_remote_list_interfaces_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, - _("too many remote interfaces: %d > %d"), - ret.names.names_len, maxnames); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_interfaces_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteListDefinedInterfaces (virConnectPtr conn, char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_defined_interfaces_args args; - remote_list_defined_interfaces_ret ret; - struct private_data *priv = conn->interfacePrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, - _("too many remote interfaces: %d > %d"), - maxnames, REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_DEFINED_INTERFACES, - (xdrproc_t) xdr_remote_list_defined_interfaces_args, (char *) &args, - (xdrproc_t) xdr_remote_list_defined_interfaces_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, - _("too many remote interfaces: %d > %d"), - ret.names.names_len, maxnames); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_defined_interfaces_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -3387,117 +3091,6 @@ remoteStorageClose(virConnectPtr conn) return remoteGenericClose(conn, &conn->storagePrivateData); } -static int -remoteListStoragePools (virConnectPtr conn, char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_storage_pools_args args; - remote_list_storage_pools_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, "%s", _("too many storage pools requested")); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_STORAGE_POOLS, - (xdrproc_t) xdr_remote_list_storage_pools_args, (char *) &args, - (xdrproc_t) xdr_remote_list_storage_pools_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, "%s", _("too many storage pools received")); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_storage_pools_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int -remoteListDefinedStoragePools (virConnectPtr conn, - char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_defined_storage_pools_args args; - remote_list_defined_storage_pools_ret ret; - struct private_data *priv = conn->storagePrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, "%s", _("too many storage pools requested")); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_DEFINED_STORAGE_POOLS, - (xdrproc_t) xdr_remote_list_defined_storage_pools_args, (char *) &args, - (xdrproc_t) xdr_remote_list_defined_storage_pools_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, "%s", _("too many storage pools received")); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_defined_storage_pools_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - static char * remoteFindStoragePoolSources (virConnectPtr conn, const char *type, @@ -3543,62 +3136,6 @@ done: return rv; } -static int -remoteStoragePoolListVolumes (virStoragePoolPtr pool, char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_storage_pool_list_volumes_args args; - remote_storage_pool_list_volumes_ret ret; - struct private_data *priv = pool->conn->storagePrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, "%s", _("too many storage volumes requested")); - goto done; - } - args.maxnames = maxnames; - make_nonnull_storage_pool(&args.pool, pool); - - memset (&ret, 0, sizeof ret); - if (call (pool->conn, priv, 0, REMOTE_PROC_STORAGE_POOL_LIST_VOLUMES, - (xdrproc_t) xdr_remote_storage_pool_list_volumes_args, (char *) &args, - (xdrproc_t) xdr_remote_storage_pool_list_volumes_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, "%s", _("too many storage volumes received")); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_storage_pool_list_volumes_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static virDrvOpenStatus ATTRIBUTE_NONNULL (1) @@ -3613,66 +3150,6 @@ remoteDevMonClose(virConnectPtr conn) return remoteGenericClose(conn, &conn->devMonPrivateData); } -static int remoteNodeListDevices(virConnectPtr conn, - const char *cap, - char **const names, - int maxnames, - unsigned int flags) -{ - int rv = -1; - int i; - remote_node_list_devices_args args; - remote_node_list_devices_ret ret; - struct private_data *priv = conn->devMonPrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, "%s", _("too many device names requested")); - goto done; - } - args.cap = cap ? (char **)&cap : NULL; - args.maxnames = maxnames; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NODE_LIST_DEVICES, - (xdrproc_t) xdr_remote_node_list_devices_args, (char *) &args, - (xdrproc_t) xdr_remote_node_list_devices_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, "%s", _("too many device names received")); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_node_list_devices_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - static char *remoteNodeDeviceGetParent(virNodeDevicePtr dev) { char *rv = NULL; @@ -3699,63 +3176,6 @@ done: return rv; } -static int remoteNodeDeviceListCaps(virNodeDevicePtr dev, - char **const names, - int maxnames) -{ - int rv = -1; - int i; - remote_node_device_list_caps_args args; - remote_node_device_list_caps_ret ret; - struct private_data *priv = dev->conn->devMonPrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_NODE_DEVICE_CAPS_LIST_MAX) { - remoteError(VIR_ERR_RPC, "%s", _("too many capability names requested")); - goto done; - } - args.maxnames = maxnames; - args.name = dev->name; - - memset (&ret, 0, sizeof ret); - if (call (dev->conn, priv, 0, REMOTE_PROC_NODE_DEVICE_LIST_CAPS, - (xdrproc_t) xdr_remote_node_device_list_caps_args, (char *) &args, - (xdrproc_t) xdr_remote_node_device_list_caps_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, "%s", _("too many capability names received")); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_node_device_list_caps_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteNodeDeviceDettach (virNodeDevicePtr dev) { @@ -3872,65 +3292,6 @@ done: return net; } -static int -remoteListNWFilters (virConnectPtr conn, char **const names, int maxnames) -{ - int rv = -1; - int i; - remote_list_nwfilters_args args; - remote_list_nwfilters_ret ret; - struct private_data *priv = conn->nwfilterPrivateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_NWFILTER_NAME_LIST_MAX) { - remoteError(VIR_ERR_RPC, - _("too many remote nwfilters: %d > %d"), - maxnames, REMOTE_NWFILTER_NAME_LIST_MAX); - goto done; - } - args.maxnames = maxnames; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_NWFILTERS, - (xdrproc_t) xdr_remote_list_nwfilters_args, (char *) &args, - (xdrproc_t) xdr_remote_list_nwfilters_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, - _("too many remote nwfilters: %d > %d"), - ret.names.names_len, maxnames); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_nwfilters_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - /*----------------------------------------------------------------------*/ static int @@ -4938,62 +4299,6 @@ remoteSecretClose (virConnectPtr conn) } static int -remoteListSecrets (virConnectPtr conn, char **uuids, int maxuuids) -{ - int rv = -1; - int i; - remote_list_secrets_args args; - remote_list_secrets_ret ret; - struct private_data *priv = conn->secretPrivateData; - - remoteDriverLock(priv); - - if (maxuuids > REMOTE_SECRET_UUID_LIST_MAX) { - remoteError(VIR_ERR_RPC, _("too many remote secret UUIDs: %d > %d"), - maxuuids, REMOTE_SECRET_UUID_LIST_MAX); - goto done; - } - args.maxuuids = maxuuids; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_LIST_SECRETS, - (xdrproc_t) xdr_remote_list_secrets_args, (char *) &args, - (xdrproc_t) xdr_remote_list_secrets_ret, (char *) &ret) == -1) - goto done; - - if (ret.uuids.uuids_len > maxuuids) { - remoteError(VIR_ERR_RPC, _("too many remote secret UUIDs: %d > %d"), - ret.uuids.uuids_len, maxuuids); - goto cleanup; - } - - /* This call is caller-frees. However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.uuids.uuids_len; ++i) { - uuids[i] = strdup (ret.uuids.uuids_val[i]); - - if (uuids[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(uuids[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.uuids.uuids_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_list_secrets_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteSecretSetValue (virSecretPtr secret, const unsigned char *value, size_t value_size, unsigned int flags) { @@ -5626,69 +4931,6 @@ done: return cpu; } -static int -remoteDomainSnapshotListNames (virDomainPtr domain, char **const names, - int maxnames, unsigned int flags) -{ - int rv = -1; - int i; - remote_domain_snapshot_list_names_args args; - remote_domain_snapshot_list_names_ret ret; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - if (maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { - remoteError(VIR_ERR_RPC, - _("too many remote domain snapshot names: %d > %d"), - maxnames, REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX); - goto done; - } - - make_nonnull_domain(&args.dom, domain); - args.maxnames = maxnames; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_SNAPSHOT_LIST_NAMES, - (xdrproc_t) xdr_remote_domain_snapshot_list_names_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_snapshot_list_names_ret, (char *) &ret) == -1) - goto done; - - if (ret.names.names_len > maxnames) { - remoteError(VIR_ERR_RPC, - _("too many remote domain snapshots: %d > %d"), - ret.names.names_len, maxnames); - goto cleanup; - } - - /* This call is caller-frees (although that isn't clear from - * the documentation). However xdr_free will free up both the - * names and the list of pointers, so we have to strdup the - * names here. - */ - for (i = 0; i < ret.names.names_len; ++i) { - names[i] = strdup (ret.names.names_val[i]); - - if (names[i] == NULL) { - for (--i; i >= 0; --i) - VIR_FREE(names[i]); - - virReportOOMError(); - goto cleanup; - } - } - - rv = ret.names.names_len; - -cleanup: - xdr_free ((xdrproc_t) xdr_remote_domain_snapshot_list_names_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return rv; -} - static int remoteDomainEventRegisterAny(virConnectPtr conn, virDomainPtr dom, int eventID, -- 1.7.0.4

This adds length checks to all affected functions. --- daemon/remote_generator.pl | 49 ++++++-- src/remote/remote_client_bodies.c | 267 ++++++++++++++++++++++++++++++++++--- src/remote/remote_driver.c | 227 ------------------------------- 3 files changed, 287 insertions(+), 256 deletions(-) diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index f5be8d6..ac9cde8 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -734,7 +734,6 @@ elsif ($opt_k) { "DomainEventsRegisterAny", "DomainMigratePrepareTunnel", "DomainOpenConsole", - "DomainPinVcpu", "DomainSetSchedulerParameters", "DomainSetMemoryParameters", "DomainSetBlkioParameters", @@ -748,19 +747,13 @@ elsif ($opt_k) { "AuthSaslStep", "AuthPolkit", - "CPUBaseline", "DomainCreate", "DomainDestroy", - "DomainMigrateFinish", - "NWFilterDefineXML", # public API and XDR protocol mismatch - "DomainMigratePerform", - "DomainMigrateFinish2", "FindStoragePoolSources", "IsSecure", "SupportsFeature", "NodeGetCellsFreeMemory", "ListDomains", - "SecretSetValue", "GetURI", "NodeDeviceDettach", "NodeDeviceReset", @@ -806,6 +799,7 @@ elsif ($opt_k) { # handle arguments to the function my @args_list = (); my @vars_list = (); + my @args_check_list = (); my @setters_list = (); my $priv_src = "conn"; my $priv_name = "privateData"; @@ -859,11 +853,30 @@ elsif ($opt_k) { } elsif ($args_member =~ m/^remote_string (\S+);/) { push(@args_list, "const char *$1"); push(@setters_list, "args.$1 = $1 ? (char **)&$1 : NULL;"); + } elsif ($args_member =~ m/^remote_nonnull_string (\S+)<(\S+)>;/) { + push(@args_list, "const char **$1"); + push(@args_list, "unsigned int ${1}len"); + push(@setters_list, "args.$1.${1}_val = (char **)$1;"); + push(@setters_list, "args.$1.${1}_len = ${1}len;"); + push(@args_check_list, { name => "\"$1\"", arg => "${1}len", limit => $2 }); } elsif ($args_member =~ m/^remote_nonnull_string (\S+);/) { push(@args_list, "const char *$1"); push(@setters_list, "args.$1 = (char *)$1;"); - } elsif ($args_member =~ m/(\S+)<\S+>;/) { - # ignored for now + } elsif ($args_member =~ m/(\S+)<(\S+)>;/) { + if ($call->{ProcName} eq "SecretSetValue") { + push(@args_list, "const unsigned char *$1"); + push(@args_list, "size_t ${1}len"); + } elsif ($call->{ProcName} eq "DomainPinVcpu") { + push(@args_list, "unsigned char *$1"); + push(@args_list, "int ${1}len"); + } else { + push(@args_list, "const char *$1"); + push(@args_list, "int ${1}len"); + } + + push(@setters_list, "args.$1.${1}_val = (char *)$1;"); + push(@setters_list, "args.$1.${1}_len = ${1}len;"); + push(@args_check_list, { name => "\"$1\"", arg => "${1}len", limit => $2 }); } elsif ($args_member =~ m/^(.*) (\S+);/) { my $type_name = $1; my $arg_name = $2; @@ -882,6 +895,9 @@ elsif ($opt_k) { } elsif ($arg_name eq "nvcpus" and $call->{ProcName} eq "DomainSetVcpus") { $type_name = "unsigned int"; + } elsif ($arg_name eq "vcpu" and + $call->{ProcName} eq "DomainPinVcpu") { + $type_name = "unsigned int"; } } @@ -910,6 +926,11 @@ elsif ($opt_k) { push(@args_list, "virConnectPtr conn"); } + if ($call->{ProcName} eq "NWFilterDefineXML") { + # fix public API and XDR protocol mismatch + push(@args_list, "unsigned int flags ATTRIBUTE_UNUSED"); + } + # fix priv_name for the NumOf* functions if ($priv_name eq "privateData" and !($call->{ProcName} =~ m/(Domains|DomainSnapshot)/) and @@ -1082,6 +1103,16 @@ elsif ($opt_k) { print "\n"; print " remoteDriverLock(priv);\n"; + foreach my $args_check (@args_check_list) { + print "\n"; + print " if ($args_check->{arg} > $args_check->{limit}) {\n"; + print " remoteError(VIR_ERR_RPC,\n"; + print " _(\"%s length greater than maximum: %d > %d\"),\n"; + print " $args_check->{name}, (int)$args_check->{arg}, $args_check->{limit});\n"; + print " goto done;\n"; + print " }\n"; + } + if ($single_ret_as_list) { print "\n"; print " if ($single_ret_list_max_var > $single_ret_list_max_define) {\n"; diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c index 4970c23..7a77d70 100644 --- a/src/remote/remote_client_bodies.c +++ b/src/remote/remote_client_bodies.c @@ -14,7 +14,40 @@ /* remoteDispatchClose has to be implemented manually */ -/* remoteDispatchCPUBaseline has to be implemented manually */ +static char * +remoteCPUBaseline(virConnectPtr conn, const char **xmlCPUs, unsigned int xmlCPUslen, unsigned int flags) +{ + char *rv = NULL; + struct private_data *priv = conn->privateData; + remote_cpu_baseline_args args; + remote_cpu_baseline_ret ret; + + remoteDriverLock(priv); + + if (xmlCPUslen > REMOTE_CPU_BASELINE_MAX) { + remoteError(VIR_ERR_RPC, + _("%s length greater than maximum: %d > %d"), + "xmlCPUs", (int)xmlCPUslen, REMOTE_CPU_BASELINE_MAX); + goto done; + } + + args.xmlCPUs.xmlCPUs_val = (char **)xmlCPUs; + args.xmlCPUs.xmlCPUs_len = xmlCPUslen; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_CPU_BASELINE, + (xdrproc_t)xdr_remote_cpu_baseline_args, (char *)&args, + (xdrproc_t)xdr_remote_cpu_baseline_ret, (char *)&ret) == -1) + goto done; + + rv = ret.cpu; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteCPUCompare(virConnectPtr conn, const char *xml, unsigned int flags) @@ -863,11 +896,118 @@ done: /* remoteDispatchDomainMemoryStats has to be implemented manually */ -/* remoteDispatchDomainMigrateFinish has to be implemented manually */ +static virDomainPtr +remoteDomainMigrateFinish(virConnectPtr conn, const char *dname, const char *cookie, int cookielen, const char *uri, unsigned long flags) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_migrate_finish_args args; + remote_domain_migrate_finish_ret ret; + + remoteDriverLock(priv); + + if (cookielen > REMOTE_MIGRATE_COOKIE_MAX) { + remoteError(VIR_ERR_RPC, + _("%s length greater than maximum: %d > %d"), + "cookie", (int)cookielen, REMOTE_MIGRATE_COOKIE_MAX); + goto done; + } + + args.dname = (char *)dname; + args.cookie.cookie_val = (char *)cookie; + args.cookie.cookie_len = cookielen; + args.uri = (char *)uri; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH, + (xdrproc_t)xdr_remote_domain_migrate_finish_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_migrate_finish_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain(conn, ret.ddom); + xdr_free((xdrproc_t)xdr_remote_domain_migrate_finish_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static virDomainPtr +remoteDomainMigrateFinish2(virConnectPtr conn, const char *dname, const char *cookie, int cookielen, const char *uri, unsigned long flags, int retcode) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + remote_domain_migrate_finish2_args args; + remote_domain_migrate_finish2_ret ret; + + remoteDriverLock(priv); + + if (cookielen > REMOTE_MIGRATE_COOKIE_MAX) { + remoteError(VIR_ERR_RPC, + _("%s length greater than maximum: %d > %d"), + "cookie", (int)cookielen, REMOTE_MIGRATE_COOKIE_MAX); + goto done; + } + + args.dname = (char *)dname; + args.cookie.cookie_val = (char *)cookie; + args.cookie.cookie_len = cookielen; + args.uri = (char *)uri; + args.flags = flags; + args.retcode = retcode; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH2, + (xdrproc_t)xdr_remote_domain_migrate_finish2_args, (char *)&args, + (xdrproc_t)xdr_remote_domain_migrate_finish2_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain(conn, ret.ddom); + xdr_free((xdrproc_t)xdr_remote_domain_migrate_finish2_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} + +static int +remoteDomainMigratePerform(virDomainPtr dom, const char *cookie, int cookielen, const char *uri, unsigned long flags, const char *dname, unsigned long resource) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_migrate_perform_args args; + + remoteDriverLock(priv); + + if (cookielen > REMOTE_MIGRATE_COOKIE_MAX) { + remoteError(VIR_ERR_RPC, + _("%s length greater than maximum: %d > %d"), + "cookie", (int)cookielen, REMOTE_MIGRATE_COOKIE_MAX); + goto done; + } + + make_nonnull_domain(&args.dom, dom); + args.cookie.cookie_val = (char *)cookie; + args.cookie.cookie_len = cookielen; + args.uri = (char *)uri; + args.flags = flags; + args.dname = dname ? (char **)&dname : NULL; + args.resource = resource; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_PERFORM, + (xdrproc_t)xdr_remote_domain_migrate_perform_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; -/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */ + rv = 0; -/* remoteDispatchDomainMigratePerform has to be implemented manually */ +done: + remoteDriverUnlock(priv); + return rv; +} /* remoteDispatchDomainMigratePrepare has to be implemented manually */ @@ -927,7 +1067,38 @@ done: /* remoteDispatchDomainOpenConsole has to be implemented manually */ -/* remoteDispatchDomainPinVcpu has to be implemented manually */ +static int +remoteDomainPinVcpu(virDomainPtr dom, unsigned int vcpu, unsigned char *cpumap, int cpumaplen) +{ + int rv = -1; + struct private_data *priv = dom->conn->privateData; + remote_domain_pin_vcpu_args args; + + remoteDriverLock(priv); + + if (cpumaplen > REMOTE_CPUMAP_MAX) { + remoteError(VIR_ERR_RPC, + _("%s length greater than maximum: %d > %d"), + "cpumap", (int)cpumaplen, REMOTE_CPUMAP_MAX); + goto done; + } + + make_nonnull_domain(&args.dom, dom); + args.vcpu = vcpu; + args.cpumap.cpumap_val = (char *)cpumap; + args.cpumap.cpumap_len = cpumaplen; + + if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_PIN_VCPU, + (xdrproc_t)xdr_remote_domain_pin_vcpu_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteDomainReboot(virDomainPtr dom, unsigned int flags) @@ -1343,7 +1514,7 @@ remoteDomainSnapshotListNames(virDomainPtr dom, char **const names, int maxnames if (maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX); goto done; } @@ -1948,7 +2119,7 @@ remoteListDefinedDomains(virConnectPtr conn, char **const names, int maxnames) if (maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_DOMAIN_NAME_LIST_MAX); goto done; } @@ -2008,7 +2179,7 @@ remoteListDefinedInterfaces(virConnectPtr conn, char **const names, int maxnames if (maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX); goto done; } @@ -2068,7 +2239,7 @@ remoteListDefinedNetworks(virConnectPtr conn, char **const names, int maxnames) if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_NETWORK_NAME_LIST_MAX); goto done; } @@ -2128,7 +2299,7 @@ remoteListDefinedStoragePools(virConnectPtr conn, char **const names, int maxnam if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_STORAGE_POOL_NAME_LIST_MAX); goto done; } @@ -2190,7 +2361,7 @@ remoteListInterfaces(virConnectPtr conn, char **const names, int maxnames) if (maxnames > REMOTE_INTERFACE_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_INTERFACE_NAME_LIST_MAX); goto done; } @@ -2250,7 +2421,7 @@ remoteListNetworks(virConnectPtr conn, char **const names, int maxnames) if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_NETWORK_NAME_LIST_MAX); goto done; } @@ -2310,7 +2481,7 @@ remoteListNWFilters(virConnectPtr conn, char **const names, int maxnames) if (maxnames > REMOTE_NWFILTER_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_NWFILTER_NAME_LIST_MAX); goto done; } @@ -2370,7 +2541,7 @@ remoteListSecrets(virConnectPtr conn, char **const uuids, int maxuuids) if (maxuuids > REMOTE_SECRET_UUID_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined uuids: %d > %d"), + _("too many remote undefineds: %d > %d"), maxuuids, REMOTE_SECRET_UUID_LIST_MAX); goto done; } @@ -2430,7 +2601,7 @@ remoteListStoragePools(virConnectPtr conn, char **const names, int maxnames) if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_STORAGE_POOL_NAME_LIST_MAX); goto done; } @@ -2905,7 +3076,7 @@ remoteNodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames) if (maxnames > REMOTE_NODE_DEVICE_CAPS_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_NODE_DEVICE_CAPS_LIST_MAX); goto done; } @@ -3081,7 +3252,7 @@ remoteNodeListDevices(virConnectPtr conn, const char *cap, char **const names, i if (maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_NODE_DEVICE_NAME_LIST_MAX); goto done; } @@ -3387,7 +3558,32 @@ done: return rv; } -/* remoteDispatchNWFilterDefineXML has to be implemented manually */ +static virNWFilterPtr +remoteNWFilterDefineXML(virConnectPtr conn, const char *xml, unsigned int flags ATTRIBUTE_UNUSED) +{ + virNWFilterPtr rv = NULL; + struct private_data *priv = conn->nwfilterPrivateData; + remote_nwfilter_define_xml_args args; + remote_nwfilter_define_xml_ret ret; + + remoteDriverLock(priv); + + args.xml = (char *)xml; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, 0, REMOTE_PROC_NWFILTER_DEFINE_XML, + (xdrproc_t)xdr_remote_nwfilter_define_xml_args, (char *)&args, + (xdrproc_t)xdr_remote_nwfilter_define_xml_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_nwfilter(conn, ret.nwfilter); + xdr_free((xdrproc_t)xdr_remote_nwfilter_define_xml_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +} static char * remoteNWFilterGetXMLDesc(virNWFilterPtr nwfilter, unsigned int flags) @@ -3607,7 +3803,38 @@ done: return rv; } -/* remoteDispatchSecretSetValue has to be implemented manually */ +static int +remoteSecretSetValue(virSecretPtr secret, const unsigned char *value, size_t valuelen, unsigned int flags) +{ + int rv = -1; + struct private_data *priv = secret->conn->secretPrivateData; + remote_secret_set_value_args args; + + remoteDriverLock(priv); + + if (valuelen > REMOTE_SECRET_VALUE_MAX) { + remoteError(VIR_ERR_RPC, + _("%s length greater than maximum: %d > %d"), + "value", (int)valuelen, REMOTE_SECRET_VALUE_MAX); + goto done; + } + + make_nonnull_secret(&args.secret, secret); + args.value.value_val = (char *)value; + args.value.value_len = valuelen; + args.flags = flags; + + if (call(secret->conn, priv, 0, REMOTE_PROC_SECRET_SET_VALUE, + (xdrproc_t)xdr_remote_secret_set_value_args, (char *)&args, + (xdrproc_t)xdr_void, (char *)NULL) == -1) + goto done; + + rv = 0; + +done: + remoteDriverUnlock(priv); + return rv; +} static int remoteSecretUndefine(virSecretPtr secret) @@ -3932,7 +4159,7 @@ remoteStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, int max if (maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) { remoteError(VIR_ERR_RPC, - _("too many remote undefined names: %d > %d"), + _("too many remote undefineds: %d > %d"), maxnames, REMOTE_STORAGE_VOL_NAME_LIST_MAX); goto done; } diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 8a0fc0e..c89561c 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -2213,42 +2213,6 @@ done: } static int -remoteDomainPinVcpu (virDomainPtr domain, - unsigned int vcpu, - unsigned char *cpumap, - int maplen) -{ - int rv = -1; - remote_domain_pin_vcpu_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - if (maplen > REMOTE_CPUMAP_MAX) { - remoteError(VIR_ERR_RPC, - _("map length greater than maximum: %d > %d"), - maplen, REMOTE_CPUMAP_MAX); - goto done; - } - - make_nonnull_domain (&args.dom, domain); - args.vcpu = vcpu; - args.cpumap.cpumap_len = maplen; - args.cpumap.cpumap_val = (char *) cpumap; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_PIN_VCPU, - (xdrproc_t) xdr_remote_domain_pin_vcpu_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static int remoteDomainGetVcpus (virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, @@ -2442,76 +2406,6 @@ done: } static int -remoteDomainMigratePerform (virDomainPtr domain, - const char *cookie, - int cookielen, - const char *uri, - unsigned long flags, - const char *dname, - unsigned long resource) -{ - int rv = -1; - remote_domain_migrate_perform_args args; - struct private_data *priv = domain->conn->privateData; - - remoteDriverLock(priv); - - make_nonnull_domain (&args.dom, domain); - args.cookie.cookie_len = cookielen; - args.cookie.cookie_val = (char *) cookie; - args.uri = (char *) uri; - args.flags = flags; - args.dname = dname == NULL ? NULL : (char **) &dname; - args.resource = resource; - - if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_PERFORM, - (xdrproc_t) xdr_remote_domain_migrate_perform_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock(priv); - return rv; -} - -static virDomainPtr -remoteDomainMigrateFinish (virConnectPtr dconn, - const char *dname, - const char *cookie, - int cookielen, - const char *uri, - unsigned long flags) -{ - virDomainPtr ddom = NULL; - remote_domain_migrate_finish_args args; - remote_domain_migrate_finish_ret ret; - struct private_data *priv = dconn->privateData; - - remoteDriverLock(priv); - - args.dname = (char *) dname; - args.cookie.cookie_len = cookielen; - args.cookie.cookie_val = (char *) cookie; - args.uri = (char *) uri; - args.flags = flags; - - memset (&ret, 0, sizeof ret); - if (call (dconn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH, - (xdrproc_t) xdr_remote_domain_migrate_finish_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_migrate_finish_ret, (char *) &ret) == -1) - goto done; - - ddom = get_nonnull_domain (dconn, ret.ddom); - xdr_free ((xdrproc_t) &xdr_remote_domain_migrate_finish_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return ddom; -} - -static int remoteDomainMigratePrepare2 (virConnectPtr dconn, char **cookie, int *cookielen, const char *uri_in, char **uri_out, @@ -2569,43 +2463,6 @@ error: goto done; } -static virDomainPtr -remoteDomainMigrateFinish2 (virConnectPtr dconn, - const char *dname, - const char *cookie, - int cookielen, - const char *uri, - unsigned long flags, - int retcode) -{ - virDomainPtr ddom = NULL; - remote_domain_migrate_finish2_args args; - remote_domain_migrate_finish2_ret ret; - struct private_data *priv = dconn->privateData; - - remoteDriverLock(priv); - - args.dname = (char *) dname; - args.cookie.cookie_len = cookielen; - args.cookie.cookie_val = (char *) cookie; - args.uri = (char *) uri; - args.flags = flags; - args.retcode = retcode; - - memset (&ret, 0, sizeof ret); - if (call (dconn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH2, - (xdrproc_t) xdr_remote_domain_migrate_finish2_args, (char *) &args, - (xdrproc_t) xdr_remote_domain_migrate_finish2_ret, (char *) &ret) == -1) - goto done; - - ddom = get_nonnull_domain (dconn, ret.ddom); - xdr_free ((xdrproc_t) &xdr_remote_domain_migrate_finish2_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return ddom; -} - static int remoteDomainCreate (virDomainPtr domain) { @@ -3265,33 +3122,6 @@ remoteNWFilterClose(virConnectPtr conn) return remoteGenericClose(conn, &conn->nwfilterPrivateData); } -static virNWFilterPtr -remoteNWFilterDefineXML (virConnectPtr conn, const char *xmlDesc, - unsigned int flags ATTRIBUTE_UNUSED) -{ - virNWFilterPtr net = NULL; - remote_nwfilter_define_xml_args args; - remote_nwfilter_define_xml_ret ret; - struct private_data *priv = conn->nwfilterPrivateData; - - remoteDriverLock(priv); - - args.xml = (char *) xmlDesc; - - memset (&ret, 0, sizeof ret); - if (call (conn, priv, 0, REMOTE_PROC_NWFILTER_DEFINE_XML, - (xdrproc_t) xdr_remote_nwfilter_define_xml_args, (char *) &args, - (xdrproc_t) xdr_remote_nwfilter_define_xml_ret, (char *) &ret) == -1) - goto done; - - net = get_nonnull_nwfilter (conn, ret.nwfilter); - xdr_free ((xdrproc_t) &xdr_remote_nwfilter_define_xml_ret, (char *) &ret); - -done: - remoteDriverUnlock(priv); - return net; -} - /*----------------------------------------------------------------------*/ static int @@ -4298,33 +4128,6 @@ remoteSecretClose (virConnectPtr conn) return remoteGenericClose(conn, &conn->secretPrivateData); } -static int -remoteSecretSetValue (virSecretPtr secret, const unsigned char *value, - size_t value_size, unsigned int flags) -{ - int rv = -1; - remote_secret_set_value_args args; - struct private_data *priv = secret->conn->secretPrivateData; - - remoteDriverLock (priv); - - make_nonnull_secret (&args.secret, secret); - args.value.value_len = value_size; - args.value.value_val = (char *) value; - args.flags = flags; - - if (call (secret->conn, priv, 0, REMOTE_PROC_SECRET_SET_VALUE, - (xdrproc_t) xdr_remote_secret_set_value_args, (char *) &args, - (xdrproc_t) xdr_void, (char *) NULL) == -1) - goto done; - - rv = 0; - -done: - remoteDriverUnlock (priv); - return rv; -} - static unsigned char * remoteSecretGetValue (virSecretPtr secret, size_t *value_size, unsigned int flags) @@ -4901,36 +4704,6 @@ done: return rv; } -static char * -remoteCPUBaseline(virConnectPtr conn, - const char **xmlCPUs, - unsigned int ncpus, - unsigned int flags) -{ - struct private_data *priv = conn->privateData; - remote_cpu_baseline_args args; - remote_cpu_baseline_ret ret; - char *cpu = NULL; - - remoteDriverLock(priv); - - args.xmlCPUs.xmlCPUs_len = ncpus; - args.xmlCPUs.xmlCPUs_val = (char **) xmlCPUs; - args.flags = flags; - - memset(&ret, 0, sizeof (ret)); - if (call(conn, priv, 0, REMOTE_PROC_CPU_BASELINE, - (xdrproc_t) xdr_remote_cpu_baseline_args, (char *) &args, - (xdrproc_t) xdr_remote_cpu_baseline_ret, (char *) &ret) == -1) - goto done; - - cpu = ret.cpu; - -done: - remoteDriverUnlock(priv); - return cpu; -} - static int remoteDomainEventRegisterAny(virConnectPtr conn, virDomainPtr dom, int eventID, -- 1.7.0.4

On Sun, Apr 24, 2011 at 11:13:47AM +0200, Matthias Bolte wrote:
Richard W.M. Jones suggested [1] that the code that directly deals with the XDR protocol should be generated. The remote_generate_stubs.pl script already generates all the headers, just the bodies in the daemon and remote driver are manually written. But most of the functions just follow simple patterns. So I extended the generator to exploit this patterns and move 11 kLOC code from manually written to generated code.
During this I came a cross many small variations and problems in the XDR protocol. For example, NWFilterDefineXML has a flags parameter in the public API, but it's not transferred in the XDR protocol. Another things is the variations in the usage of unsigned VS signed types. This comes in two forms. public API VS XDR procotol and in between different functions. For example, some functions use int for the flags paramater and some use unsigned int.
This results in quite a lot of special case handling in the generator.
Matthias, this sounds the right thing to do, actually cocumenting the irregularities in teh generator is an important step to make sure we keep the ABI over time. However I think it's better to postpone applying the patch since after the upcoming release and when Dan is back, I would really prefer him to have a look at it :-) okay ? Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/

2011/4/27 Daniel Veillard <veillard@redhat.com>:
On Sun, Apr 24, 2011 at 11:13:47AM +0200, Matthias Bolte wrote:
Richard W.M. Jones suggested [1] that the code that directly deals with the XDR protocol should be generated. The remote_generate_stubs.pl script already generates all the headers, just the bodies in the daemon and remote driver are manually written. But most of the functions just follow simple patterns. So I extended the generator to exploit this patterns and move 11 kLOC code from manually written to generated code.
During this I came a cross many small variations and problems in the XDR protocol. For example, NWFilterDefineXML has a flags parameter in the public API, but it's not transferred in the XDR protocol. Another things is the variations in the usage of unsigned VS signed types. This comes in two forms. public API VS XDR procotol and in between different functions. For example, some functions use int for the flags paramater and some use unsigned int.
This results in quite a lot of special case handling in the generator.
Matthias,
this sounds the right thing to do, actually cocumenting the irregularities in teh generator is an important step to make sure we keep the ABI over time. However I think it's better to postpone applying the patch since after the upcoming release and when Dan is back, I would really prefer him to have a look at it :-)
okay ?
Daniel
Sure, this change is way to big to go into the next release, as we're supposed to be in feature freeze for 0.9.1 already, aren't we? Although everything still compiles fine and the TCK did turn up any major breakage this needs to be properly reviewed to make sure I didn't overlook anything in the conversion process. I should probably also add a 23/22 patch that adds more comments to the generator about the irregularities that are currently expressed by the special case code only. So, as you said this series has to be postponed for 0.9.2. Matthias

On Wed, Apr 27, 2011 at 09:18:18AM +0200, Matthias Bolte wrote:
2011/4/27 Daniel Veillard <veillard@redhat.com>:
On Sun, Apr 24, 2011 at 11:13:47AM +0200, Matthias Bolte wrote:
Richard W.M. Jones suggested [1] that the code that directly deals with the XDR protocol should be generated. The remote_generate_stubs.pl script already generates all the headers, just the bodies in the daemon and remote driver are manually written. But most of the functions just follow simple patterns. So I extended the generator to exploit this patterns and move 11 kLOC code from manually written to generated code.
During this I came a cross many small variations and problems in the XDR protocol. For example, NWFilterDefineXML has a flags parameter in the public API, but it's not transferred in the XDR protocol. Another things is the variations in the usage of unsigned VS signed types. This comes in two forms. public API VS XDR procotol and in between different functions. For example, some functions use int for the flags paramater and some use unsigned int.
This results in quite a lot of special case handling in the generator.
Matthias,
this sounds the right thing to do, actually cocumenting the irregularities in teh generator is an important step to make sure we keep the ABI over time. However I think it's better to postpone applying the patch since after the upcoming release and when Dan is back, I would really prefer him to have a look at it :-)
okay ?
Daniel
Sure, this change is way to big to go into the next release, as we're supposed to be in feature freeze for 0.9.1 already, aren't we?
Well I didn't explicitely announced t and mad no candidate release, so let's say we aren't yet, but very soon
Although everything still compiles fine and the TCK did turn up any major breakage this needs to be properly reviewed to make sure I didn't overlook anything in the conversion process.
Agreed
I should probably also add a 23/22 patch that adds more comments to the generator about the irregularities that are currently expressed by the special case code only.
+1 :-)
So, as you said this series has to be postponed for 0.9.2.
Okay, thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/

2011/4/24 Matthias Bolte <matthias.bolte@googlemail.com>:
Richard W.M. Jones suggested [1] that the code that directly deals with the XDR protocol should be generated. The remote_generate_stubs.pl script already generates all the headers, just the bodies in the daemon and remote driver are manually written. But most of the functions just follow simple patterns. So I extended the generator to exploit this patterns and move 11 kLOC code from manually written to generated code.
During this I came a cross many small variations and problems in the XDR protocol. For example, NWFilterDefineXML has a flags parameter in the public API, but it's not transferred in the XDR protocol. Another things is the variations in the usage of unsigned VS signed types. This comes in two forms. public API VS XDR procotol and in between different functions. For example, some functions use int for the flags paramater and some use unsigned int.
This results in quite a lot of special case handling in the generator.
I pushed this series to gitorious for simpler review as Dan suggested: https://gitorious.org/~photron/libvirt/photron-libvirt/commits/remotegen Matthias

On Sun, Apr 24, 2011 at 11:13:47AM +0200, Matthias Bolte wrote:
Richard W.M. Jones suggested [1] that the code that directly deals with the XDR protocol should be generated. The remote_generate_stubs.pl script already generates all the headers, just the bodies in the daemon and remote driver are manually written. But most of the functions just follow simple patterns. So I extended the generator to exploit this patterns and move 11 kLOC code from manually written to generated code.
As expected the generator itself is pretty complex & hard to understand, but given the complexity of our API there's nothing that can really be done about this. I see it takes a blacklist approach, so I'm wondering what the behaviour is if someone adds a new function that it isn't designed to cope with yet. Is it able to raise immediate errors for stuff it can't cope with, or does it silently generate bogus code like our python generator often does ? Ideally the former, but it isn't critical - just something we need to be aware of for future API patch review Also, as per my other patch today, I think we shouldn't actually store the generated bodies in GIT, once this is done.
During this I came a cross many small variations and problems in the XDR protocol. For example, NWFilterDefineXML has a flags parameter in the public API, but it's not transferred in the XDR protocol. Another things is the variations in the usage of unsigned VS signed types. This comes in two forms. public API VS XDR procotol and in between different functions. For example, some functions use int for the flags paramater and some use unsigned int.
This results in quite a lot of special case handling in the generator.
cfg.mk | 10 +- daemon/Makefile.am | 46 +- daemon/qemu_dispatch_args.h | 2 +- daemon/qemu_dispatch_bodies.c | 6 + daemon/qemu_dispatch_prototypes.h | 2 +- daemon/qemu_dispatch_ret.h | 2 +- daemon/qemu_dispatch_table.h | 2 +- daemon/remote.c | 5765 +---------------------------------- daemon/remote_dispatch_args.h | 2 +- daemon/remote_dispatch_bodies.c | 5933 +++++++++++++++++++++++++++++++++++ daemon/remote_dispatch_prototypes.h | 80 +- daemon/remote_dispatch_ret.h | 2 +- daemon/remote_dispatch_table.h | 158 +- daemon/remote_generate_stubs.pl | 195 -- daemon/remote_generator.pl | 1198 +++++++ po/POTFILES.in | 1 + src/Makefile.am | 13 +- src/remote/qemu_client_bodies.c | 4 + src/remote/qemu_protocol.c | 2 +- src/remote/qemu_protocol.h | 2 +- src/remote/qemu_protocol.x | 2 +- src/remote/remote_client_bodies.c | 4664 +++++++++++++++++++++++++++ src/remote/remote_driver.c | 4907 +---------------------------- src/remote/remote_protocol.c | 26 +- src/remote/remote_protocol.h | 26 +- src/remote/remote_protocol.x | 34 +- src/remote_protocol-structs | 26 +- 27 files changed, 12093 insertions(+), 11017 deletions(-)
It is pretty hard to review this, but I've looked at the end result remote_client_bodies.c and remote_dispatch_bodies.c files and they both look sane. Also, the protocol definition itself hasn't been changed, so I'm inclined to ACK this and let us deal with any fallout as followups. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

2011/5/6 Daniel P. Berrange <berrange@redhat.com>:
On Sun, Apr 24, 2011 at 11:13:47AM +0200, Matthias Bolte wrote:
Richard W.M. Jones suggested [1] that the code that directly deals with the XDR protocol should be generated. The remote_generate_stubs.pl script already generates all the headers, just the bodies in the daemon and remote driver are manually written. But most of the functions just follow simple patterns. So I extended the generator to exploit this patterns and move 11 kLOC code from manually written to generated code.
As expected the generator itself is pretty complex & hard to understand, but given the complexity of our API there's nothing that can really be done about this.
It probably makes it harder that the commits just document the process of how I moved groups of functions to the generator. I meant to add patch 23/22 to the series that adds more documentation in the guts of the generator to explain its mechanics, but I didn't come around to do that yet.
I see it takes a blacklist approach, so I'm wondering what the behaviour is if someone adds a new function that it isn't designed to cope with yet. Is it able to raise immediate errors for stuff it can't cope with, or does it silently generate bogus code like our python generator often does ? Ideally the former, but it isn't critical - just something we need to be aware of for future API patch review
Hm, I didn't think of this problem yet. But I would expect that in almost all cases the generator will complain about stuff it can't handle. Currently there are some general-catch-the-rest-else cases in the generator. Those can be made much stricter. I think that it'll be possible to make the generator reliably report stuff it can't handle. I'll work on that. To be really sure, we might add a whitelist aside the backlist and once the generator sees something that's not on one of the lists it complains with an error that tells the programmer to either add the function to whitelist and check that the generated code does the right thing, or add it to the blacklist and add a function body manually. On the other hand, stuff like flags parameter being unsigned in the public API but signed in the XDR protocol need manual special cases in the generator. We could add some general sanity checks to avoid something like this in the future. The generator could complain when a parameter is called flags but is signed. I'll work on that too.
Also, as per my other patch today, I think we shouldn't actually store the generated bodies in GIT, once this is done.
That's true.
During this I came a cross many small variations and problems in the XDR protocol. For example, NWFilterDefineXML has a flags parameter in the public API, but it's not transferred in the XDR protocol. Another things is the variations in the usage of unsigned VS signed types. This comes in two forms. public API VS XDR procotol and in between different functions. For example, some functions use int for the flags paramater and some use unsigned int.
This results in quite a lot of special case handling in the generator.
cfg.mk | 10 +- daemon/Makefile.am | 46 +- daemon/qemu_dispatch_args.h | 2 +- daemon/qemu_dispatch_bodies.c | 6 + daemon/qemu_dispatch_prototypes.h | 2 +- daemon/qemu_dispatch_ret.h | 2 +- daemon/qemu_dispatch_table.h | 2 +- daemon/remote.c | 5765 +---------------------------------- daemon/remote_dispatch_args.h | 2 +- daemon/remote_dispatch_bodies.c | 5933 +++++++++++++++++++++++++++++++++++ daemon/remote_dispatch_prototypes.h | 80 +- daemon/remote_dispatch_ret.h | 2 +- daemon/remote_dispatch_table.h | 158 +- daemon/remote_generate_stubs.pl | 195 -- daemon/remote_generator.pl | 1198 +++++++ po/POTFILES.in | 1 + src/Makefile.am | 13 +- src/remote/qemu_client_bodies.c | 4 + src/remote/qemu_protocol.c | 2 +- src/remote/qemu_protocol.h | 2 +- src/remote/qemu_protocol.x | 2 +- src/remote/remote_client_bodies.c | 4664 +++++++++++++++++++++++++++ src/remote/remote_driver.c | 4907 +---------------------------- src/remote/remote_protocol.c | 26 +- src/remote/remote_protocol.h | 26 +- src/remote/remote_protocol.x | 34 +- src/remote_protocol-structs | 26 +- 27 files changed, 12093 insertions(+), 11017 deletions(-)
It is pretty hard to review this, but I've looked at the end result remote_client_bodies.c and remote_dispatch_bodies.c files and they both look sane. Also, the protocol definition itself hasn't been changed, so I'm inclined to ACK this and let us deal with any fallout as followups.
Daniel
Thanks, for reviewing this huge patch series. I'm quite sure I didn't break anything major because the TCK still runs fine. I also checked per function that the generated code matches the original code in functionality. I hope that nothing slipped but I cannot guarantee it. So, are you just inclined to ACK or do you ACK this? :) I'd suggest that I push this series as is to get it in the wild early in the 0.9.2 cycle, so it can get enough testing. I'll make the general-catch-the-rest-else cases in the generator stricter to make the generator more robust against future additions to the XDR protocol. I might also add the additional whitelist when we decide that its necessary. Matthias

On 05/06/2011 08:32 AM, Matthias Bolte wrote:
To be really sure, we might add a whitelist aside the backlist and once the generator sees something that's not on one of the lists it complains with an error that tells the programmer to either add the function to whitelist and check that the generated code does the right thing, or add it to the blacklist and add a function body manually.
I like that idea the most.
On the other hand, stuff like flags parameter being unsigned in the public API but signed in the XDR protocol need manual special cases in the generator. We could add some general sanity checks to avoid something like this in the future. The generator could complain when a parameter is called flags but is signed. I'll work on that too.
Also a good idea. It's not an API change if we switch existing offenders to unsigned, is it? Even for C++, where there is function overloading, we are using 'extern "C"' declarations.
So, are you just inclined to ACK or do you ACK this? :)
I'm with danpb here - Treat this as an ACK, and push now, to maximize the testing exposure. Do your proposed cleanups (documentation, sanity checking, whitelisting) as followups. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

2011/5/6 Eric Blake <eblake@redhat.com>:
On 05/06/2011 08:32 AM, Matthias Bolte wrote:
To be really sure, we might add a whitelist aside the backlist and once the generator sees something that's not on one of the lists it complains with an error that tells the programmer to either add the function to whitelist and check that the generated code does the right thing, or add it to the blacklist and add a function body manually.
I like that idea the most.
On the other hand, stuff like flags parameter being unsigned in the public API but signed in the XDR protocol need manual special cases in the generator. We could add some general sanity checks to avoid something like this in the future. The generator could complain when a parameter is called flags but is signed. I'll work on that too.
Also a good idea.
It's not an API change if we switch existing offenders to unsigned, is it? Even for C++, where there is function overloading, we are using 'extern "C"' declarations.
So, are you just inclined to ACK or do you ACK this? :)
I'm with danpb here - Treat this as an ACK, and push now, to maximize the testing exposure. Do your proposed cleanups (documentation, sanity checking, whitelisting) as followups.
Okay, I finally manged to push the series. I had to resolve some syntax-check and push hook hassle first. Matthias
participants (4)
-
Daniel P. Berrange
-
Daniel Veillard
-
Eric Blake
-
Matthias Bolte