summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX/run.c
diff options
context:
space:
mode:
authorXavier Simonart <xavier.simonart@intel.com>2019-09-04 13:54:31 +0200
committerXavier Simonart <xavier.simonart@intel.com>2019-09-04 13:54:31 +0200
commitd3552eafaca34771734258f3ff6f4f5f819e72bd (patch)
tree1955ec75c2d21303f9ee6b6a18a32dfb3da82692 /VNFs/DPPD-PROX/run.c
parent9033cadea78ca28c726323cb8334c7206fe51c22 (diff)
Add heartbeat support (stop all cores in case of TCP socket issues)
"heartbeat timeout" (in second) can be specified as a global parameter in PROX config file. If set, a timer is started when the first command is received from the TCP socket. This timer is reset at each commands received through the TCP socket. If the timer expires, then - all cores are stopped - the TCP socket is closed, causing an error at client side. This feature helps in case a script starts PROX and the traffic generated through PROX causes issues to the control plane. Change-Id: I900f22fa091786a564f6b7d846f5abc2c5cbcc58 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
Diffstat (limited to 'VNFs/DPPD-PROX/run.c')
-rw-r--r--VNFs/DPPD-PROX/run.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/VNFs/DPPD-PROX/run.c b/VNFs/DPPD-PROX/run.c
index bed0c757..c05f0a9f 100644
--- a/VNFs/DPPD-PROX/run.c
+++ b/VNFs/DPPD-PROX/run.c
@@ -237,6 +237,13 @@ void __attribute__((noreturn)) run(uint32_t flags)
if (stop_tsc && rte_rdtsc() >= stop_tsc) {
stop_prox = 1;
}
+ if ((prox_cfg.heartbeat_tsc) && (prox_cfg.heartbeat_timeout) && (rte_rdtsc() >= prox_cfg.heartbeat_tsc)) {
+ plog_info("Stopping to handle client as heartbeat timed out\n");
+ stop_core_all(-1);
+ stop_handling_client();
+ req_refresh();
+ prox_cfg.heartbeat_tsc = 0;
+ }
}
} else {
while (stop_prox == 0) {
@@ -254,6 +261,13 @@ void __attribute__((noreturn)) run(uint32_t flags)
if (stop_tsc && rte_rdtsc() >= stop_tsc) {
stop_prox = 1;
}
+ if ((prox_cfg.heartbeat_tsc) && (prox_cfg.heartbeat_timeout) && (rte_rdtsc() >= prox_cfg.heartbeat_tsc)) {
+ plog_info("Stopping to handle client as heartbeat timed out\n");
+ stop_core_all(-1);
+ stop_handling_client();
+ req_refresh();
+ prox_cfg.heartbeat_tsc = 0;
+ }
}
}