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

Jiri Denemark jdenemar at redhat.com
Thu Oct 27 16:05:37 UTC 2011


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 was ACKed provided I do the following changes:

    Version 4:
    - update systemptap functions with the new protocol
    - s/KEEPALIVE_VERSION/KEEPALIVE_PROTOCOL_VERSION/ to make stp generator
      happy
    
    Version 3:
    - remove ADVERTISE message which is no longer used
    
    Version 2:
    - no change

 .gitignore                     |    1 +
 src/Makefile.am                |   19 ++++++++++++++-----
 src/rpc/virkeepaliveprotocol.x |    7 +++++++
 3 files changed, 22 insertions(+), 5 deletions(-)
 create mode 100644 src/rpc/virkeepaliveprotocol.x

diff --git a/.gitignore b/.gitignore
index 0552b52..61a9a38 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 81ec730..872ac37 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -274,7 +274,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.
@@ -282,6 +283,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.
@@ -1282,7 +1284,10 @@ probes.h: probes.d
 probes.o: probes.d
 	$(AM_V_GEN)$(DTRACE) -o $@ -G -s $<
 
-RPC_PROBE_FILES = $(srcdir)/rpc/virnetprotocol.x $(srcdir)/remote/remote_protocol.x $(srcdir)/remote/qemu_protocol.x
+RPC_PROBE_FILES = $(srcdir)/rpc/virnetprotocol.x \
+		  $(srcdir)/rpc/virkeepaliveprotocol.x \
+		  $(srcdir)/remote/remote_protocol.x \
+		  $(srcdir)/remote/qemu_protocol.x
 
 libvirt_functions.stp: $(RPC_PROBE_FILES) $(srcdir)/rpc/gensystemtap.pl
 	$(AM_V_GEN)perl -w $(srcdir)/rpc/gensystemtap.pl $(RPC_PROBE_FILES) > $@
@@ -1361,11 +1366,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)
 
@@ -1373,7 +1381,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..5f158cf
--- /dev/null
+++ b/src/rpc/virkeepaliveprotocol.x
@@ -0,0 +1,7 @@
+const KEEPALIVE_PROGRAM = 0x6b656570;
+const KEEPALIVE_PROTOCOL_VERSION = 1;
+
+enum keepalive_procedure {
+    KEEPALIVE_PROC_PING = 1,
+    KEEPALIVE_PROC_PONG = 2
+};
-- 
1.7.7.1




More information about the libvir-list mailing list