]> xenbits.xensource.com Git - libvirt.git/commitdiff
Define keepalive protocol
authorJiri Denemark <jdenemar@redhat.com>
Thu, 22 Sep 2011 10:51:55 +0000 (12:51 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Thu, 24 Nov 2011 10:44:08 +0000 (11:44 +0100)
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.

.gitignore
src/Makefile.am
src/rpc/virkeepaliveprotocol.x [new file with mode: 0644]

index 0552b5245dc2e07cb97c8c99a8cc853bdf04970b..61a9a3831f223e36e9ec8697ec285f97b11ac9ef 100644 (file)
@@ -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
index 252c64f75d7b25ea4517e3a6ca61481bd474356b..b0cbff2a17ea92e99b79d937ce569fc419f8ef4e 100644 (file)
@@ -285,7 +285,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.
@@ -293,6 +294,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.
@@ -1287,7 +1289,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) > $@
@@ -1366,11 +1371,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)
 
@@ -1378,7 +1386,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 (file)
index 0000000..5f158cf
--- /dev/null
@@ -0,0 +1,7 @@
+const KEEPALIVE_PROGRAM = 0x6b656570;
+const KEEPALIVE_PROTOCOL_VERSION = 1;
+
+enum keepalive_procedure {
+    KEEPALIVE_PROC_PING = 1,
+    KEEPALIVE_PROC_PONG = 2
+};