[libvirt] [PATCH v3 01/13] Define keepalive protocol

Daniel P. Berrange berrange at redhat.com
Tue Oct 18 09:18:27 UTC 2011


On Wed, Oct 12, 2011 at 07:16:19AM +0200, Jiri Denemark wrote:
> The keepalive program has two procedures: PING, and PONG.
> Both are used only in asynchronous messages and the sender doesn't wait
> for any reply. However, the party which receives PING messages is
> supposed to react by sending PONG message the other party, but no
> explicit binding between PING and PONG messages is made. For backward
> compatibility neither server nor client are allowed to send keepalive
> messages before checking that remote party supports them.
> ---
> Notes:
>     Version 3:
>     - remove ADVERTISE message which is no longer used
>     
>     Version 2:
>     - no change
> 
>  .gitignore                     |    1 +
>  src/Makefile.am                |   14 ++++++++++----
>  src/rpc/virkeepaliveprotocol.x |    7 +++++++
>  3 files changed, 18 insertions(+), 4 deletions(-)
>  create mode 100644 src/rpc/virkeepaliveprotocol.x
> 
> diff --git a/.gitignore b/.gitignore
> index 41fa50f..3859fab 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -65,6 +65,7 @@
>  /src/locking/qemu-sanlock.conf
>  /src/remote/*_client_bodies.h
>  /src/remote/*_protocol.[ch]
> +/src/rpc/virkeepaliveprotocol.[ch]
>  /src/rpc/virnetprotocol.[ch]
>  /src/util/virkeymaps.h
>  /tests/*.log
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 302d395..af07020 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -269,7 +269,8 @@ PDWTAGS = \
>  PROTOCOL_STRUCTS = \
>  	$(srcdir)/remote_protocol-structs \
>  	$(srcdir)/qemu_protocol-structs \
> -	$(srcdir)/virnetprotocol-structs
> +	$(srcdir)/virnetprotocol-structs \
> +	$(srcdir)/virkeepaliveprotocol-structs
>  if WITH_REMOTE
>  # The .o file that pdwtags parses is created as a side effect of running
>  # libtool; but from make's perspective we depend on the .lo file.
> @@ -277,6 +278,7 @@ $(srcdir)/%_protocol-structs: libvirt_driver_remote_la-%_protocol.lo
>  	$(PDWTAGS)
>  $(srcdir)/virnetprotocol-structs: libvirt_net_rpc_la-virnetprotocol.lo
>  	$(PDWTAGS)
> +$(srcdir)/virkeepaliveprotocol-structs: libvirt_net_rpc_la-virkeepaliveprotocol.lo
>  else !WITH_REMOTE
>  # These generated files must live in git, because they cannot be re-generated
>  # when configured --without-remote.
> @@ -1352,11 +1354,14 @@ EXTRA_DIST += \
>  	rpc/gendispatch.pl \
>  	rpc/genprotocol.pl \
>  	rpc/gensystemtap.pl \
> -	rpc/virnetprotocol.x
> +	rpc/virnetprotocol.x \
> +	rpc/virkeepaliveprotocol.x
>  
>  VIR_NET_RPC_GENERATED = \
>  	$(srcdir)/rpc/virnetprotocol.h \
> -	$(srcdir)/rpc/virnetprotocol.c
> +	$(srcdir)/rpc/virnetprotocol.c \
> +	$(srcdir)/rpc/virkeepaliveprotocol.h \
> +	$(srcdir)/rpc/virkeepaliveprotocol.c
>  
>  BUILT_SOURCES += $(VIR_NET_RPC_GENERATED)
>  
> @@ -1364,7 +1369,8 @@ libvirt_net_rpc_la_SOURCES = \
>  	rpc/virnetmessage.h rpc/virnetmessage.c \
>  	rpc/virnetprotocol.h rpc/virnetprotocol.c \
>  	rpc/virnetsocket.h rpc/virnetsocket.c \
> -	rpc/virnettlscontext.h rpc/virnettlscontext.c
> +	rpc/virnettlscontext.h rpc/virnettlscontext.c \
> +	rpc/virkeepaliveprotocol.h rpc/virkeepaliveprotocol.c
>  if HAVE_SASL
>  libvirt_net_rpc_la_SOURCES += \
>  	rpc/virnetsaslcontext.h rpc/virnetsaslcontext.c
> diff --git a/src/rpc/virkeepaliveprotocol.x b/src/rpc/virkeepaliveprotocol.x
> new file mode 100644
> index 0000000..ca34825
> --- /dev/null
> +++ b/src/rpc/virkeepaliveprotocol.x
> @@ -0,0 +1,7 @@
> +const KEEPALIVE_PROGRAM = 0x6b656570;
> +const KEEPALIVE_VERSION = 1;
> +
> +enum keepalive_procedure {
> +    KEEPALIVE_PROC_PING = 1,
> +    KEEPALIVE_PROC_PONG = 2
> +};

ACK, if you also add  rpc/virkeepaliveprotocol.x to the RPC_PROBE_FILES
in the Makefile.am, so systemtap functions are updated.

Regards,
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