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

@@ -45,6 +45,7 @@ yum install -y libibverbs # required by mrzcpd
yum install -y libbreakpad_mini-devel
yum install -y librdkafka-1.2.2.1218b3c
yum install -y librdkafka-devel-1.2.2.1218b3c
yum install -y libuuid-devel
if [ $ASAN_OPTION ] && [ -f "/opt/rh/devtoolset-7/enable" ]; then
source /opt/rh/devtoolset-7/enable

View File

@@ -1,6 +1,6 @@
add_library(common src/session_table.cpp src/packet.cpp src/control_packet.cpp src/bfd.cpp src/utils.cpp src/vxlan.cpp src/log.cpp src/timestamp.cpp src/mpack.cpp src/kafka.cpp)
target_link_libraries(common PUBLIC cjson)
target_link_libraries(common PUBLIC MESA_handle_logger rdkafka)
target_link_libraries(common PUBLIC MESA_handle_logger rdkafka uuid)
target_include_directories(common PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include)

View File

@@ -6,7 +6,7 @@ extern "C"
{
#endif
#include <stdint.h>
#include "utils.h"
enum session_state
{
@@ -36,8 +36,7 @@ struct control_packet
uint64_t session_id;
enum session_state state;
char method[32];
uint64_t rule_ids[32];
int rule_id_num;
struct uuid_array rule_uuid_array;
};
const char *session_state_to_string(enum session_state state);

View File

@@ -33,25 +33,29 @@ extern "C"
#include <stdint.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <uuid/uuid.h>
/******************************************************************************
* mutable_array
* uuid_array
******************************************************************************/
struct mutable_array
#define UUID_STRING_SIZE 37
#define MAX_RULE_NUM 128
struct uuid_array
{
uint64_t elems[128];
uuid_t uuids[MAX_RULE_NUM];
int num;
int size;
};
void mutable_array_init(struct mutable_array *array);
void mutable_array_add_elem(struct mutable_array *array, uint64_t elem);
void mutable_array_del_elem(struct mutable_array *array, uint64_t elem);
int mutable_array_is_full(struct mutable_array *array);
int mutable_array_count_elem(struct mutable_array *array);
int mutable_array_exist_elem(struct mutable_array *array, uint64_t elem);
int mutable_array_index_elem(struct mutable_array *array, int index);
void uuid_array_init(struct uuid_array *array);
void uuid_array_append(struct uuid_array *array, uuid_t uuid);
void uuid_array_remove(struct uuid_array *array, uuid_t uuid);
int uuid_array_contains(struct uuid_array *array, uuid_t uuid);
int uuid_array_is_full(struct uuid_array *array);
int uuid_array_get_count(struct uuid_array *array);
uuid_t *uuid_array_get_at(struct uuid_array *array, int index);
/******************************************************************************
* device

View File

@@ -57,7 +57,9 @@ const char *session_state_to_string(enum session_state state)
enum control_packet_state control_packet_parse(struct control_packet *handler, const char *data, size_t length)
{
memset(handler, 0, sizeof(struct control_packet));
uuid_array_init(&handler->rule_uuid_array);
int rule_id_num;
mpack_tree_t tree;
mpack_node_t root;
mpack_node_t temp;
@@ -186,17 +188,18 @@ enum control_packet_state control_packet_parse(struct control_packet *handler, c
state = CTRL_PKT_INVALID_RULE_IDS;
goto error_out;
}
handler->rule_id_num = MIN(mpack_node_array_length(temp), (int)(sizeof(handler->rule_ids) / sizeof(handler->rule_ids[0])));
if (handler->rule_id_num <= 0)
rule_id_num = MIN(mpack_node_array_length(temp), MAX_RULE_NUM);
if (rule_id_num <= 0)
{
LOG_ERROR("%s: unexpected control packet: (invalid rule id num) %ld", LOG_TAG_CTRLPKT, mpack_node_array_length(temp));
state = CTRL_PKT_INVALID_RULE_IDS;
goto error_out;
}
for (int i = 0; i < handler->rule_id_num; i++)
for (int i = 0; i < rule_id_num; i++)
{
item = mpack_node_array_at(temp, i);
handler->rule_ids[i] = mpack_node_u64(item);
assert(mpack_node_bin_size(item) == 16);
uuid_array_append(&handler->rule_uuid_array, *(uuid_t *)mpack_node_bin_data(item));
}
success_out:
@@ -219,15 +222,18 @@ void control_packet_dump(struct control_packet *handler)
{
if (handler)
{
int count = uuid_array_get_count(&handler->rule_uuid_array);
LOG_INFO("%s: tsync : %s", LOG_TAG_POLICY, handler->tsync);
LOG_INFO("%s: session_id : %lu", LOG_TAG_POLICY, handler->session_id);
LOG_INFO("%s: state : %s", LOG_TAG_POLICY, session_state_to_string(handler->state));
LOG_INFO("%s: method : %s", LOG_TAG_POLICY, handler->method);
LOG_INFO("%s: rule_id_num : %d", LOG_TAG_POLICY, handler->rule_id_num);
LOG_INFO("%s: rule_id_num : %d", LOG_TAG_POLICY, count);
for (int i = 0; i < handler->rule_id_num; i++)
for (int i = 0; i < count; i++)
{
LOG_INFO("%s: rule_ids[%03d] : %lu", LOG_TAG_POLICY, i, handler->rule_ids[i]);
char rule_uuid_str[UUID_STRING_SIZE] = {0};
uuid_unparse(*uuid_array_get_at(&handler->rule_uuid_array, i), rule_uuid_str);
LOG_INFO("%s: rule_ids[%03d] : %s", LOG_TAG_POLICY, i, rule_uuid_str);
}
}
}

View File

@@ -11,6 +11,7 @@
struct config
{
int enable_debug;
char brokerlist[MAX_SYMBOL_LEN];
char sasl_username[MAX_SYMBOL_LEN];
char sasl_passwd[MAX_SYMBOL_LEN];
@@ -84,6 +85,14 @@ static struct per_producer_per_topic *per_producer_per_topic_new(const char *bro
LOG_ERROR("%s: failed to set kafka client.id, %s", LOG_TAG_KAFKA, err_str);
goto error_out;
}
// bootstrap.servers
if (rd_kafka_conf_set(conf, "bootstrap.servers", brokerlist, err_str, sizeof(err_str)) != RD_KAFKA_CONF_OK)
{
LOG_ERROR("%s: failed to set kafka bootstrap.servers, %s", LOG_TAG_KAFKA, err_str);
goto error_out;
}
if (strlen(sasl_username) > 0 && strlen(sasl_passwd) > 0)
{
if (rd_kafka_conf_set(conf, "security.protocol", "sasl_plaintext", err_str, sizeof(err_str)) != RD_KAFKA_CONF_OK)
@@ -125,12 +134,6 @@ static struct per_producer_per_topic *per_producer_per_topic_new(const char *bro
goto error_out;
}
if (rd_kafka_brokers_add(pppt->producer, brokerlist) == 0)
{
LOG_ERROR("%s: failed to add kafka brokers", LOG_TAG_KAFKA);
goto error_out;
}
pppt->topic = rd_kafka_topic_new(pppt->producer, topic_name, NULL);
if (pppt->topic == NULL)
{
@@ -163,6 +166,7 @@ struct kafka *kafka_create(const char *profile)
return NULL;
}
MESA_load_profile_int_def(profile, "kafka", "enable_debug", &handle->cfg.enable_debug, 0);
MESA_load_profile_string_def(profile, "kafka", "brokerlist", handle->cfg.brokerlist, sizeof(handle->cfg.brokerlist), "");
MESA_load_profile_string_def(profile, "kafka", "sasl_username", handle->cfg.sasl_username, sizeof(handle->cfg.sasl_username), "");
MESA_load_profile_string_def(profile, "kafka", "sasl_passwd", handle->cfg.sasl_passwd, sizeof(handle->cfg.sasl_passwd), "");
@@ -237,7 +241,10 @@ int kafka_send(struct kafka *handle, enum topic_idx idx, const char *data, int l
}
else
{
LOG_DEBUG("%s: success to produce message with topic [%d], %s", LOG_TAG_KAFKA, idx, data);
if (handle->cfg.enable_debug)
{
LOG_DEBUG("%s: success to produce message with topic [%d], %s", LOG_TAG_KAFKA, idx, data);
}
return 0;
}
}

View File

@@ -12,38 +12,38 @@
#include "log.h"
/******************************************************************************
* mutable_array
* uuid_array
******************************************************************************/
void mutable_array_init(struct mutable_array *array)
void uuid_array_init(struct uuid_array *array)
{
memset(array, 0, sizeof(mutable_array));
memset(array, 0, sizeof(uuid_array));
array->num = 0;
array->size = sizeof(array->elems) / sizeof(array->elems[0]);
array->size = sizeof(array->uuids) / sizeof(array->uuids[0]);
}
void mutable_array_add_elem(struct mutable_array *array, uint64_t elem)
void uuid_array_append(struct uuid_array *array, uuid_t uuid)
{
if (array->num < array->size)
{
array->elems[array->num] = elem;
uuid_copy(array->uuids[array->num], uuid);
array->num++;
}
else
{
LOG_ERROR("%s: fixed num array add elem too much !!!", LOG_TAG_UTILS);
LOG_ERROR("%s: uuid array add elem too much !!!", LOG_TAG_UTILS);
}
}
void mutable_array_del_elem(struct mutable_array *array, uint64_t elem)
void uuid_array_remove(struct uuid_array *array, uuid_t uuid)
{
for (int i = 0; i < array->num; i++)
{
if (array->elems[i] == elem)
if (uuid_compare(array->uuids[i], uuid) == 0)
{
if (i + 1 != array->size)
{
memmove(&(array->elems[i]), &(array->elems[i + 1]), sizeof(array->elems[0]) * (array->num - i - 1));
memmove(&(array->uuids[i]), &(array->uuids[i + 1]), sizeof(array->uuids[0]) * (array->num - i - 1));
}
i--;
array->num--;
@@ -51,7 +51,20 @@ void mutable_array_del_elem(struct mutable_array *array, uint64_t elem)
}
}
int mutable_array_is_full(struct mutable_array *array)
int uuid_array_contains(struct uuid_array *array, uuid_t uuid)
{
for (int i = 0; i < array->num; i++)
{
if (uuid_compare(array->uuids[i], uuid) == 0)
{
return 1;
}
}
return 0;
}
int uuid_array_is_full(struct uuid_array *array)
{
if (array->num == array->size)
{
@@ -63,7 +76,7 @@ int mutable_array_is_full(struct mutable_array *array)
}
}
int mutable_array_count_elem(struct mutable_array *array)
int uuid_array_get_count(struct uuid_array *array)
{
if (array)
{
@@ -75,27 +88,17 @@ int mutable_array_count_elem(struct mutable_array *array)
}
}
int mutable_array_exist_elem(struct mutable_array *array, uint64_t elem)
{
for (int i = 0; i < array->num; i++)
{
if (array->elems[i] == elem)
{
return 1;
}
}
return 0;
}
int mutable_array_index_elem(struct mutable_array *array, int index)
uuid_t *uuid_array_get_at(struct uuid_array *array, int index)
{
if (index >= array->num)
{
assert(0);
return NULL;
}
else
{
return &(array->uuids[index]);
}
return array->elems[index];
}
/******************************************************************************

View File

@@ -9,18 +9,23 @@ static u_char control_packet_active0[] = {
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x83, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x92, 0xCD, 0x04, 0x57, 0xCD, 0x08, 0xAE, 0xA6, 0x73,
0x68, 0x61, 0x70, 0x65, 0x72, 0x81, 0xA8, 0x72, 0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x92,
0xCD, 0x0D, 0x05, 0xCD, 0x11, 0x5C, 0xA5, 0x70, 0x72, 0x6F, 0x78, 0x79, 0x82, 0xA8, 0x72, 0x75,
0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x92, 0xCD, 0x15, 0xB3, 0xCD, 0x1A, 0x0A, 0xAD, 0x74, 0x63,
0x70, 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x73, 0x68, 0x61, 0x6B, 0x65, 0xDC, 0x00, 0x24, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xA3, 0x31,
0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31,
0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31,
0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31,
0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0x92, 0xCD, 0x15, 0xB3, 0xCD, 0x1A,
0x0A, 0x92, 0xCD, 0x15, 0xB3, 0xCD, 0x1A, 0x0A, 0x92, 0xCD, 0x15, 0xB3, 0xCD, 0x1A, 0x0A, 0x92,
0x01, 0x01, 0x92, 0x01, 0x01};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x92, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA6, 0x73, 0x68, 0x61,
0x70, 0x65, 0x72, 0x81, 0xA8, 0x72, 0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x92, 0xC4, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0xA5, 0x70, 0x72, 0x6F, 0x78, 0x79, 0x82, 0xA8, 0x72, 0x75, 0x6C, 0x65, 0x5F, 0x69,
0x64, 0x73, 0x92, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x05, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xAD, 0x74, 0x63, 0x70, 0x5F, 0x68, 0x61, 0x6E, 0x64,
0x73, 0x68, 0x61, 0x6B, 0x65, 0xDC, 0x00, 0x24, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33,
0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33,
0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33,
0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33, 0xA3, 0x31, 0x32, 0x33,
0xA3, 0x31, 0x32, 0x33, 0x92, 0xCD, 0x15, 0xB3, 0xCD, 0x1A, 0x0A, 0x92, 0xCD, 0x15, 0xB3, 0xCD,
0x1A, 0x0A, 0x92, 0xCD, 0x15, 0xB3, 0xCD, 0x1A, 0x0A, 0x92, 0x01, 0x01, 0x92, 0x01, 0x01};
static u_char control_packet_active1[] = {
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
@@ -28,13 +33,45 @@ static u_char control_packet_active1[] = {
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
static u_char control_packet_opening[] = {
0x83, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA7, 0x6F, 0x70, 0x65, 0x6E, 0x69, 0x6E, 0x67};
static u_char control_packet_send[] = {
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0x01, 0xA5, 0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63,
0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0xAA, 0x6C, 0x6F, 0x67, 0x5F,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73,
0x63, 0x65, 0x83, 0xAC, 0x73, 0x63, 0x5F, 0x72, 0x75, 0x6C, 0x65, 0x5F, 0x6C, 0x69, 0x73, 0x74,
0x92, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0xAA, 0x73, 0x63, 0x5F, 0x72, 0x73, 0x70, 0x5F, 0x72, 0x61, 0x77,
0x92, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0xB0, 0x73, 0x63, 0x5F, 0x72, 0x73, 0x70, 0x5F, 0x64, 0x65, 0x63,
0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x92, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04};
static uuid_t uuid1;
static uuid_t uuid2;
static uuid_t uuid3;
static uuid_t uuid4;
static uuid_t uuid5;
static uuid_t uuid6;
static const char *uuid1_str = "00000000-0000-0000-0000-000000000001";
static const char *uuid2_str = "00000000-0000-0000-0000-000000000002";
static const char *uuid3_str = "00000000-0000-0000-0000-000000000003";
static const char *uuid4_str = "00000000-0000-0000-0000-000000000004";
static const char *uuid5_str = "00000000-0000-0000-0000-000000000005";
static const char *uuid6_str = "00000000-0000-0000-0000-000000000006";
#if 1
TEST(CONTROL_PACKET, PACKAGE0)
{
char *data;
@@ -73,10 +110,9 @@ TEST(CONTROL_PACKET, PACKAGE0)
mpack_write_cstr(&writer, "rule_ids");
mpack_build_array(&writer);
mpack_write_u64(&writer, 1111);
mpack_write_u64(&writer, 2222);
mpack_write_bin(&writer, (const char *)&uuid1, sizeof(uuid1));
mpack_write_bin(&writer, (const char *)&uuid2, sizeof(uuid2));
mpack_complete_array(&writer);
mpack_complete_map(&writer);
}
@@ -87,8 +123,8 @@ TEST(CONTROL_PACKET, PACKAGE0)
mpack_write_cstr(&writer, "rule_ids");
mpack_build_array(&writer);
mpack_write_u64(&writer, 3333);
mpack_write_u64(&writer, 4444);
mpack_write_bin(&writer, (const char *)&uuid3, sizeof(uuid3));
mpack_write_bin(&writer, (const char *)&uuid4, sizeof(uuid4));
mpack_complete_array(&writer);
mpack_complete_map(&writer);
@@ -101,8 +137,8 @@ TEST(CONTROL_PACKET, PACKAGE0)
mpack_write_cstr(&writer, "rule_ids");
mpack_build_array(&writer);
mpack_write_u64(&writer, 5555);
mpack_write_u64(&writer, 6666);
mpack_write_bin(&writer, (const char *)&uuid5, sizeof(uuid5));
mpack_write_bin(&writer, (const char *)&uuid6, sizeof(uuid6));
mpack_complete_array(&writer);
mpack_write_cstr(&writer, "tcp_handshake");
@@ -183,7 +219,9 @@ TEST(CONTROL_PACKET, PACKAGE0)
free(data);
}
#endif
#if 1
TEST(CONTROL_PACKET, PACKAGE1)
{
char *data;
@@ -222,7 +260,7 @@ TEST(CONTROL_PACKET, PACKAGE1)
mpack_write_cstr(&writer, "rule_ids");
mpack_build_array(&writer);
mpack_write_u64(&writer, 995199);
mpack_write_bin(&writer, (const char *)&uuid1, sizeof(uuid1));
mpack_complete_array(&writer);
mpack_complete_map(&writer);
@@ -247,7 +285,9 @@ TEST(CONTROL_PACKET, PACKAGE1)
free(data);
}
#endif
#if 1
TEST(CONTROL_PACKET, PACKAGE2)
{
char *data;
@@ -286,9 +326,12 @@ TEST(CONTROL_PACKET, PACKAGE2)
free(data);
}
#endif
#if 1
TEST(CONTROL_PACKET, PARSE0)
{
char rule_uuid_str[UUID_STRING_SIZE];
struct control_packet handler;
EXPECT_TRUE(control_packet_parse(&handler, (const char *)control_packet_active0, sizeof(control_packet_active0)) == CTRL_PKT_SUCCESS);
control_packet_dump(&handler);
@@ -297,13 +340,20 @@ TEST(CONTROL_PACKET, PARSE0)
EXPECT_TRUE(handler.session_id == 18446744073709551615);
EXPECT_TRUE(handler.state == SESSION_STATE_ACTIVE);
EXPECT_STREQ(handler.method, "policy_update");
EXPECT_TRUE(handler.rule_id_num == 2);
EXPECT_TRUE(handler.rule_ids[0] == 1111);
EXPECT_TRUE(handler.rule_ids[1] == 2222);
}
EXPECT_TRUE(uuid_array_get_count(&handler.rule_uuid_array) == 2);
uuid_unparse(*uuid_array_get_at(&handler.rule_uuid_array, 0), rule_uuid_str);
EXPECT_STREQ(rule_uuid_str, uuid1_str);
uuid_unparse(*uuid_array_get_at(&handler.rule_uuid_array, 1), rule_uuid_str);
EXPECT_STREQ(rule_uuid_str, uuid2_str);
}
#endif
#if 1
TEST(CONTROL_PACKET, PARSE1)
{
char rule_uuid_str[UUID_STRING_SIZE];
struct control_packet handler;
EXPECT_TRUE(control_packet_parse(&handler, (const char *)control_packet_active1, sizeof(control_packet_active1)) == CTRL_PKT_SUCCESS);
control_packet_dump(&handler);
@@ -312,10 +362,14 @@ TEST(CONTROL_PACKET, PARSE1)
EXPECT_TRUE(handler.session_id == 290484492702581737);
EXPECT_TRUE(handler.state == SESSION_STATE_ACTIVE);
EXPECT_STREQ(handler.method, "policy_update");
EXPECT_TRUE(handler.rule_id_num == 1);
EXPECT_TRUE(handler.rule_ids[0] == 995199);
}
EXPECT_TRUE(uuid_array_get_count(&handler.rule_uuid_array) == 1);
uuid_unparse(*uuid_array_get_at(&handler.rule_uuid_array, 0), rule_uuid_str);
EXPECT_STREQ(rule_uuid_str, uuid1_str);
}
#endif
#if 1
TEST(CONTROL_PACKET, PARSE2)
{
struct control_packet handler;
@@ -326,11 +380,130 @@ TEST(CONTROL_PACKET, PARSE2)
EXPECT_TRUE(handler.session_id == 290484492702581737);
EXPECT_TRUE(handler.state == SESSION_STATE_OPENING);
EXPECT_STREQ(handler.method, "");
EXPECT_TRUE(handler.rule_id_num == 0);
EXPECT_TRUE(uuid_array_get_count(&handler.rule_uuid_array) == 0);
}
#endif
#if 1
TEST(CONTROL_PACKET, SEND)
{
uint64_t session_id = 1;
struct uuid_array rule_uuid_array;
uuid_array_init(&rule_uuid_array);
uuid_array_append(&rule_uuid_array, uuid1);
uuid_array_append(&rule_uuid_array, uuid2);
int rule_num = uuid_array_get_count(&rule_uuid_array);
struct uuid_array sf_uuid_array;
uuid_array_init(&sf_uuid_array);
uuid_array_append(&sf_uuid_array, uuid3);
uuid_array_append(&sf_uuid_array, uuid4);
int sf_num = uuid_array_get_count(&sf_uuid_array);
char *data;
size_t size;
mpack_writer_t writer;
mpack_writer_init_growable(&writer, &data, &size);
// write the example on the msgpack homepage
mpack_build_map(&writer); // root begin
// tsync
mpack_write_cstr(&writer, "tsync");
mpack_write_cstr(&writer, "2.0");
// session_id
mpack_write_cstr(&writer, "session_id");
mpack_write_u64(&writer, session_id);
// state
mpack_write_cstr(&writer, "state");
mpack_write_cstr(&writer, "active");
// method
mpack_write_cstr(&writer, "method");
mpack_write_cstr(&writer, "log_update");
// params
{
mpack_write_cstr(&writer, "params");
mpack_build_map(&writer); // params value begin
// sce
{
mpack_write_cstr(&writer, "sce");
mpack_build_map(&writer); // sce value begin
{
mpack_write_cstr(&writer, "sc_rule_list");
mpack_build_array(&writer); // sc_rule_list begin
for (int i = 0; i < rule_num; i++)
{
mpack_write_bin(&writer, (const char *)uuid_array_get_at(&rule_uuid_array, i), sizeof(uuid_t));
}
mpack_complete_array(&writer); // sc_rule_list end
}
{
mpack_write_cstr(&writer, "sc_rsp_raw");
mpack_build_array(&writer); // sc_rsp_raw begin
for (int i = 0; i < sf_num; i++)
{
mpack_write_bin(&writer, (const char *)uuid_array_get_at(&sf_uuid_array, i), sizeof(uuid_t));
}
mpack_complete_array(&writer); // sc_rsp_raw end
}
{
mpack_write_cstr(&writer, "sc_rsp_decrypted");
mpack_build_array(&writer); // sc_rsp_decrypted begin
for (int i = 0; i < sf_num; i++)
{
mpack_write_bin(&writer, (const char *)uuid_array_get_at(&sf_uuid_array, i), sizeof(uuid_t));
}
mpack_complete_array(&writer); // sc_rsp_decrypted end
}
mpack_complete_map(&writer); // sce value end
}
mpack_complete_map(&writer); // params value end
}
mpack_complete_map(&writer); // root end
// finish writing
if (mpack_writer_destroy(&writer) != mpack_ok)
{
assert(0);
if (data)
{
free(data);
data = NULL;
}
}
for (size_t i = 0; i < size; i++)
{
printf("%02X, ", data[i]);
}
printf("\n");
EXPECT_STREQ(data, (const char *)control_packet_send);
free(data);
}
#endif
int main(int argc, char **argv)
{
uuid_parse(uuid1_str, uuid1);
uuid_parse(uuid2_str, uuid2);
uuid_parse(uuid3_str, uuid3);
uuid_parse(uuid4_str, uuid4);
uuid_parse(uuid5_str, uuid5);
uuid_parse(uuid6_str, uuid6);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -5,6 +5,13 @@
#include "policy.h"
#include "health_check.h"
uuid_t sf_uuid1;
uuid_t sf_uuid2;
uuid_t sf_uuid3;
uuid_t sf_uuid4;
uuid_t sf_uuid5;
uuid_t sf_uuid6;
TEST(HEALTH_CHECK_TABLE, INSERT)
{
uint64_t session_id1 = 0;
@@ -22,7 +29,7 @@ TEST(HEALTH_CHECK_TABLE, INSERT)
snprintf(policy1.address, sizeof(policy1.address), "1.1.1.1");
policy1.retires = 11;
policy1.interval_ms = 111;
EXPECT_TRUE((session_id1 = health_check_session_add(1, 0, &policy1)) > 0);
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
@@ -30,8 +37,8 @@ TEST(HEALTH_CHECK_TABLE, INSERT)
snprintf(policy2.address, sizeof(policy2.address), "2.2.2.2");
policy2.retires = 22;
policy2.interval_ms = 222;
EXPECT_TRUE((session_id2 = health_check_session_add(2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(3, 0, &policy2)) > 0);
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
@@ -39,15 +46,15 @@ TEST(HEALTH_CHECK_TABLE, INSERT)
snprintf(policy3.address, sizeof(policy3.address), "2001:0db8:0000:0000:0000:8a2e:0370:7334");
policy3.retires = 33;
policy3.interval_ms = 333;
EXPECT_TRUE((session_id4 = health_check_session_add(4, 0, &policy3)) > 0);
EXPECT_TRUE((session_id5 = health_check_session_add(5, 0, &policy3)) > 0);
EXPECT_TRUE((session_id4 = health_check_session_add(&sf_uuid4, 0, &policy3)) > 0);
EXPECT_TRUE((session_id5 = health_check_session_add(&sf_uuid5, 0, &policy3)) > 0);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, 1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, 2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, 3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id4, 4, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id5, 5, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id4, &sf_uuid4, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id5, &sf_uuid5, 0) == 0);
}
TEST(HEALTH_CHECK_TABLE, GET_STATUS)
@@ -63,7 +70,7 @@ TEST(HEALTH_CHECK_TABLE, GET_STATUS)
snprintf(policy1.address, sizeof(policy1.address), "4.4.4.4");
policy1.retires = 5;
policy1.interval_ms = 300;
EXPECT_TRUE((session_id1 = health_check_session_add(1, 0, &policy1)) > 0);
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
@@ -71,7 +78,7 @@ TEST(HEALTH_CHECK_TABLE, GET_STATUS)
snprintf(policy2.address, sizeof(policy2.address), "5.5.5.5");
policy2.retires = 5;
policy2.interval_ms = 300;
EXPECT_TRUE((session_id2 = health_check_session_add(2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
@@ -79,7 +86,7 @@ TEST(HEALTH_CHECK_TABLE, GET_STATUS)
snprintf(policy3.address, sizeof(policy3.address), "6.6.6.6");
policy3.retires = 5;
policy3.interval_ms = 300;
EXPECT_TRUE((session_id3 = health_check_session_add(3, 0, &policy3)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy3)) > 0);
// TEST get status
EXPECT_TRUE(health_check_session_get_status(session_id1) == 0);
@@ -88,9 +95,9 @@ TEST(HEALTH_CHECK_TABLE, GET_STATUS)
EXPECT_TRUE(health_check_session_get_status(7) == -1);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, 1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, 2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, 3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
}
TEST(HEALTH_CHECK_TABLE, SET_STATUS)
@@ -106,7 +113,7 @@ TEST(HEALTH_CHECK_TABLE, SET_STATUS)
snprintf(policy1.address, sizeof(policy1.address), "7.7.7.7");
policy1.retires = 5;
policy1.interval_ms = 300;
EXPECT_TRUE((session_id1 = health_check_session_add(1, 0, &policy1)) > 0);
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
@@ -114,7 +121,7 @@ TEST(HEALTH_CHECK_TABLE, SET_STATUS)
snprintf(policy2.address, sizeof(policy2.address), "8.8.8.8");
policy2.retires = 5;
policy2.interval_ms = 300;
EXPECT_TRUE((session_id2 = health_check_session_add(2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
@@ -122,7 +129,7 @@ TEST(HEALTH_CHECK_TABLE, SET_STATUS)
snprintf(policy3.address, sizeof(policy3.address), "9.9.9.9");
policy3.retires = 5;
policy3.interval_ms = 300;
EXPECT_TRUE((session_id3 = health_check_session_add(3, 0, &policy3)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy3)) > 0);
// TEST get status
EXPECT_TRUE(health_check_session_get_status(session_id1) == 0);
@@ -141,9 +148,9 @@ TEST(HEALTH_CHECK_TABLE, SET_STATUS)
EXPECT_TRUE(health_check_session_get_status(session_id3) == 1);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, 1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, 2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, 3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
}
#if 0
@@ -163,7 +170,7 @@ TEST(HEALTH_CHECK_TABLE, DELETE)
snprintf(policy1.address, sizeof(policy1.address), "10.10.10.10");
policy1.retires = 5;
policy1.interval_ms = 300;
EXPECT_TRUE((session_id1 = health_check_session_add(1, 0, &policy1)) > 0);
EXPECT_TRUE((session_id1 = health_check_session_add(&sf_uuid1, 0, &policy1)) > 0);
struct health_check policy2;
memset(&policy2, 0, sizeof(policy2));
@@ -171,8 +178,8 @@ TEST(HEALTH_CHECK_TABLE, DELETE)
snprintf(policy2.address, sizeof(policy2.address), "11.11.11.11");
policy2.retires = 5;
policy2.interval_ms = 300;
EXPECT_TRUE((session_id2 = health_check_session_add(2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(3, 0, &policy2)) > 0);
EXPECT_TRUE((session_id2 = health_check_session_add(&sf_uuid2, 0, &policy2)) > 0);
EXPECT_TRUE((session_id3 = health_check_session_add(&sf_uuid3, 0, &policy2)) > 0);
struct health_check policy3;
memset(&policy3, 0, sizeof(policy3));
@@ -180,25 +187,32 @@ TEST(HEALTH_CHECK_TABLE, DELETE)
snprintf(policy3.address, sizeof(policy3.address), "12.12.12.12");
policy3.retires = 5;
policy3.interval_ms = 300;
EXPECT_TRUE((session_id4 = health_check_session_add(4, 0, &policy3)) > 0);
EXPECT_TRUE((session_id5 = health_check_session_add(5, 0, &policy3)) > 0);
EXPECT_TRUE((session_id6 = health_check_session_add(6, 0, &policy3)) > 0);
EXPECT_TRUE((session_id4 = health_check_session_add(&sf_uuid4, 0, &policy3)) > 0);
EXPECT_TRUE((session_id5 = health_check_session_add(&sf_uuid5, 0, &policy3)) > 0);
EXPECT_TRUE((session_id6 = health_check_session_add(&sf_uuid6, 0, &policy3)) > 0);
// TEST Delete By Session ID
EXPECT_TRUE(health_check_session_del(session_id1, 1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id1, 1, 0) == -1);
EXPECT_TRUE(health_check_session_del(session_id2, 2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, 3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, 3, 0) == -1);
EXPECT_TRUE(health_check_session_del(session_id5, 4, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id5, 5, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id6, 6, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id6, 6, 0) == -1);
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id1, &sf_uuid1, 0) == -1);
EXPECT_TRUE(health_check_session_del(session_id2, &sf_uuid2, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id3, &sf_uuid3, 0) == -1);
EXPECT_TRUE(health_check_session_del(session_id5, &sf_uuid4, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id5, &sf_uuid5, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id6, &sf_uuid6, 0) == 0);
EXPECT_TRUE(health_check_session_del(session_id6, &sf_uuid6, 0) == -1);
}
#endif
int main(int argc, char **argv)
{
uuid_parse("00000000-0000-0000-0000-000000000001", sf_uuid1);
uuid_parse("00000000-0000-0000-0000-000000000002", sf_uuid2);
uuid_parse("00000000-0000-0000-0000-000000000003", sf_uuid3);
uuid_parse("00000000-0000-0000-0000-000000000004", sf_uuid4);
uuid_parse("00000000-0000-0000-0000-000000000005", sf_uuid5);
uuid_parse("00000000-0000-0000-0000-000000000006", sf_uuid6);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -2,38 +2,117 @@
#include "utils.h"
TEST(UTILS, FIXED_NUM_ARRAY)
TEST(UUID_ARRAY, FULL)
{
struct mutable_array array;
mutable_array_init(&array);
uuid_t uuid;
uuid_parse("00000000-0000-0000-0000-000000000001", uuid);
mutable_array_add_elem(&array, 1);
mutable_array_add_elem(&array, 2);
mutable_array_add_elem(&array, 3);
mutable_array_add_elem(&array, 1);
mutable_array_add_elem(&array, 2);
struct uuid_array array;
uuid_array_init(&array);
EXPECT_TRUE(uuid_array_is_full(&array) == 0);
EXPECT_TRUE(mutable_array_count_elem(&array) == 5);
EXPECT_TRUE(mutable_array_index_elem(&array, 0) == 1);
EXPECT_TRUE(mutable_array_index_elem(&array, 1) == 2);
EXPECT_TRUE(mutable_array_index_elem(&array, 2) == 3);
EXPECT_TRUE(mutable_array_index_elem(&array, 3) == 1);
EXPECT_TRUE(mutable_array_index_elem(&array, 4) == 2);
for (int i = 0; i < MAX_RULE_NUM; i++)
{
uuid_array_append(&array, uuid);
if (i == MAX_RULE_NUM - 1)
{
EXPECT_TRUE(uuid_array_is_full(&array) == 1);
}
else
{
EXPECT_TRUE(uuid_array_is_full(&array) == 0);
}
}
mutable_array_del_elem(&array, 3); // 1,2,1,2
EXPECT_TRUE(mutable_array_count_elem(&array) == 4);
EXPECT_TRUE(mutable_array_index_elem(&array, 0) == 1);
EXPECT_TRUE(mutable_array_index_elem(&array, 1) == 2);
EXPECT_TRUE(mutable_array_index_elem(&array, 2) == 1);
EXPECT_TRUE(mutable_array_index_elem(&array, 3) == 2);
EXPECT_TRUE(uuid_array_is_full(&array) == 1);
}
mutable_array_del_elem(&array, 2); // 1,1
EXPECT_TRUE(mutable_array_count_elem(&array) == 2);
EXPECT_TRUE(mutable_array_index_elem(&array, 0) == 1);
EXPECT_TRUE(mutable_array_index_elem(&array, 1) == 1);
TEST(UUID_ARRAY, COUNT)
{
uuid_t uuid;
uuid_parse("00000000-0000-0000-0000-000000000001", uuid);
mutable_array_del_elem(&array, 1);
EXPECT_TRUE(mutable_array_count_elem(&array) == 0);
struct uuid_array array;
uuid_array_init(&array);
EXPECT_TRUE(uuid_array_get_count(&array) == 0);
for (int i = 0; i < MAX_RULE_NUM; i++)
{
uuid_array_append(&array, uuid);
EXPECT_TRUE(uuid_array_get_count(&array) == i + 1);
}
EXPECT_TRUE(uuid_array_get_count(&array) == MAX_RULE_NUM);
}
TEST(UUID_ARRAY, CONTAINS)
{
uuid_t uuid1;
uuid_t uuid2;
uuid_t uuid3;
uuid_t uuid4;
uuid_parse("00000000-0000-0000-0000-000000000001", uuid1);
uuid_parse("00000000-0000-0000-0000-000000000002", uuid2);
uuid_parse("00000000-0000-0000-0000-000000000003", uuid3);
uuid_parse("00000000-0000-0000-0000-000000000004", uuid4);
struct uuid_array array;
uuid_array_init(&array);
EXPECT_TRUE(uuid_array_contains(&array, uuid1) == 0);
EXPECT_TRUE(uuid_array_contains(&array, uuid2) == 0);
EXPECT_TRUE(uuid_array_contains(&array, uuid3) == 0);
EXPECT_TRUE(uuid_array_contains(&array, uuid4) == 0);
uuid_array_append(&array, uuid1);
uuid_array_append(&array, uuid2);
uuid_array_append(&array, uuid3);
EXPECT_TRUE(uuid_array_contains(&array, uuid1) == 1);
EXPECT_TRUE(uuid_array_contains(&array, uuid2) == 1);
EXPECT_TRUE(uuid_array_contains(&array, uuid3) == 1);
EXPECT_TRUE(uuid_array_contains(&array, uuid4) == 0);
}
TEST(UUID_ARRAY, REMOVE)
{
uuid_t uuid1;
uuid_t uuid2;
uuid_t uuid3;
uuid_parse("00000000-0000-0000-0000-000000000001", uuid1);
uuid_parse("00000000-0000-0000-0000-000000000002", uuid2);
uuid_parse("00000000-0000-0000-0000-000000000003", uuid3);
struct uuid_array array;
uuid_array_init(&array);
uuid_array_append(&array, uuid1);
uuid_array_append(&array, uuid2);
uuid_array_append(&array, uuid3);
uuid_array_append(&array, uuid1);
uuid_array_append(&array, uuid2);
EXPECT_TRUE(uuid_array_get_count(&array) == 5);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 0), uuid1) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 1), uuid2) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 2), uuid3) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 3), uuid1) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 4), uuid2) == 0);
uuid_array_remove(&array, uuid3); // 1,2,1,2
EXPECT_TRUE(uuid_array_get_count(&array) == 4);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 0), uuid1) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 1), uuid2) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 2), uuid1) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 3), uuid2) == 0);
uuid_array_remove(&array, uuid2); // 1,1
EXPECT_TRUE(uuid_array_get_count(&array) == 2);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 0), uuid1) == 0);
EXPECT_TRUE(uuid_compare(*uuid_array_get_at(&array, 1), uuid1) == 0);
uuid_array_remove(&array, uuid1);
EXPECT_TRUE(uuid_array_get_count(&array) == 0);
}
TEST(UTILS, DEVICE)

View File

@@ -17,7 +17,7 @@ breakpad_minidump_dir=/run/sce/crashreport
breakpad_upload_tools=/opt/tsg/framework/bin/minidump_upload
[maat]
# 0:json 1:redis 2:iris
# 0:json 1:redis
input_mode=1
# LOG_LEVEL_TRACE = 0; LOG_LEVEL_DEBUG = 1; LOG_LEVEL_INFO = 2;
# LOG_LEVEL_WARN = 3; LOG_LEVEL_ERROR = 4; LOG_LEVEL_FATAL = 5;
@@ -29,8 +29,6 @@ deferred_load=0
stat_file=log/maat.fs2
table_info=resource/table_info.conf
accept_path=/opt/tsg/etc/tsg_device_tag.json
inc_cfg_dir=resource/inc/
ful_cfg_dir=resource/ful/
json_cfg_file=resource/sce.json
foreign_cont_dir=resource/foreign_files
redis_db_idx=0
@@ -88,6 +86,7 @@ gateway=127.0.0.1
icmp_cycle_time_s=10
[kafka]
enable_debug=0
brokerlist=192.168.40.224:9092
sasl_username=admin
sasl_passwd=galaxy2019

View File

@@ -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

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); \

View File

@@ -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
}

View File

@@ -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;

View File

@@ -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;
};

View File

@@ -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);

View File

@@ -46,7 +46,7 @@ struct session_iterm
struct health_check policy; // value1: deep copy
int is_active; // value2
int profile_id; // value3
uuid_t sf_uuid; // value3
int vsys_id; // value4
UT_hash_handle hh1; /* handle for first hash table */
@@ -457,7 +457,7 @@ static uint64_t health_check_get_session_id()
// return >0 : session id
// return 0 : fail
// 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)
{
uint64_t session_id = 0;
uint8_t mac[ETH_ALEN] = {0};
@@ -481,7 +481,7 @@ uint64_t health_check_session_add(int profile_id, int vsys_id, const struct heal
tmp->vsys_id = vsys_id;
tmp->session_id = session_id;
tmp->profile_id = profile_id;
uuid_copy(tmp->sf_uuid, *sf_uuid);
memcpy(&tmp->policy, policy, sizeof(struct health_check));
HASH_ADD(hh1, g_handle.root_by_id, session_id, sizeof(tmp->session_id), tmp);
@@ -498,13 +498,15 @@ uint64_t health_check_session_add(int profile_id, int vsys_id, const struct heal
health_check_method_table_set_mac(&g_handle_none, tmp->policy.address, mac);
}
LOG_DEBUG("health check session table insert: profile id [%d] session id [%lu] address [%s] success", profile_id, session_id, policy->address);
char sf_uuid_str[UUID_STRING_SIZE] = {0};
uuid_unparse(*sf_uuid, sf_uuid_str);
LOG_DEBUG("health check session table insert: profile id [%s] session id [%lu] address [%s] success", sf_uuid_str, session_id, policy->address);
return session_id;
}
// 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)
{
int ret = 0;
struct session_iterm *tmp = NULL;
@@ -536,13 +538,15 @@ end:
HASH_DELETE(hh1, g_handle.root_by_id, tmp);
struct sf_status_key key = {0};
key.vsys_id = vsys_id;
key.sf_profile_id = profile_id;
uuid_copy(key.sf_uuid, *sf_uuid);
sf_status_delete(g_sf_status, &key);
pthread_rwlock_unlock(&g_handle.rwlock);
free(tmp);
tmp = NULL;
LOG_DEBUG("health check session table delete: profile id [%d] session id [%lu] success", profile_id, session_id);
char sf_uuid_str[UUID_STRING_SIZE] = {0};
uuid_unparse(*sf_uuid, sf_uuid_str);
LOG_DEBUG("health check session table delete: profile id [%s] session id [%lu] success", sf_uuid_str, session_id);
return 0;
}
@@ -667,7 +671,7 @@ static void *_health_check_session_foreach(void *arg)
struct sf_status_key key = {0};
key.vsys_id = node->vsys_id;
key.sf_profile_id = node->profile_id;
uuid_copy(key.sf_uuid, node->sf_uuid);
sf_status_update(g_sf_status, &key, is_active, 0);
if (node->is_active != is_active) {
node->is_active = is_active;
@@ -743,6 +747,7 @@ int health_check_session_get_mac(uint64_t session_id, u_char mac_buff[])
struct session_iterm *tmp = NULL;
uint8_t mac[ETH_ALEN] = {0};
uint8_t init_mac[ETH_ALEN] = {0};
char sf_uuid_str[UUID_STRING_SIZE] = {0};
if (enable == 0)
{
@@ -757,9 +762,10 @@ int health_check_session_get_mac(uint64_t session_id, u_char mac_buff[])
return -1;
}
uuid_unparse(tmp->sf_uuid, sf_uuid_str);
str_method = health_check_method_str(tmp->policy.method);
if (tmp->policy.method == HEALTH_CHECK_METHOD_BFD && tmp->is_active == 0) {
LOG_DEBUG("health check session id [%lu] profile id [%d] health check method [%s] active is down", session_id, tmp->profile_id, str_method);
LOG_DEBUG("health check session id [%lu] profile id [%s] health check method [%s] active is down", session_id, sf_uuid_str, str_method);
pthread_rwlock_unlock(&g_handle.rwlock);
return -1;
}
@@ -773,20 +779,20 @@ int health_check_session_get_mac(uint64_t session_id, u_char mac_buff[])
if (memcmp(mac, init_mac, ETH_ALEN) == 0) {
if (strlen(gateway_address) == 0) {
LOG_DEBUG("health check session id [%lu] profile id [%d] health check method [%s] get mac [null]", session_id, tmp->profile_id, str_method);
LOG_DEBUG("health check session id [%lu] profile id [%s] health check method [%s] get mac [null]", session_id, sf_uuid_str, str_method);
pthread_rwlock_unlock(&g_handle.rwlock);
return -1;
}
health_check_method_table_get_mac(&g_handle_none, gateway_address, mac);
if (memcmp(mac, init_mac, ETH_ALEN) == 0) {
LOG_DEBUG("health check session id [%lu] profile id [%d] health check method [%s] get mac [null]", session_id, tmp->profile_id, str_method);
LOG_DEBUG("health check session id [%lu] profile id [%s] health check method [%s] get mac [null]", session_id, sf_uuid_str, str_method);
pthread_rwlock_unlock(&g_handle.rwlock);
return -1;
}
}
memcpy(mac_buff, mac, ETH_ALEN);
LOG_DEBUG("health check session id [%lu] profile id [%d] health check method [%s] get mac [%02x:%02x:%02x:%02x:%02x:%02x]", session_id, tmp->profile_id, str_method, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
LOG_DEBUG("health check session id [%lu] profile id [%s] health check method [%s] get mac [%02x:%02x:%02x:%02x:%02x:%02x]", session_id, sf_uuid_str, str_method, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
pthread_rwlock_unlock(&g_handle.rwlock);
return 0;
}

View File

@@ -668,9 +668,9 @@ static inline void action_mirr_forward(struct session_ctx *session_ctx, marsio_b
THROUGHPUT_METRICS_INC(&(thread_metrics->mirr_tx), 1, meta->raw_len);
THROUGHPUT_METRICS_INC(&sf->tx, 1, nsend);
struct sf_metrics_key key = {0};
key.rule_id = sf->rule_id;
key.sff_profile_id = sf->sff_profile_id;
key.sf_profile_id = sf->sf_profile_id;
uuid_copy(key.rule_uuid, sf->rule_uuid);
uuid_copy(key.sff_uuid, sf->sff_uuid);
uuid_copy(key.sf_uuid, sf->sf_uuid);
key.vsys_id = sf->rule_vsys_id;
sf_metrics_input(sf_metrics, thread_index, &key, 0, 0, 1, nsend);
}
@@ -703,23 +703,30 @@ static inline void action_stee_forward(struct session_ctx *session_ctx, marsio_b
THROUGHPUT_METRICS_INC(&(thread_metrics->stee_tx), 1, meta->raw_len);
THROUGHPUT_METRICS_INC(&sf->tx, 1, nsend);
struct sf_metrics_key key = {0};
key.rule_id = sf->rule_id;
key.sff_profile_id = sf->sff_profile_id;
key.sf_profile_id = sf->sf_profile_id;
uuid_copy(key.rule_uuid, sf->rule_uuid);
uuid_copy(key.sff_uuid, sf->sff_uuid);
uuid_copy(key.sf_uuid, sf->sf_uuid);
key.vsys_id = sf->rule_vsys_id;
sf_metrics_input(sf_metrics, thread_index, &key, 0, 0, 1, nsend);
}
static void action_sf_chaining(struct thread_ctx *thread_ctx, struct session_ctx *session_ctx, struct selected_chaining *chaining, marsio_buff_t *rx_buff, struct metadata *meta, int next_sf_index)
{
char rule_uuid_str[UUID_STRING_SIZE];
char sff_uuid_str[UUID_STRING_SIZE];
char sf_uuid_str[UUID_STRING_SIZE];
int sf_index;
for (sf_index = next_sf_index; sf_index < chaining->chaining_used; sf_index++)
{
struct selected_sf *sf = &(chaining->chaining[sf_index]);
LOG_DEBUG("%s: session: %lu %s execute chaining [%d/%d]: policy %lu->%d->%d, action %s->%s->%s->%s",
uuid_unparse(sf->rule_uuid, rule_uuid_str);
uuid_unparse(sf->sff_uuid, sff_uuid_str);
uuid_unparse(sf->sf_uuid, sf_uuid_str);
LOG_DEBUG("%s: session: %lu %s execute chaining [%d/%d]: policy %s->%s->%s, action %s->%s->%s->%s",
LOG_TAG_POLICY, session_ctx->session_id, session_ctx->session_addr,
sf_index, chaining->chaining_used,
sf->rule_id, sf->sff_profile_id, sf->sf_profile_id,
rule_uuid_str, sff_uuid_str, sf_uuid_str,
(meta->is_decrypted ? "decrypted" : "raw"), (meta->direction ? "E2I" : "I2E"), forward_type_tostring(sf->sff_forward_type), action_desc_tostring(sf->sf_action_desc));
PACKET_TRACE_ON_CHAIN(thread_ctx->ref_io->instance, rx_buff, sf, meta);
@@ -786,10 +793,11 @@ static int send_ctrl_packet(struct session_ctx *session_ctx, struct thread_ctx *
{
struct sce_ctx *sce_ctx = thread_ctx->ref_sce_ctx;
struct packet_io *packet_io = thread_ctx->ref_io;
struct mutable_array *rule_ids = &session_ctx->rule_ids;
struct uuid_array *rule_uuid_array = &session_ctx->rule_uuid_array;
struct selected_chaining *chaining_raw = session_ctx->chaining_raw;
struct selected_chaining *chaining_decrypted = session_ctx->chaining_decrypted;
int thread_index = thread_ctx->thread_index;
int num = uuid_array_get_count(rule_uuid_array);
char *data;
size_t size;
@@ -828,9 +836,9 @@ static int send_ctrl_packet(struct session_ctx *session_ctx, struct thread_ctx *
{
mpack_write_cstr(&writer, "sc_rule_list");
mpack_build_array(&writer); // sc_rule_list begin
for (int i = 0; i < rule_ids->num; i++)
for (int i = 0; i < num; i++)
{
mpack_write_u64(&writer, mutable_array_index_elem(rule_ids, i));
mpack_write_bin(&writer, (const char *)uuid_array_get_at(rule_uuid_array, i), sizeof(uuid_t));
}
mpack_complete_array(&writer); // sc_rule_list end
}
@@ -843,7 +851,7 @@ static int send_ctrl_packet(struct session_ctx *session_ctx, struct thread_ctx *
struct selected_sf *sf = &(chaining_raw->chaining[i]);
if (sf->sf_action == SESSION_ACTION_FORWARD)
{
mpack_write_u64(&writer, sf->sf_profile_id);
mpack_write_bin(&writer, (const char *)&sf->sf_uuid, sizeof(uuid_t));
}
if (sf->sf_action == SESSION_ACTION_BLOCK && sf->sff_forward_type == FORWARD_TYPE_STEERING)
{
@@ -861,7 +869,7 @@ static int send_ctrl_packet(struct session_ctx *session_ctx, struct thread_ctx *
struct selected_sf *sf = &(chaining_decrypted->chaining[i]);
if (sf->sf_action == SESSION_ACTION_FORWARD)
{
mpack_write_u64(&writer, sf->sf_profile_id);
mpack_write_bin(&writer, (const char *)&sf->sf_uuid, sizeof(uuid_t));
}
if (sf->sf_action == SESSION_ACTION_BLOCK && sf->sff_forward_type == FORWARD_TYPE_STEERING)
{
@@ -942,12 +950,19 @@ static void dump_sf_metrics(struct session_ctx *session_ctx, struct selected_cha
return;
}
char rule_uuid_str[UUID_STRING_SIZE];
char sff_uuid_str[UUID_STRING_SIZE];
char sf_uuid_str[UUID_STRING_SIZE];
for (int i = 0; i < chaining->chaining_used; i++)
{
struct selected_sf *sf = &(chaining->chaining[i]);
LOG_INFO("%s: session %lu %s metrics: policy %lu->%d->%d action %s->%s->%s rx_pkts %lu rx_bytes %lu tx_pkts %lu tx_bytes %lu",
uuid_unparse(sf->rule_uuid, rule_uuid_str);
uuid_unparse(sf->sff_uuid, sff_uuid_str);
uuid_unparse(sf->sf_uuid, sf_uuid_str);
LOG_INFO("%s: session %lu %s metrics: policy %s->%s->%s action %s->%s->%s rx_pkts %lu rx_bytes %lu tx_pkts %lu tx_bytes %lu",
LOG_TAG_SFMETRICS, session_ctx->session_id, session_ctx->session_addr,
sf->rule_id, sf->sff_profile_id, sf->sf_profile_id,
rule_uuid_str, sff_uuid_str, sf_uuid_str,
traffic_type_tostring(sf->traffic_type), forward_type_tostring(sf->sff_forward_type), action_desc_tostring(sf->sf_action_desc),
sf->rx.n_pkts, sf->rx.n_bytes, sf->tx.n_pkts, sf->tx.n_bytes);
}
@@ -964,24 +979,23 @@ static void handle_policy_mutil_hits(struct session_ctx *session_ctx, struct con
struct policy_enforcer *enforcer = thread_ctx->ref_enforcer;
struct sce_ctx *sce_ctx = thread_ctx->ref_sce_ctx;
for (int i = 0; i < ctrl_pkt->rule_id_num; i++)
int num = uuid_array_get_count(&ctrl_pkt->rule_uuid_array);
for (int i = 0; i < num; i++)
{
uint64_t rule_id = ctrl_pkt->rule_ids[i];
if (mutable_array_exist_elem(&session_ctx->rule_ids, rule_id))
uuid_t *rule_uuid_ptr = uuid_array_get_at(&ctrl_pkt->rule_uuid_array, i);
if (uuid_array_contains(&session_ctx->rule_uuid_array, *rule_uuid_ptr))
{
continue;
}
else
{
policy_enforce_select_chainings(enforcer, session_ctx, data_pkt, rule_id, direction);
policy_enforce_select_chainings(enforcer, session_ctx, data_pkt, rule_uuid_ptr, direction);
if (sce_ctx->enable_debug)
{
selected_chaining_bref(session_ctx->chaining_raw);
selected_chaining_bref(session_ctx->chaining_decrypted);
}
mutable_array_add_elem(&session_ctx->rule_ids, rule_id);
}
}
}
@@ -1213,8 +1227,8 @@ static void handle_data_packet(marsio_buff_t *rx_buff, struct thread_ctx *thread
{
THROUGHPUT_METRICS_INC(&(thread_metrics->raw_rx), 1, meta.raw_len);
}
PACKET_TRACE_ON_POLICY(thread_ctx->ref_io->instance, rx_buff, &session_ctx->rule_ids, chaining);
PACKET_TELEMETRY_ON_POLICY(thread_ctx->ref_io->instance, rx_buff, &session_ctx->rule_ids, chaining);
PACKET_TRACE_ON_POLICY(thread_ctx->ref_io->instance, rx_buff, &session_ctx->rule_uuid_array, chaining);
PACKET_TELEMETRY_ON_POLICY(thread_ctx->ref_io->instance, rx_buff, &session_ctx->rule_uuid_array, chaining);
action_sf_chaining(thread_ctx, session_ctx, chaining, rx_buff, &meta, 0);
return;
@@ -1243,6 +1257,7 @@ static void handle_inject_vxlan_packet(marsio_buff_t *rx_buff, struct thread_ctx
struct vxlan_hdr *vxlan_hdr = NULL;
struct session_ctx *session_ctx = NULL;
struct selected_chaining *chaining = NULL;
char sf_uuid_str[UUID_STRING_SIZE];
memset(&meta, 0, sizeof(struct metadata));
int sf_index = 0;
@@ -1300,8 +1315,9 @@ static void handle_inject_vxlan_packet(marsio_buff_t *rx_buff, struct thread_ctx
if (chaining->chaining[sf_index].sff_forward_type == FORWARD_TYPE_MIRRORING)
{
LOG_DEBUG("%s: unexpected inject packet, session %lu %s with sf_profile_id %d executes mirror and does not require reflow, drop !!!",
LOG_TAG_PKTIO, session_ctx->session_id, session_ctx->session_addr, chaining->chaining[sf_index].sf_profile_id);
uuid_unparse(chaining->chaining[sf_index].sf_uuid, sf_uuid_str);
LOG_DEBUG("%s: unexpected inject packet, session %lu %s with sf_uuid %s executes mirror and does not require reflow, drop !!!",
LOG_TAG_PKTIO, session_ctx->session_id, session_ctx->session_addr, sf_uuid_str);
THROUGHPUT_METRICS_INC(&(thread_metrics->mirr_rx_drop), 1, meta.raw_len);
goto error_block;
}
@@ -1311,9 +1327,9 @@ static void handle_inject_vxlan_packet(marsio_buff_t *rx_buff, struct thread_ctx
THROUGHPUT_METRICS_INC(&sf->rx, 1, raw_len);
THROUGHPUT_METRICS_INC(&(thread_metrics->stee_rx), 1, meta.raw_len);
struct sf_metrics_key key = {0};
key.rule_id = sf->rule_id;
key.sff_profile_id = sf->sff_profile_id;
key.sf_profile_id = sf->sf_profile_id;
uuid_copy(key.rule_uuid, sf->rule_uuid);
uuid_copy(key.sff_uuid, sf->sff_uuid);
uuid_copy(key.sf_uuid, sf->sf_uuid);
key.vsys_id = sf->rule_vsys_id;
sf_metrics_input(sf_metrics, thread_index, &key, 1, raw_len, 0, 0);
}

File diff suppressed because it is too large Load Diff

View File

@@ -26,7 +26,7 @@ struct session_ctx *session_ctx_new()
struct session_ctx *session_ctx = (struct session_ctx *)calloc(1, sizeof(struct session_ctx));
assert(session_ctx != NULL);
mutable_array_init(&session_ctx->rule_ids);
uuid_array_init(&session_ctx->rule_uuid_array);
return session_ctx;
}

View File

@@ -226,9 +226,9 @@ void sf_metrics_input(struct sf_metrics *handle, uint16_t thr_idx, struct sf_met
{
node = (struct metric *)calloc(1, sizeof(struct metric));
node->key.vsys_id = key->vsys_id;
node->key.rule_id = key->rule_id;
node->key.sff_profile_id = key->sff_profile_id;
node->key.sf_profile_id = key->sf_profile_id;
uuid_copy(node->key.rule_uuid, key->rule_uuid);
uuid_copy(node->key.sff_uuid, key->sff_uuid);
uuid_copy(node->key.sf_uuid, key->sf_uuid);
node->recv_pkts = rx_pkts;
node->recv_bytes = rx_bytes;
@@ -254,6 +254,9 @@ void sf_metrics_output(struct sf_metrics *handle, uint16_t thr_idx)
struct metric *temp = NULL;
struct metric *node = NULL;
char rule_uuid_str[UUID_STRING_SIZE] = {0};
char sff_uuid_str[UUID_STRING_SIZE] = {0};
char sf_uuid_str[UUID_STRING_SIZE] = {0};
HASH_ITER(hh, handle->root[thr_idx], node, temp)
{
if (node->sent_pkts == 0 && node->recv_pkts == 0 &&
@@ -262,11 +265,14 @@ void sf_metrics_output(struct sf_metrics *handle, uint16_t thr_idx)
continue;
}
uuid_unparse(node->key.rule_uuid, rule_uuid_str);
uuid_unparse(node->key.sff_uuid, sff_uuid_str);
uuid_unparse(node->key.sf_uuid, sf_uuid_str);
const struct field tags[] = {
{"vsys_id", FIELD_VALUE_INTEGER, {.value_longlong = node->key.vsys_id}},
{"rule_id", FIELD_VALUE_INTEGER, {.value_longlong = (long long)node->key.rule_id}},
{"sff_profile_id", FIELD_VALUE_INTEGER, {.value_longlong = node->key.sff_profile_id}},
{"sf_profile_id", FIELD_VALUE_INTEGER, {.value_longlong = node->key.sf_profile_id}},
{"rule_uuid", FIELD_VALUE_CSTRING, {.value_str = rule_uuid_str}},
{"sff_profile_uuid", FIELD_VALUE_CSTRING, {.value_str = sff_uuid_str}},
{"sf_profile_uuid", FIELD_VALUE_CSTRING, {.value_str = sf_uuid_str}},
};
fieldstat_easy_counter_incrby(handle->fs, thr_idx, handle->sent_pkts_idx, tags, sizeof(tags) / sizeof(tags[0]), node->sent_pkts);

View File

@@ -140,7 +140,7 @@ void sf_status_update(struct sf_status *handle, const struct sf_status_key *key,
{
temp = (struct metric *)calloc(1, sizeof(struct metric));
temp->key.vsys_id = key->vsys_id;
temp->key.sf_profile_id = key->sf_profile_id;
uuid_copy(temp->key.sf_uuid, key->sf_uuid);
temp->sf_status = sf_status;
temp->sf_latency = sf_latency;
HASH_ADD(hh, handle->htable, key, sizeof(struct sf_status_key), temp);
@@ -154,13 +154,15 @@ void sf_status_output(struct sf_status *handle)
return;
}
char sf_uuid_str[UUID_STRING_SIZE] = {0};
struct metric *temp = NULL;
struct metric *node = NULL;
HASH_ITER(hh, handle->htable, node, temp)
{
uuid_unparse(node->key.sf_uuid, sf_uuid_str);
const struct field tags[] = {
{"vsys_id", FIELD_VALUE_INTEGER, {.value_longlong = node->key.vsys_id}},
{"sf_profile_id", FIELD_VALUE_INTEGER, {.value_longlong = node->key.sf_profile_id}},
{"sf_profile_uuid", FIELD_VALUE_CSTRING, {.value_str = sf_uuid_str}},
};
fieldstat_easy_counter_set(handle->fs, 0, handle->sf_status_idx, tags, sizeof(tags) / sizeof(tags[0]), node->sf_status);

File diff suppressed because it is too large Load Diff

View File

@@ -3,6 +3,15 @@
#include "kafka.h"
#include "sf_metrics.h"
uuid_t rule_uuid1;
uuid_t rule_uuid2;
uuid_t sff_uuid1;
uuid_t sff_uuid2;
uuid_t sf_uuid1;
uuid_t sf_uuid2;
#if 1
TEST(SF_METRICS, TEST1)
{
@@ -16,17 +25,17 @@ TEST(SF_METRICS, TEST1)
struct sf_metrics_key key1 = {0};
key1.vsys_id = 1;
key1.rule_id = 2;
key1.sff_profile_id = 3;
key1.sf_profile_id = 4;
uuid_copy(key1.rule_uuid, rule_uuid1);
uuid_copy(key1.sff_uuid, sff_uuid1);
uuid_copy(key1.sf_uuid, sf_uuid1);
struct sf_metrics_key key2 = {0};
key2.vsys_id = 4;
key2.rule_id = 3;
key2.sff_profile_id = 2;
key2.sf_profile_id = 1;
uuid_copy(key2.rule_uuid, rule_uuid2);
uuid_copy(key2.sff_uuid, sff_uuid2);
uuid_copy(key2.sf_uuid, sf_uuid2);
// thread 0
// uint64_t rx_pkts, uint64_t rx_bytes, uint64_t tx_pkts, uint64_t tx_bytes);
// rx_pkts, rx_bytes, tx_pkts, tx_bytes);
sf_metrics_input(metrics, thr_idx0, &key1, 1, 2, 2, 4);
sf_metrics_input(metrics, thr_idx0, &key2, 2, 4, 1, 2);
sf_metrics_output(metrics, thr_idx0);
@@ -62,17 +71,17 @@ TEST(SF_METRICS, TEST2)
struct sf_metrics_key key1 = {0};
key1.vsys_id = 1;
key1.rule_id = 2;
key1.sff_profile_id = 3;
key1.sf_profile_id = 4;
uuid_copy(key1.rule_uuid, rule_uuid1);
uuid_copy(key1.sff_uuid, sff_uuid1);
uuid_copy(key1.sf_uuid, sf_uuid1);
struct sf_metrics_key key2 = {0};
key2.vsys_id = 4;
key2.rule_id = 3;
key2.sff_profile_id = 2;
key2.sf_profile_id = 1;
uuid_copy(key2.rule_uuid, rule_uuid2);
uuid_copy(key2.sff_uuid, sff_uuid2);
uuid_copy(key2.sf_uuid, sf_uuid2);
// thread 0
// uint64_t rx_pkts, uint64_t rx_bytes, uint64_t tx_pkts, uint64_t tx_bytes);
// rx_pkts, rx_bytes, tx_pkts, tx_bytes);
sf_metrics_input(metrics, thr_idx0, &key1, 1, 2, 2, 4);
sf_metrics_input(metrics, thr_idx0, &key2, 2, 4, 1, 2);
sf_metrics_output(metrics, thr_idx0);
@@ -96,6 +105,15 @@ TEST(SF_METRICS, TEST2)
int main(int argc, char **argv)
{
uuid_parse("00000000-0000-0000-0000-000000000001", rule_uuid1);
uuid_parse("00000000-0000-0000-0000-000000000002", rule_uuid2);
uuid_parse("00000000-0000-0000-0000-000000000003", sff_uuid1);
uuid_parse("00000000-0000-0000-0000-000000000004", sff_uuid2);
uuid_parse("00000000-0000-0000-0000-000000000005", sf_uuid1);
uuid_parse("00000000-0000-0000-0000-000000000006", sf_uuid2);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -4,6 +4,10 @@
TEST(SF_STATUS, TEST)
{
uuid_t sf_uuid1;
uuid_t sf_uuid2;
uuid_generate(sf_uuid1);
uuid_generate(sf_uuid2);
struct kafka *kfk = kafka_create("./test_resource/sce.conf");
EXPECT_TRUE(kfk != NULL);
struct sf_status *status = sf_status_create("./test_resource/sce.conf", kfk);
@@ -13,14 +17,15 @@ TEST(SF_STATUS, TEST)
struct sf_status_key key1 = {0};
key1.vsys_id = 11;
key1.sf_profile_id = 12;
uuid_copy(key1.sf_uuid, sf_uuid1);
struct sf_status_key key2 = {0};
key2.vsys_id = 21;
key2.sf_profile_id = 22;
key2.vsys_id = 22;
uuid_copy(key2.sf_uuid, sf_uuid2);
sf_status_update(status, &key1, 0, 1);
sf_status_update(status, &key2, 1, 2);
sf_status_update(status, &key1, 1, 2);
sf_status_update(status, &key2, 2, 1);
printf("\n========================================\n expect key1 + key2 \n========================================\n");
sf_status_output(status);
@@ -32,6 +37,8 @@ TEST(SF_STATUS, TEST)
printf("\n========================================\n expect no output \n========================================\n");
sf_status_output(status);
sleep(2);
sf_status_destory(status);
kafka_destroy(kfk);
}

View File

@@ -2,7 +2,7 @@
nr_worker_threads=8
[maat]
# 0:json 1:redis 2:iris
# 0:json 1:redis
input_mode=0
# LOG_LEVEL_TRACE = 0; LOG_LEVEL_DEBUG = 1; LOG_LEVEL_INFO = 2;
# LOG_LEVEL_WARN = 3; LOG_LEVEL_ERROR = 4; LOG_LEVEL_FATAL = 5;
@@ -14,8 +14,6 @@ deferred_load=0
stat_file=./maat.fs2
table_info=test_resource/table_info.conf
accept_path=/opt/tsg/etc/tsg_device_tag.json
inc_cfg_dir=test_resource/inc/
ful_cfg_dir=test_resource/ful/
json_cfg_file=test_resource/sce.json
foreign_cont_dir=test_resource/foreign_files
redis_db_idx=0
@@ -36,6 +34,7 @@ local_address=127.0.0.1
gateway=127.0.0.1
[kafka]
enable_debug=0
brokerlist=192.168.40.224:9092
sasl_username=admin
sasl_passwd=galaxy2019

View File

@@ -3,38 +3,365 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1",
"2\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"bfd\",\"address\":\"1.2.3.4\",\"port\":\"10000\",\"interval_ms\":100,\"retires\":5}\t1\t1",
"3\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"in_band_bfd\",\"address\":\"1.2.3.4\",\"port\":\"10000\",\"interval_ms\":100,\"retires\":5}\t1\t1",
"4\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"http\",\"url\":\"http://192.168.100.1:8080/health_check.index\",\"interval_ms\":100,\"retires\":5}\t1\t1",
"5\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"layer2_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1",
"6\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"layer3_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1",
"7\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t0\t{\"method\":\"layer3_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1",
"8\t{\"tag\":\"data_center\",\"value\":\"data_center_b\"}\t0\t{\"method\":\"layer3_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000002",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "bfd",
"address": "1.2.3.4",
"port": "10000",
"interval_ms": 100,
"retires": 5
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000003",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "in_band_bfd",
"address": "1.2.3.4",
"port": "10000",
"interval_ms": 100,
"retires": 5
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000004",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "http",
"url": "http://192.168.100.1:8080/health_check.index",
"interval_ms": 100,
"retires": 5
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000005",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "layer2_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000006",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "layer3_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000007",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 0,
"connectivity": {
"method": "layer3_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000008",
"device_group": {
"tag": "data_center",
"value": "data_center_b"
},
"admin_status": 0,
"connectivity": {
"method": "layer3_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t1\thash-int-ip\tnearby\tbypass\tnull\t[1]\t1",
"2\t1\thash-int-ip\tnearby\tbypass\tnull\t[1,2,3,4,5,6,7,8]\t1",
"3\t1\thash-int-ip\tnearby\tblock\tnull\t[1]\t1",
"4\t1\thash-int-ip\tnearby\tre-dispatch\t{\"action\":\"bypass\",\"health_service_func_lt\":2}\t[1,2,3]\t1",
"5\t1\thash-int-ip\tnearby\tre-dispatch\t{\"action\":\"block\"}\t[1,2,3]\t1",
"6\t1\thash-int-ip\tglobal\tblock\tnull\t[1]\t1",
"7\t1\thash-ext-ip\tglobal\tblock\tnull\t[1]\t1",
"8\t1\thash-int-ip-and-ext-ip\tglobal\tblock\tnull\t[1]\t1",
"9\t1\thash-innermost-int-ip\tglobal\tblock\tnull\t[1]\t1",
"10\t2\thash-innermost-int-ip\tglobal\tblock\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000002",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001",
"00000000-0000-0000-3333-000000000002",
"00000000-0000-0000-3333-000000000003",
"00000000-0000-0000-3333-000000000004",
"00000000-0000-0000-3333-000000000005",
"00000000-0000-0000-3333-000000000006",
"00000000-0000-0000-3333-000000000007",
"00000000-0000-0000-3333-000000000008"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000003",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000004",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "re-dispatch",
"unavailability_action": {
"action": "bypass",
"health_service_func_lt": 2
},
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001",
"00000000-0000-0000-3333-000000000002",
"00000000-0000-0000-3333-000000000003"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000005",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "re-dispatch",
"unavailability_action": {
"action": "block"
},
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001",
"00000000-0000-0000-3333-000000000002",
"00000000-0000-0000-3333-000000000003"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000006",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000007",
"type": 1,
"load_balance_method": "hash-ext-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000008",
"type": 1,
"load_balance_method": "hash-int-ip-and-ext-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000009",
"type": 1,
"load_balance_method": "hash-innermost-int-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000010",
"type": 2,
"load_balance_method": "hash-innermost-int-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"1\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1",
"2\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1,2,3,4,5,6,7,8,9,10]}\t0\t1",
"11\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"decrypted\",\"sff_profiles\":[1]}\t0\t1",
"12\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"decrypted\",\"sff_profiles\":[1,2,3,4,5,6,7,8,9,10]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-1111-000000000002",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001",
"00000000-0000-0000-2222-000000000002",
"00000000-0000-0000-2222-000000000003",
"00000000-0000-0000-2222-000000000004",
"00000000-0000-0000-2222-000000000005",
"00000000-0000-0000-2222-000000000006",
"00000000-0000-0000-2222-000000000007",
"00000000-0000-0000-2222-000000000008",
"00000000-0000-0000-2222-000000000009",
"00000000-0000-0000-2222-000000000010"
]
},
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-1111-000000000011",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "decrypted",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-1111-000000000012",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "decrypted",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001",
"00000000-0000-0000-2222-000000000002",
"00000000-0000-0000-2222-000000000003",
"00000000-0000-0000-2222-000000000004",
"00000000-0000-0000-2222-000000000005",
"00000000-0000-0000-2222-000000000006",
"00000000-0000-0000-2222-000000000007",
"00000000-0000-0000-2222-000000000008",
"00000000-0000-0000-2222-000000000009",
"00000000-0000-0000-2222-000000000010"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,38 +3,363 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1",
"2\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"2.2.2.2\"}\t{\"method\":\"bfd\",\"interval_ms\":100,\"retires\":5}\t1\t1",
"3\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"in_band_bfd\",\"address\":\"1.2.3.4\",\"port\":\"10000\",\"interval_ms\":100,\"retires\":5}\t1\t1",
"4\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"http\",\"url\":\"http://192.168.100.1:8080/health_check.index\",\"interval_ms\":100,\"retires\":5}\t1\t1",
"5\t{\"tag\":\"data_center\",\"value\":\"data_center_a\"}\t1\t{\"method\":\"layer2_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1",
"6\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"layer3_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1",
"7\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t0\t{\"method\":\"layer3_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1",
"8\t{\"tag\":\"device_group\",\"value\":\"device_group_b\"}\t0\t{\"method\":\"layer3_switch\",\"int_vlan_tag\":10,\"ext_vlan_tag\":5}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000002",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "2.2.2.2"
},
"health_check": {
"method": "bfd",
"interval_ms": 100,
"retires": 5
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000003",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "in_band_bfd",
"address": "1.2.3.4",
"port": "10000",
"interval_ms": 100,
"retires": 5
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000004",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "http",
"url": "http://192.168.100.1:8080/health_check.index",
"interval_ms": 100,
"retires": 5
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000005",
"device_group": {
"tag": "data_center",
"value": "data_center_a"
},
"admin_status": 1,
"connectivity": {
"method": "layer2_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000006",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "layer3_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000007",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 0,
"connectivity": {
"method": "layer3_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000008",
"device_group": {
"tag": "device_group",
"value": "device_group_b"
},
"admin_status": 0,
"connectivity": {
"method": "layer3_switch",
"int_vlan_tag": 10,
"ext_vlan_tag": 5
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t1\thash-int-ip\tnearby\tbypass\tnull\t[1]\t1",
"2\t1\thash-int-ip\tnearby\tbypass\tnull\t[1,2,3,4,5,6,7,8]\t1",
"3\t1\thash-int-ip\tnearby\tblock\tnull\t[1]\t1",
"4\t1\thash-int-ip\tnearby\tre-dispatch\t{\"action\":\"bypass\",\"health_service_func_lt\":2}\t[1,2,3]\t1",
"5\t1\thash-int-ip\tnearby\tre-dispatch\t{\"action\":\"block\"}\t[1,2,3]\t1",
"6\t1\thash-int-ip\tglobal\tblock\tnull\t[1]\t1",
"7\t1\thash-ext-ip\tglobal\tblock\tnull\t[1]\t1",
"8\t1\thash-int-ip-and-ext-ip\tglobal\tblock\tnull\t[1]\t1",
"9\t1\thash-innermost-int-ip\tglobal\tblock\tnull\t[1]\t1",
"10\t2\thash-innermost-int-ip\tglobal\tblock\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000002",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001",
"00000000-0000-0000-3333-000000000002",
"00000000-0000-0000-3333-000000000003",
"00000000-0000-0000-3333-000000000004",
"00000000-0000-0000-3333-000000000005",
"00000000-0000-0000-3333-000000000006",
"00000000-0000-0000-3333-000000000007",
"00000000-0000-0000-3333-000000000008"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000003",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000004",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "re-dispatch",
"unavailability_action": {
"action": "bypass",
"health_service_func_lt": 2
},
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001",
"00000000-0000-0000-3333-000000000002",
"00000000-0000-0000-3333-000000000003"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000005",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "re-dispatch",
"unavailability_action": {
"action": "block"
},
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001",
"00000000-0000-0000-3333-000000000002",
"00000000-0000-0000-3333-000000000003"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000006",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000007",
"type": 1,
"load_balance_method": "hash-ext-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000008",
"type": 1,
"load_balance_method": "hash-int-ip-and-ext-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000009",
"type": 1,
"load_balance_method": "hash-innermost-int-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000010",
"type": 2,
"load_balance_method": "hash-innermost-int-ip",
"load_balance_localization": "global",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"1\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1",
"2\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1,2,3,4,5,6,7,8,9,10]}\t0\t1",
"11\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"decrypted\",\"sff_profiles\":[1]}\t0\t1",
"12\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"decrypted\",\"sff_profiles\":[1,2,3,4,5,6,7,8,9,10]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-1111-000000000002",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001",
"00000000-0000-0000-2222-000000000002",
"00000000-0000-0000-2222-000000000003",
"00000000-0000-0000-2222-000000000004",
"00000000-0000-0000-2222-000000000005",
"00000000-0000-0000-2222-000000000006",
"00000000-0000-0000-2222-000000000007",
"00000000-0000-0000-2222-000000000008",
"00000000-0000-0000-2222-000000000009",
"00000000-0000-0000-2222-000000000010"
]
},
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-1111-000000000011",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "decrypted",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-1111-000000000012",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "decrypted",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001",
"00000000-0000-0000-2222-000000000002",
"00000000-0000-0000-2222-000000000003",
"00000000-0000-0000-2222-000000000004",
"00000000-0000-0000-2222-000000000005",
"00000000-0000-0000-2222-000000000006",
"00000000-0000-0000-2222-000000000007",
"00000000-0000-0000-2222-000000000008",
"00000000-0000-0000-2222-000000000009",
"00000000-0000-0000-2222-000000000010"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -1,35 +1,29 @@
[
{
"table_id":0,
"table_name":"SERVICE_CHAINING_COMPILE",
"table_name":"SERVICE_CHAINING_RULE",
"table_type":"plugin",
"valid_column":9,
"custom":{
"key":1,
"key_type":"integer",
"key_len":8
"key_type":"pointer",
"key_name":"uuid"
}
},
{
"table_id":1,
"table_name":"SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_type":"plugin",
"valid_column":8,
"custom":{
"key":1,
"key_type":"integer",
"key_len":4
"key_type":"pointer",
"key_name":"uuid"
}
},
{
"table_id":2,
"table_name":"SERVICE_FUNCTION_PROFILE",
"table_type":"plugin",
"valid_column":7,
"custom":{
"key":1,
"key_type":"integer",
"key_len":4
"key_type":"pointer",
"key_name":"uuid"
}
}
]

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
TEST(PACKET_IO, CTRL_PKT_ACTIVE)
{
@@ -21,7 +22,7 @@ TEST(PACKET_IO, CTRL_PKT_ACTIVE)
marsio_buff_t *dup_mbuf = NULL;
struct gtest_frame *gtest_frame = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_ctrl_pkt(tx_mbuf, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
dup_mbuf = marsio_mbuff_dup(tx_mbuf);
gtest_frame = gtest_frame_new("sce0.json", "ctr_pkt_active");

View File

@@ -19,7 +19,7 @@ TEST(PACKET_IO, DATA_PKT_ERROR_BYPASS)
marsio_buff_t *dup_mbuf = NULL;
struct gtest_frame *gtest_frame = NULL;
build_mbuf_for_data_pkt(tx_mbuf, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_data_pkt(tx_mbuf, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf = marsio_mbuff_dup(tx_mbuf);
gtest_frame = gtest_frame_new("sce0.json", "data_pkt_error_bypass");

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -36,8 +37,8 @@ TEST(PACKET_IO, DATA_PKT_MIRR_BLOCK)
marsio_buff_t *dup_mbuf2 = NULL;
struct gtest_frame *gtest_frame = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -36,8 +37,8 @@ TEST(PACKET_IO, DATA_PKT_MIRR_BYPASS)
marsio_buff_t *dup_mbuf2 = NULL;
struct gtest_frame *gtest_frame = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -39,8 +40,8 @@ TEST(PACKET_IO, DATA_PKT_MIRR_FORWARD)
struct gtest_frame *gtest_frame = NULL;
struct mr_instance *mr_instance = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -39,8 +40,8 @@ TEST(PACKET_IO, DATA_PKT_MIRR_RX_DROP)
struct gtest_frame *gtest_frame = NULL;
struct mr_instance *mr_instance = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -35,8 +36,8 @@ TEST(PACKET_IO, DATA_PKT_STEE_BLOCK)
marsio_buff_t *dup_mbuf1 = NULL;
struct gtest_frame *gtest_frame = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
gtest_frame = gtest_frame_new("data_pkt_stee_block.json", "data_pkt_stee_block");

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -36,8 +37,8 @@ TEST(PACKET_IO, DATA_PKT_STEE_BYPASS)
marsio_buff_t *dup_mbuf2 = NULL;
struct gtest_frame *gtest_frame = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -37,8 +38,8 @@ TEST(PACKET_IO, DATA_PKT_STEE_FORWARD)
struct gtest_frame *gtest_frame = NULL;
struct mr_instance *mr_instance = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,11 +9,12 @@ static u_char ctrl_pkt_active[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 145 bytes
static u_char data_pkt[] = {
@@ -38,8 +39,8 @@ TEST(PACKET_IO, DATA_PKT_STEE_RX_EGRESS)
struct gtest_frame *gtest_frame = NULL;
struct mr_instance *mr_instance = NULL;
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581737, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581737, 0);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active, sizeof(ctrl_pkt_active), 290484492702581760, 54);
build_mbuf_for_data_pkt(tx_mbuf2, data_pkt, sizeof(data_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);

View File

@@ -1,6 +1,6 @@
#include "gtest_utils.h"
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active_for_raw_pkt[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -9,13 +9,14 @@ static u_char ctrl_pkt_active_for_raw_pkt[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x7F};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
// 147 bytes
// 160 bytes
static u_char ctrl_pkt_active_for_decrypted_pkt[] = {
// Eth + IPv4 + TCP
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
@@ -24,11 +25,12 @@ static u_char ctrl_pkt_active_for_decrypted_pkt[] = {
0x04, 0x88, 0x7a, 0xe8, 0x00, 0x00,
// msg payload
0x85, 0xA5, 0x74, 0x73, 0x79, 0x6E, 0x63, 0xA3, 0x32, 0x2E, 0x30, 0xAA, 0x73, 0x65, 0x73, 0x73,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x03, 0xE9, 0xA5,
0x69, 0x6F, 0x6E, 0x5F, 0x69, 0x64, 0xCF, 0x04, 0x08, 0x02, 0x1B, 0x68, 0x4C, 0x04, 0x00, 0xA5,
0x73, 0x74, 0x61, 0x74, 0x65, 0xA6, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xA6, 0x6D, 0x65, 0x74,
0x68, 0x6F, 0x64, 0xAD, 0x70, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x5F, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0xA6, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x73, 0x81, 0xA3, 0x73, 0x63, 0x65, 0x81, 0xA8, 0x72,
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xCE, 0x00, 0x0F, 0x2F, 0x80};
0x75, 0x6C, 0x65, 0x5F, 0x69, 0x64, 0x73, 0x91, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02};
// 145 bytes
static u_char raw_pkt[] = {
@@ -72,16 +74,16 @@ TEST(PACKET_IO, MIX_PKT_STEE_FORWARD)
struct mr_instance *mr_instance = NULL;
// build ctrl packet for raw packet
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active_for_raw_pkt, sizeof(ctrl_pkt_active_for_raw_pkt), 290484492702581737, 54);
build_mbuf_for_ctrl_pkt(tx_mbuf1, ctrl_pkt_active_for_raw_pkt, sizeof(ctrl_pkt_active_for_raw_pkt), 290484492702581760, 54);
// build raw packet
build_mbuf_for_data_pkt(tx_mbuf2, raw_pkt, sizeof(raw_pkt), 290484492702581737, 0);
build_mbuf_for_data_pkt(tx_mbuf2, raw_pkt, sizeof(raw_pkt), 290484492702581760, 0);
dup_mbuf1 = marsio_mbuff_dup(tx_mbuf1);
dup_mbuf2 = marsio_mbuff_dup(tx_mbuf2);
// build ctrl packet for decrypted packet
build_mbuf_for_ctrl_pkt(tx_mbuf3, ctrl_pkt_active_for_decrypted_pkt, sizeof(ctrl_pkt_active_for_decrypted_pkt), 290484492702581737, 54);
build_mbuf_for_ctrl_pkt(tx_mbuf3, ctrl_pkt_active_for_decrypted_pkt, sizeof(ctrl_pkt_active_for_decrypted_pkt), 290484492702581760, 54);
// build decrypted packet
build_mbuf_for_data_pkt(tx_mbuf4, decrypted_pkt, sizeof(decrypted_pkt), 290484492702581737, 1);
build_mbuf_for_data_pkt(tx_mbuf4, decrypted_pkt, sizeof(decrypted_pkt), 290484492702581760, 1);
dup_mbuf3 = marsio_mbuff_dup(tx_mbuf3);
dup_mbuf4 = marsio_mbuff_dup(tx_mbuf4);

View File

@@ -17,7 +17,7 @@ breakpad_minidump_dir=/run/sce/crashreport
breakpad_upload_tools=/opt/tsg/framework/bin/minidump_upload
[maat]
# 0:json 1:redis 2:iris
# 0:json 1:redis
input_mode=0
# LOG_LEVEL_TRACE = 0; LOG_LEVEL_DEBUG = 1; LOG_LEVEL_INFO = 2;
# LOG_LEVEL_WARN = 3; LOG_LEVEL_ERROR = 4; LOG_LEVEL_FATAL = 5;
@@ -29,8 +29,6 @@ deferred_load=0
stat_file=log/maat.fs2
table_info=resource/table_info.conf
accept_path=/opt/tsg/etc/tsg_device_tag.json
inc_cfg_dir=resource/inc/
ful_cfg_dir=resource/ful/
json_cfg_file=resource/sce.json
foreign_cont_dir=resource/foreign_files
redis_db_idx=0
@@ -84,6 +82,7 @@ local_address=127.0.0.1
gateway=127.0.0.1
[kafka]
enable_debug=0
brokerlist=192.168.40.224:9092
sasl_username=admin
sasl_passwd=galaxy2019

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:30:56 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 1 147 1 147 0 0 0 0
sum 1 160 1 160 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 0 0 0 0 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 1 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:34:59 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 2 292 0 0 0 0
sum 2 305 2 305 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 1 145 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:34:24 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 2 292 0 0 0 0
sum 2 305 2 305 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 1 145 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:35:26 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 2 292 0 0 0 0
sum 2 305 2 305 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 1 145 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 1 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:36:09 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 2 292 0 0 0 0
sum 2 305 2 305 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 1 145 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 1 145 1 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:32:36 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 1 147 0 0 0 0
sum 2 305 1 160 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 0 0 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:32:04 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 2 292 0 0 0 0
sum 2 305 2 305 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 1 145 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:33:12 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 1 147 0 0 0 0
sum 2 305 1 160 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 0 0 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 1 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:33:53 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 2 292 2 292 0 0 0 0
sum 2 305 2 305 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 1 145 0 0 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 1 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 1 147 1 147 0 1 0 0
sum 1 160 1 160 0 1 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -1,6 +1,6 @@
============================================================Sat Mar 2 17:38:11 2024============================================================
dev_nf_rx_P dev_nf_rx_B dev_nf_tx_P dev_nf_tx_B kee_d_rx_P kee_d_rx_B kee_d_tx_P kee_d_tx_B
sum 4 584 2 294 0 0 0 0
sum 4 610 2 320 0 0 0 0
speed/s 0 0 0 0 0 0 0 0
raw_rx_P raw_rx_B raw_tx_P raw_tx_B dec_rx_P dec_rx_B dec_tx_P dec_tx_B
sum 1 145 0 0 1 145 0 0
@@ -21,7 +21,7 @@ speed/s 0 0 0 0 0 0
sum 0 0 0 0 0 0 2 0
speed/s 0 0 0 0 0 0 0 0
ctrl_rx_P ctrl_rx_B ctrl_tx_P ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
sum 2 294 2 294 0 2 0 0
sum 2 320 2 320 0 2 0 0
speed/s 0 0 0 0 0 0 0 0
ctrl_error curr_sessions session_logs session_new session_free stateless_inject_P stateless_inject_B
sum 0 1 0 1 0 0 0

View File

@@ -3,19 +3,57 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t2\thash-int-ip\tnearby\tblock\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 2,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,19 +3,57 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t2\thash-int-ip\tnearby\tbypass\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 2,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,19 +3,57 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t2\thash-int-ip\tglobal\tbypass\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 2,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "global",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,19 +3,57 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t1\thash-int-ip\tnearby\tblock\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "block",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,19 +3,57 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t1\thash-int-ip\tnearby\tbypass\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "nearby",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,19 +3,57 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t1\thash-int-ip\tglobal\tbypass\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "global",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,22 +3,98 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1",
"2\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"2.2.2.2\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-3333-000000000002",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "2.2.2.2"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t1\thash-int-ip\tglobal\tbypass\tnull\t[1]\t1",
"2\t1\thash-ext-ip\tglobal\tbypass\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "global",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-2222-000000000002",
"type": 1,
"load_balance_method": "hash-ext-ip",
"load_balance_localization": "global",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1",
"995200\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"decrypted\",\"sff_profiles\":[2]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
},
{
"uuid": "00000000-0000-0000-1111-000000000002",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "decrypted",
"sff_profiles": [
"00000000-0000-0000-2222-000000000002"
]
},
"is_valid": 1
}
]
}
]

View File

@@ -3,19 +3,57 @@
{
"table_name": "SERVICE_FUNCTION_PROFILE",
"table_content": [
"1\t{\"tag\":\"device_group\",\"value\":\"device_group_a\"}\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1"
{
"uuid": "00000000-0000-0000-3333-000000000001",
"device_group": {
"tag": "device_group",
"value": "device_group_a"
},
"admin_status": 1,
"connectivity": {
"method": "vxlan_g",
"dest_ip": "1.1.1.1"
},
"health_check": {
"method": "none"
},
"vsys_id": 1,
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_FUNCTION_FORWARDER_PROFILE",
"table_content": [
"1\t1\thash-int-ip\tglobal\tbypass\tnull\t[1]\t1"
{
"uuid": "00000000-0000-0000-2222-000000000001",
"type": 1,
"load_balance_method": "hash-int-ip",
"load_balance_localization": "global",
"failure_action": "bypass",
"service_func_profiles": [
"00000000-0000-0000-3333-000000000001"
],
"is_valid": 1
}
]
},
{
"table_name": "SERVICE_CHAINING_COMPILE",
"table_name": "SERVICE_CHAINING_RULE",
"table_content": [
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t0\t1"
{
"uuid": "00000000-0000-0000-1111-000000000001",
"log_option": "all",
"effective_range": {},
"action_parameter": {
"vsys_id": 1,
"targeted_traffic": "raw",
"sff_profiles": [
"00000000-0000-0000-2222-000000000001"
]
},
"is_valid": 1
}
]
}
]