From fcc59cece4dc19311ed15d2ac70af7dfead7cca6 Mon Sep 17 00:00:00 2001 From: Alexander Mohr Date: Wed, 10 Aug 2022 11:11:32 +0200 Subject: enforce-trace-limit: ContextLogLevel is now enforced in the daemon (#382) if an application sends a message with a level below context level and the level enforcement is on, the message will be dropped Signed-off-by: Alexander Mohr --- src/daemon/dlt-daemon.c | 23 ++++++++++++++++++++--- src/daemon/dlt-daemon.h | 4 +++- 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c index 74f4049..b7aac0d 100644 --- a/src/daemon/dlt-daemon.c +++ b/src/daemon/dlt-daemon.c @@ -3177,8 +3177,10 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, return DLT_DAEMON_ERROR_UNKNOWN; } - ret = dlt_daemon_client_send_message_to_all_client(daemon, - daemon_local, verbose); + /* discard non-allowed levels if enforcement is on */ + bool keep_message = enforce_context_ll_and_ts_keep_message(daemon_local); + if (keep_message) + dlt_daemon_client_send_message_to_all_client(daemon, daemon_local, verbose); if (DLT_DAEMON_ERROR_OK != ret) dlt_log(LOG_ERR, "failed to send message to client.\n"); @@ -3205,7 +3207,10 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, return DLT_DAEMON_ERROR_UNKNOWN; } - dlt_daemon_client_send_message_to_all_client(daemon, daemon_local, verbose); + /* discard non-allowed levels if enforcement is on */ + bool keep_message = enforce_context_ll_and_ts_keep_message(daemon_local); + if (keep_message) + dlt_daemon_client_send_message_to_all_client(daemon, daemon_local, verbose); /* keep not read data in buffer */ size = (int) (daemon_local->msg.headersize + @@ -3225,6 +3230,18 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, return DLT_DAEMON_ERROR_OK; } +bool enforce_context_ll_and_ts_keep_message(DltDaemonLocal *daemon_local) { + if (daemon_local->flags.enforceContextLLAndTS && + daemon_local->msg.extendedheader) { + const int mtin = DLT_GET_MSIN_MTIN(daemon_local->msg.extendedheader->msin); + if (mtin > daemon_local->flags.contextLogLevel) { + return false; + } + } + + return true; +} + int dlt_daemon_process_user_message_set_app_ll_ts(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *rec, diff --git a/src/daemon/dlt-daemon.h b/src/daemon/dlt-daemon.h index 7a4b29c..071562f 100644 --- a/src/daemon/dlt-daemon.h +++ b/src/daemon/dlt-daemon.h @@ -249,6 +249,9 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *rec, int verbose); + +bool enforce_context_ll_and_ts_keep_message(DltDaemonLocal *daemon_local); + int dlt_daemon_process_user_message_set_app_ll_ts(DltDaemon *daemon, DltDaemonLocal *daemon_local, DltReceiver *rec, @@ -270,4 +273,3 @@ int create_timer_fd(DltDaemonLocal *daemon_local, int period_sec, int starts_in, int dlt_daemon_close_socket(int sock, DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose); #endif /* DLT_DAEMON_H */ - -- cgit v1.2.1