TSG-22348 feature: adapt maat support UUID
This commit is contained in:
@@ -13,11 +13,11 @@ void health_check_session_init(const char *profile, struct kafka *kfk);
|
||||
// return 0 : success
|
||||
// return -1 : key exist
|
||||
// struct health_check *policy : need deep copy
|
||||
uint64_t health_check_session_add(int profile_id, int vsys_id, const struct health_check *policy);
|
||||
uint64_t health_check_session_add(uuid_t *sf_uuid, int vsys_id, const struct health_check *policy);
|
||||
|
||||
// return 0 : success
|
||||
// return -1 : key not exist
|
||||
int health_check_session_del(uint64_t session_id, int profile_id, int vsys_id);
|
||||
int health_check_session_del(uint64_t session_id, uuid_t *sf_uuid, int vsys_id);
|
||||
|
||||
// return 1 : active
|
||||
// return 0 : inactive
|
||||
|
||||
@@ -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); \
|
||||
|
||||
@@ -82,15 +82,15 @@ struct connectivity
|
||||
|
||||
struct selected_sf
|
||||
{
|
||||
uint64_t rule_id;
|
||||
uuid_t rule_uuid;
|
||||
int rule_vsys_id;
|
||||
enum traffic_type traffic_type;
|
||||
|
||||
int sff_profile_id;
|
||||
uuid_t sff_uuid;
|
||||
enum forward_type sff_forward_type;
|
||||
|
||||
int sf_vsys_id;
|
||||
int sf_profile_id;
|
||||
uuid_t sf_uuid;
|
||||
enum session_action sf_action;
|
||||
enum action_desc sf_action_desc;
|
||||
struct connectivity sf_connectivity;
|
||||
@@ -135,7 +135,7 @@ int policy_enforcer_register(struct policy_enforcer *enforcer);
|
||||
int policy_enforce_chaining_size(struct policy_enforcer *enforcer);
|
||||
// direction 1: E2I
|
||||
// direction 0: I2E
|
||||
void policy_enforce_select_chainings(struct policy_enforcer *enforcer, struct session_ctx *s_ctx, struct packet *data_pkt, uint64_t rule_id, int direction);
|
||||
void policy_enforce_select_chainings(struct policy_enforcer *enforcer, struct session_ctx *s_ctx, struct packet *data_pkt, uuid_t *rule_uuid, int direction);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ struct session_ctx
|
||||
uint16_t vxlan_src_port;
|
||||
|
||||
struct four_tuple inner_tuple4;
|
||||
struct mutable_array rule_ids;
|
||||
struct uuid_array rule_uuid_array;
|
||||
|
||||
// route ctx
|
||||
struct route_ctx decrypted_e2i_route_ctx;
|
||||
|
||||
@@ -6,14 +6,14 @@ extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include "utils.h"
|
||||
#include "kafka.h"
|
||||
|
||||
struct sf_metrics_key
|
||||
{
|
||||
uint64_t rule_id;
|
||||
uint32_t sf_profile_id;
|
||||
uint32_t sff_profile_id;
|
||||
uuid_t rule_uuid;
|
||||
uuid_t sf_uuid;
|
||||
uuid_t sff_uuid;
|
||||
uint32_t vsys_id;
|
||||
};
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@ extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include "utils.h"
|
||||
#include "kafka.h"
|
||||
#include <stdint.h>
|
||||
|
||||
struct sf_status_key
|
||||
{
|
||||
uint32_t vsys_id;
|
||||
uint32_t sf_profile_id;
|
||||
uuid_t sf_uuid;
|
||||
};
|
||||
|
||||
struct sf_status *sf_status_create(const char *profile, struct kafka *kfk);
|
||||
|
||||
Reference in New Issue
Block a user