diff options
Diffstat (limited to 'common/include/tfe_dp_trace.h')
| -rw-r--r-- | common/include/tfe_dp_trace.h | 64 |
1 files changed, 54 insertions, 10 deletions
diff --git a/common/include/tfe_dp_trace.h b/common/include/tfe_dp_trace.h index aa24512..a5c8931 100644 --- a/common/include/tfe_dp_trace.h +++ b/common/include/tfe_dp_trace.h @@ -8,18 +8,62 @@ extern "C" #include <marsio.h> -#define DP_TRACE_INFO(mr_ins, mr_buff, module, fmt, ...) \ - do \ - { \ - if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff)) \ - { \ - marsio_dp_trace_measurement_emit_fmt(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE, module, fmt, ##__VA_ARGS__); \ - marsio_dp_trace_measurement_emit_fmt(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, module, fmt, ##__VA_ARGS__); \ - } \ - } while (0) +static inline void record_msg_on_ctrl_pkt(char *buff, int size, uint64_t rule_id, uint64_t session_id, const char *state, const char *action, const char *reason) +{ + int n = snprintf(buff, size, "intercept rule id=%lu, session=%lu, state=%s", rule_id, session_id, state); + if (action) + { + n += snprintf(buff + n, size - n, ", action=%s", action); + } + if (reason) + { + n += snprintf(buff + n, size - n, ", reason=%s", reason); + } +} + +static inline void record_msg_on_raw_pkt(char *buff, int size, uint64_t rule_id, const char *traffic, const char *action, const char *reason) +{ + int n = snprintf(buff, size, "intercept rule id=%lu, traffic=%s, action=%s", rule_id, traffic, action); + if (reason) + { + snprintf(buff + n, size - n, ", reason=%s", reason); + } +} + +static inline void tfe_dp_telemetry_on_ctrl_pkt(mr_instance *mr_ins, marsio_buff_t *mr_buff, uint64_t rule_id, uint64_t session_id, const char *state, const char *action, const char *reason) +{ + if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE)) + { + char buff[512] = {0}; + record_msg_on_ctrl_pkt(buff, sizeof(buff), rule_id, session_id, state, action, reason); + marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE, "Session Synchronization", buff); + } + if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY)) + { + char buff[512] = {0}; + record_msg_on_ctrl_pkt(buff, sizeof(buff), rule_id, session_id, state, action, reason); + marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, "Session Synchronization", buff); + } +} + +static inline void tfe_dp_on_raw_pkt(mr_instance *mr_ins, marsio_buff_t *mr_buff, uint64_t rule_id, const char *traffic, const char *action, const char *reason) +{ + if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE)) + { + char buff[512] = {0}; + record_msg_on_raw_pkt(buff, sizeof(buff), rule_id, traffic, action, reason); + marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE, "Packet I/O", buff); + } + if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY)) + { + char buff[512] = {0}; + record_msg_on_raw_pkt(buff, sizeof(buff), rule_id, traffic, action, reason); + marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, "Packet I/O", buff); + } +} #ifdef __cpluscplus } #endif -#endif
\ No newline at end of file +#endif |
