[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