[libvirt] [PATCH] remote: remove special case for getting version
Daniel P. Berrange
berrange at redhat.com
Thu May 12 08:31:05 UTC 2011
On Wed, May 11, 2011 at 04:50:28PM -0600, Eric Blake wrote:
> * src/remote/remote_protocol.x (remote_get_version_ret)
> (remote_get_lib_version_ret): Match public API.
> * daemon/remote_generator.pl: Drop special case.
> ---
>
> By the way, the previous patch and this one both assume that
> Matthias' generator whitelist patch is applied.
>
> daemon/remote_generator.pl | 23 +++++++++--------------
> src/remote/remote_protocol.x | 4 ++--
> 2 files changed, 11 insertions(+), 16 deletions(-)
>
> diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl
> index c53ebc8..6d91d15 100755
> --- a/daemon/remote_generator.pl
> +++ b/daemon/remote_generator.pl
> @@ -504,13 +504,6 @@ elsif ($opt_b) {
> $type_name = $1 if ($1);
> $type_name .= "long";
>
> - if ($type_name eq "long" and
> - $calls{$_}->{ProcName} =~ m/^Get(Lib)?Version$/) {
> - # SPECIAL: virConnectGet(Lib)?Version uses unsigned long
> - # in public API but hyper in XDR protocol
> - $type_name = "unsigned long";
> - }
> -
> push(@vars_list, "$type_name $ret_name");
> push(@ret_list, "ret->$ret_name = $ret_name;");
> $single_ret_var = $ret_name;
> @@ -990,19 +983,21 @@ elsif ($opt_k) {
> $single_ret_type = "int";
> } elsif ($ret_member =~ m/^unsigned hyper (\S+);/) {
> my $arg_name = $1;
> - push(@ret_list, "rv = ret.$arg_name;");
> - $single_ret_var = "unsigned long rv = 0";
> - $single_ret_type = "unsigned long";
> - } elsif ($ret_member =~ m/^hyper (\S+);/) {
> - 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";
> - } elsif ($call->{ProcName} eq "NodeGetFreeMemory") {
> + } else {
> + push(@ret_list, "rv = ret.$arg_name;");
> + $single_ret_var = "unsigned long rv = 0";
> + $single_ret_type = "unsigned long";
> + }
> + } elsif ($ret_member =~ m/^hyper (\S+);/) {
> + my $arg_name = $1;
> +
> + if ($call->{ProcName} eq "NodeGetFreeMemory") {
> push(@ret_list, "rv = ret.$arg_name;");
> $single_ret_var = "unsigned long long rv = 0";
> $single_ret_type = "unsigned long long";
> diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
> index 0b88353..04937e2 100644
> --- a/src/remote/remote_protocol.x
> +++ b/src/remote/remote_protocol.x
> @@ -391,11 +391,11 @@ struct remote_get_type_ret {
> };
>
> struct remote_get_version_ret {
> - hyper hv_ver;
> + unsigned hyper hv_ver;
> };
>
> struct remote_get_lib_version_ret {
> - hyper lib_ver;
> + unsigned hyper lib_ver;
> };
Is this signed/unsigned change definitely compatible on the wire ?
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 :|
More information about the libvir-list
mailing list