diff rvinterf/lowlevel/rvifmain.c @ 222:7168f63fc3b8

rvinterf: implemented keepalive mechanism
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 20 May 2017 21:00:15 +0000
parents e7502631a0f9
children 6f078c4a5506
line wrap: on
line diff
--- a/rvinterf/lowlevel/rvifmain.c	Sat May 20 20:04:35 2017 +0000
+++ b/rvinterf/lowlevel/rvifmain.c	Sat May 20 21:00:15 2017 +0000
@@ -36,6 +36,10 @@
 
 int wakeup_after_sec = 7;
 
+static char keepalive_msg[] =
+	"Received keepalive query, responding with keepalive answer";
+static u_char keepalive_answer[2] = {RVT_KEEPALIVE_HEADER, 'A'};
+
 main(argc, argv)
 	char **argv;
 {
@@ -203,6 +207,12 @@
 		if (client_head)
 			forward_nonrvt_pkt();
 		return;
+	case RVT_KEEPALIVE_HEADER:
+		if (rxpkt_len != 2 || rxpkt[1] != 'Q')
+			goto unknown;
+		output_line(keepalive_msg);
+		send_pkt_to_target(keepalive_answer, 2);
+		return;
 	case '*':
 		print_fc_lld_msg();
 		return;