TSG-22348 feature: adapt maat support UUID

This commit is contained in:
luwenpeng
2024-09-23 16:50:09 +08:00
parent 7ef8e44bca
commit 5799de5299
60 changed files with 2504 additions and 1043 deletions

View File

@@ -51,14 +51,17 @@ extern "C"
* bypass(invalid policy)
*/
static inline int rule_id_tostring(struct mutable_array *rule_ids, char *buffer, int size)
static inline int rule_id_tostring(struct uuid_array *array, char *buffer, int size)
{
char uuid_str[UUID_STRING_SIZE] = {0};
int used = 0;
int num = uuid_array_get_count(array);
used += snprintf(buffer + used, size - used, "[");
for (int i = 0; i < rule_ids->num; i++)
for (int i = 0; i < num; i++)
{
used += snprintf(buffer + used, size - used, "%lu", rule_ids->elems[i]);
if (i < rule_ids->num - 1)
uuid_unparse(*uuid_array_get_at(array, i), uuid_str);
used += snprintf(buffer + used, size - used, "%s", uuid_str);
if (i < num - 1)
{
used += snprintf(buffer + used, size - used, ", ");
}
@@ -69,11 +72,13 @@ static inline int rule_id_tostring(struct mutable_array *rule_ids, char *buffer,
static inline int sf_id_tostring(struct selected_chaining *chain, char *buffer, int size)
{
char uuid_str[UUID_STRING_SIZE] = {0};
int used = 0;
used += snprintf(buffer + used, size - used, "[");
for (int i = 0; i < chain->chaining_used; i++)
{
used += snprintf(buffer + used, size - used, "%d", chain->chaining[i].sf_profile_id);
uuid_unparse(chain->chaining[i].sf_uuid, uuid_str);
used += snprintf(buffer + used, size - used, "%s", uuid_str);
if (i < chain->chaining_used - 1)
{
used += snprintf(buffer + used, size - used, ", ");
@@ -111,52 +116,55 @@ static inline int sf_id_tostring(struct selected_chaining *chain, char *buffer,
} \
} while (0)
#define PACKET_TRACE_ON_POLICY(mr_ins, mr_buff, rule_ids, chain) \
#define PACKET_TRACE_ON_POLICY(mr_ins, mr_buff, rule_uuid_array, chain) \
do \
{ \
if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE)) \
{ \
char rule_id_str[1024] = {0}; \
char sf_id_str[1024] = {0}; \
char rule_ids_str[1024] = {0}; \
char sf_ids_str[1024] = {0}; \
char buff[4096] = {0}; \
rule_id_tostring(rule_ids, rule_id_str, sizeof(rule_id_str)); \
sf_id_tostring(chain, sf_id_str, sizeof(sf_id_str)); \
snprintf(buff, sizeof(buff), "sc rule list=%s, SFP list=%s", rule_id_str, sf_id_str); \
rule_id_tostring(rule_uuid_array, rule_ids_str, sizeof(rule_ids_str)); \
sf_id_tostring(chain, sf_ids_str, sizeof(sf_ids_str)); \
snprintf(buff, sizeof(buff), "sc rule list=%s, SFP list=%s", rule_ids_str, sf_ids_str); \
marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE, "Policy", buff); \
} \
} while (0)
#define PACKET_TELEMETRY_ON_POLICY(mr_ins, mr_buff, rule_ids, chain) \
#define PACKET_TELEMETRY_ON_POLICY(mr_ins, mr_buff, rule_uuid_array, chain) \
do \
{ \
if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY)) \
{ \
char rule_id_str[1024] = {0}; \
char sf_id_str[1024] = {0}; \
char rule_ids_str[1024] = {0}; \
char sf_ids_str[1024] = {0}; \
char buff[4096] = {0}; \
rule_id_tostring(rule_ids, rule_id_str, sizeof(rule_id_str)); \
sf_id_tostring(chain, sf_id_str, sizeof(sf_id_str)); \
snprintf(buff, sizeof(buff), "sc rule list=%s, SFP list=%s", rule_id_str, sf_id_str); \
rule_id_tostring(rule_uuid_array, rule_ids_str, sizeof(rule_ids_str)); \
sf_id_tostring(chain, sf_ids_str, sizeof(sf_ids_str)); \
snprintf(buff, sizeof(buff), "sc rule list=%s, SFP list=%s", rule_ids_str, sf_ids_str); \
marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, "Policy", buff); \
} \
} while (0)
#define PACKET_TRACE_ON_CHAIN(mr_ins, mr_buff, sf, meta) \
do \
{ \
if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE)) \
{ \
char buff[2048] = {0}; \
snprintf(buff, sizeof(buff), "sc rule id=%lu, sf id=%d, fwd type=%s, pkt dir=%s, pkt type=%s, state=%s %s", \
(sf)->rule_id, \
(sf)->sf_profile_id, \
forward_type_tostring((sf)->sff_forward_type), \
((meta)->direction ? "E2I" : "I2E"), \
((meta)->is_decrypted ? "decrypted" : "raw"), \
((sf)->sf_action == SESSION_ACTION_FORWARD ? "success" : "failure"), \
((sf)->sf_action == SESSION_ACTION_FORWARD ? "" : action_desc_tostring((sf)->sf_action_desc))); \
marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE, "Forwarder", buff); \
} \
#define PACKET_TRACE_ON_CHAIN(mr_ins, mr_buff, sf, meta) \
do \
{ \
if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE)) \
{ \
char buff[2048] = {0}; \
char rule_uuid_str[UUID_STRING_SIZE] = {0}; \
char sf_uuid_str[UUID_STRING_SIZE] = {0}; \
uuid_unparse((sf)->rule_uuid, rule_uuid_str); \
uuid_unparse((sf)->sf_uuid, sf_uuid_str); \
snprintf(buff, sizeof(buff), "sc rule id=%s, sf id=%s, fwd type=%s, pkt dir=%s, pkt type=%s, state=%s %s", \
rule_uuid_str, sf_uuid_str, \
forward_type_tostring((sf)->sff_forward_type), \
((meta)->direction ? "E2I" : "I2E"), \
((meta)->is_decrypted ? "decrypted" : "raw"), \
((sf)->sf_action == SESSION_ACTION_FORWARD ? "success" : "failure"), \
((sf)->sf_action == SESSION_ACTION_FORWARD ? "" : action_desc_tostring((sf)->sf_action_desc))); \
marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TRACE, "Forwarder", buff); \
} \
} while (0)
#define PACKET_TELEMETRY_ON_CHAIN(mr_ins, mr_buff, sf, meta) \
@@ -165,9 +173,12 @@ static inline int sf_id_tostring(struct selected_chaining *chain, char *buffer,
if (marsio_dp_trace_measurements_can_emit(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY)) \
{ \
char buff[2048] = {0}; \
snprintf(buff, sizeof(buff), "sc rule id=%lu, sf id=%d, type=%s, action=%s", \
(sf)->rule_id, \
(sf)->sf_profile_id, \
char rule_uuid_str[UUID_STRING_SIZE] = {0}; \
char sf_uuid_str[UUID_STRING_SIZE] = {0}; \
uuid_unparse((sf)->rule_uuid, rule_uuid_str); \
uuid_unparse((sf)->sf_uuid, sf_uuid_str); \
snprintf(buff, sizeof(buff), "sc rule id=%s, sf id=%s, type=%s, action=%s", \
rule_uuid_str, sf_uuid_str, \
forward_type_tostring((sf)->sff_forward_type), \
action_desc_tostring((sf)->sf_action_desc)); \
marsio_dp_trace_measurement_emit_str(mr_ins, mr_buff, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, "Forwarder", buff); \