[libvirt] [PATCHv2 6/6] remote: remove special case for getting version

Matthias Bolte matthias.bolte at googlemail.com
Wed May 18 19:34:22 UTC 2011


2011/5/18 Eric Blake <eblake at redhat.com>:
> The on-the-wire protocol is identical; XDR guarantees that
> both 'hyper' and 'unsigned hyper' are transmitted as 8 bytes.
>
> * src/remote/remote_protocol.x (remote_get_version_ret)
> (remote_get_lib_version_ret): Match public API.
> * daemon/remote_generator.pl: Drop special case.
> * src/remote_protocol-structs: Reflect updated type.
> ---
>
> v2: fix src/remote_protocol-structs
> v1: reviewed but no ACK at:
> https://www.redhat.com/archives/libvir-list/2011-May/msg00718.html
>
>  daemon/remote_generator.pl   |   23 +++++++++--------------
>  src/remote/remote_protocol.x |    4 ++--
>  src/remote_protocol-structs  |    4 ++--
>  3 files changed, 13 insertions(+), 18 deletions(-)
>
> diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl
> index a3b8421..1fc3b17 100755
> --- a/daemon/remote_generator.pl
> +++ b/daemon/remote_generator.pl

> @@ -995,19 +988,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";

I tested that a new virsh connected to an old libvirtd still gives the
right version number.

ACK.

Matthias




More information about the libvir-list mailing list