summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX/log.c
diff options
context:
space:
mode:
Diffstat (limited to 'VNFs/DPPD-PROX/log.c')
-rw-r--r--VNFs/DPPD-PROX/log.c40
1 files changed, 35 insertions, 5 deletions
diff --git a/VNFs/DPPD-PROX/log.c b/VNFs/DPPD-PROX/log.c
index 7049a5e3..2fa63f34 100644
--- a/VNFs/DPPD-PROX/log.c
+++ b/VNFs/DPPD-PROX/log.c
@@ -25,10 +25,12 @@
#include <rte_mbuf.h>
#include "log.h"
+#include "quit.h"
#include "display.h"
#include "defaults.h"
#include "etypes.h"
#include "prox_cfg.h"
+#include "prox_compat.h"
static pthread_mutex_t file_mtx = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
int log_lvl = PROX_MAX_LOG_LVL;
@@ -56,7 +58,7 @@ const char *get_warning(int i)
static void store_warning(const char *warning)
{
- strncpy(last_warn[n_warnings % 5], warning, sizeof(last_warn[0]));
+ prox_strncpy(last_warn[n_warnings % 5], warning, sizeof(last_warn[0]));
n_warnings++;
}
@@ -69,10 +71,10 @@ void plog_init(const char *log_name, int log_name_pid)
if (log_name_pid)
snprintf(buf, sizeof(buf), "%s-%u.log", "prox", getpid());
else
- strncpy(buf, "prox.log", sizeof(buf));
+ prox_strncpy(buf, "prox.log", sizeof(buf));
}
else {
- strncpy(buf, log_name, sizeof(buf));
+ prox_strncpy(buf, log_name, sizeof(buf));
}
fp = fopen(buf, "w");
@@ -80,6 +82,13 @@ void plog_init(const char *log_name, int log_name_pid)
tsc_off = rte_rdtsc() + 2500000000;
}
+void plog_end(void)
+{
+ if (fp)
+ fclose(fp);
+ fp = NULL;
+}
+
int plog_set_lvl(int lvl)
{
if (lvl <= PROX_MAX_LOG_LVL) {
@@ -143,8 +152,8 @@ static const char* lvl_to_str(int lvl, int always)
static int dump_pkt(char *dst, size_t dst_size, const struct rte_mbuf *mbuf)
{
- const struct ether_hdr *peth = rte_pktmbuf_mtod(mbuf, const struct ether_hdr *);
- const struct ipv4_hdr *dpip = (const struct ipv4_hdr *)(peth + 1);
+ const prox_rte_ether_hdr *peth = rte_pktmbuf_mtod(mbuf, const prox_rte_ether_hdr *);
+ const prox_rte_ipv4_hdr *dpip = (const prox_rte_ipv4_hdr *)(peth + 1);
const uint8_t *pkt_bytes = (const uint8_t *)peth;
const uint16_t len = rte_pktmbuf_pkt_len(mbuf);
size_t str_len = 0;
@@ -204,6 +213,10 @@ static int vplog(int lvl, const char *format, va_list ap, const struct rte_mbuf
ret--;
ret += dump_pkt(buf + ret, sizeof(buf) - ret, mbuf);
}
+
+ if (lvl == PROX_LOG_PANIC)
+ PROX_PANIC(1, "%s", buf);
+
plog_buf(buf);
if (lvl == PROX_LOG_WARN) {
@@ -270,6 +283,23 @@ int plog_err(const char *fmt, ...)
return ret;
}
+int plog_err_or_panic(int do_panic, const char *fmt, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start(ap, fmt);
+ if (do_panic) {
+ ret = vplog(PROX_LOG_PANIC, fmt, ap, NULL, 0);
+ va_end(ap);
+ return ret;
+ } else {
+ ret = vplog(PROX_LOG_ERR, fmt, ap, NULL, 0);
+ va_end(ap);
+ return ret;
+ }
+}
+
int plogx_err(const char *fmt, ...)
{
va_list ap;