[libvirt] [PATCH 04/13] Add admin protocol

Michal Privoznik mprivozn at redhat.com
Wed May 20 16:11:04 UTC 2015


On 20.05.2015 07:19, Martin Kletzander wrote:
> For now there are only CONNECT_OPEN and CONNECT_CLOSE procedures.
> 
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>  .gitignore                 |  1 +
>  src/Makefile.am            | 13 +++++++++-
>  src/admin/admin_protocol.x | 65 ++++++++++++++++++++++++++++++++++++++++++++++
>  src/admin_protocol-structs |  9 +++++++
>  4 files changed, 87 insertions(+), 1 deletion(-)
>  create mode 100644 src/admin/admin_protocol.x
>  create mode 100644 src/admin_protocol-structs
> 
> diff --git a/.gitignore b/.gitignore
> index 1a5cf8e..b60c162 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -111,6 +111,7 @@
>  /src/access/viraccessapichecklxc.h
>  /src/access/viraccessapicheckqemu.c
>  /src/access/viraccessapicheckqemu.h
> +/src/admin/admin_protocol.[ch]
>  /src/esx/*.generated.*
>  /src/hyperv/*.generated.*
>  /src/libvirt*.def
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 7e95cf1..d625874 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -392,6 +392,16 @@ REMOTE_DRIVER_SOURCES =						\
>  EXTRA_DIST +=  $(REMOTE_DRIVER_PROTOCOL) \
>  		$(REMOTE_DRIVER_GENERATED)
> 
> +ADMIN_PROTOCOL = $(srcdir)/admin/admin_protocol.x
> +
> +ADMIN_PROTOCOL_GENERATED = \
> +		admin/admin_protocol.c	\
> +		admin/admin_protocol.h
> +
> +EXTRA_DIST += $(ADMIN_PROTOCOL) $(ADMIN_PROTOCOL_GENERATED)
> +BUILT_SOURCES += $(ADMIN_PROTOCOL_GENERATED)
> +MAINTAINERCLEANFILES += $(ADMIN_PROTOCOL_GENERATED)
> +
>  # 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
>  # presumes you know what pdwtags output looks like:
> @@ -2093,7 +2103,8 @@ RPC_PROBE_FILES = $(srcdir)/rpc/virnetprotocol.x \
>  		  $(srcdir)/remote/lxc_protocol.x \
>  		  $(srcdir)/remote/qemu_protocol.x \
>  		  $(srcdir)/lxc/lxc_monitor_protocol.x \
> -		  $(srcdir)/locking/lock_protocol.x
> +		  $(srcdir)/locking/lock_protocol.x \
> +		  $(srcdir)/admin/admin_protocol.x
> 
>  libvirt_functions.stp: $(RPC_PROBE_FILES) $(srcdir)/rpc/gensystemtap.pl
>  	$(AM_V_GEN)$(PERL) -w $(srcdir)/rpc/gensystemtap.pl $(RPC_PROBE_FILES) > $@
> diff --git a/src/admin/admin_protocol.x b/src/admin/admin_protocol.x
> new file mode 100644
> index 0000000..63f6a53
> --- /dev/null
> +++ b/src/admin/admin_protocol.x
> @@ -0,0 +1,65 @@
> +/* -*- c -*-
> + * admin_protocol.x: private protocol for communicating between
> + *   remote_internal driver and libvirtd.  This protocol is
> + *   internal and may change at any time.
> + *
> + * Copyright (C) 2014-2015 Red Hat, Inc.

2014?

> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library.  If not, see
> + * <http://www.gnu.org/licenses/>.
> + *
> + * Author: Martin Kletzander <mkletzan at redhat.com>
> + */
> +
> +%#include "remote_protocol.h"
> +
> +
> +/*----- Protocol. -----*/
> +struct admin_connect_open_args {
> +    unsigned int flags;
> +};
> +
> +
> +/* Define the program number, protocol version and procedure numbers here. */
> +const ADMIN_PROGRAM = 0x06900690;
> +const ADMIN_PROTOCOL_VERSION = 1;
> +
> +enum admin_procedure {
> +    /* Each function must be preceded by a comment providing one or
> +     * more annotations:
> +     *
> +     * - @generate: none|client|server|both
> +     *
> +     *   Whether to generate the dispatch stubs for the server
> +     *   and/or client code.
> +     *
> +     * - @readstream: paramnumber
> +     * - @writestream: paramnumber
> +     *
> +     *   The @readstream or @writestream annotations let daemon and src/remote
> +     *   create a stream.  The direction is defined from the src/remote point
> +     *   of view.  A readstream transfers data from daemon to src/remote.  The
> +     *   <paramnumber> specifies at which offset the stream parameter is inserted
> +     *   in the function parameter list.
> +     */
> +    /**
> +     * @generate: client
> +     */
> +    ADMIN_PROC_CONNECT_OPEN = 1,
> +
> +    /**
> +     * @generate: client
> +     */
> +    ADMIN_PROC_CONNECT_CLOSE = 2
> +};
> diff --git a/src/admin_protocol-structs b/src/admin_protocol-structs
> new file mode 100644
> index 0000000..bc1d489
> --- /dev/null
> +++ b/src/admin_protocol-structs
> @@ -0,0 +1,9 @@
> +/* -*- c -*- */
> +struct admin_connect_open_args {
> +    unsigned int flags;
> +};
> +
> +enum admin_procedure {
> +    ADMIN_PROC_CONNECT_OPEN = 1,
> +    ADMIN_PROC_CONNECT_CLOSE = 2,
> +};
> 

ACK

Michal




More information about the libvir-list mailing list