SCE支持动态更新sid list; SCE存储raw packet/decrypted packet共计4个方向的metadata
This commit is contained in:
@@ -58,6 +58,7 @@ struct metadata
|
||||
|
||||
struct metadata *metadata_new();
|
||||
int metadata_is_empty(struct metadata *meta);
|
||||
void metadata_shallow_copy(struct metadata *dst, struct metadata *src);
|
||||
void metadata_deep_copy(struct metadata *dst, struct metadata *src);
|
||||
void metadata_free(struct metadata *meta);
|
||||
|
||||
@@ -73,6 +74,8 @@ struct session_ctx
|
||||
struct addr_tuple4 inner_tuple4;
|
||||
struct fixed_num_array rule_ids;
|
||||
|
||||
struct metadata *decrypted_meta_i2e;
|
||||
struct metadata *decrypted_meta_e2i;
|
||||
struct metadata *raw_meta_i2e;
|
||||
struct metadata *raw_meta_e2i;
|
||||
struct metadata *ctrl_meta;
|
||||
|
||||
@@ -185,6 +185,92 @@ int mbuff_set_metadata(marsio_buff_t *tx_buff, struct metadata *meta)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void update_session_by_metadata(struct session_ctx *ctx, struct metadata *meta)
|
||||
{
|
||||
struct metadata *dst_meta_i2e = NULL;
|
||||
struct metadata *dst_meta_e2i = NULL;
|
||||
|
||||
if (meta->is_decrypted)
|
||||
{
|
||||
dst_meta_i2e = ctx->decrypted_meta_i2e;
|
||||
dst_meta_e2i = ctx->decrypted_meta_e2i;
|
||||
}
|
||||
else
|
||||
{
|
||||
dst_meta_i2e = ctx->raw_meta_i2e;
|
||||
dst_meta_e2i = ctx->raw_meta_e2i;
|
||||
}
|
||||
|
||||
if (meta->is_e2i_dir)
|
||||
{
|
||||
// first packet update metadata
|
||||
if (metadata_is_empty(dst_meta_e2i))
|
||||
{
|
||||
metadata_shallow_copy(dst_meta_e2i, meta);
|
||||
}
|
||||
else
|
||||
{
|
||||
// next packet only update sids
|
||||
sids_copy(&dst_meta_e2i->sids, &meta->sids);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// first packet update metadata
|
||||
if (metadata_is_empty(dst_meta_i2e))
|
||||
{
|
||||
metadata_shallow_copy(dst_meta_i2e, meta);
|
||||
}
|
||||
else
|
||||
{
|
||||
// next packet only update sids
|
||||
sids_copy(&dst_meta_i2e->sids, &meta->sids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void update_metadata_by_session(struct session_ctx *ctx, struct metadata *meta)
|
||||
{
|
||||
struct sids *sids = NULL;
|
||||
struct route_ctx *route_ctx = NULL;
|
||||
|
||||
meta->session_id = ctx->session_id;
|
||||
|
||||
if (meta->is_e2i_dir)
|
||||
{
|
||||
if (meta->is_decrypted)
|
||||
{
|
||||
sids = &ctx->decrypted_meta_e2i->sids;
|
||||
route_ctx = &ctx->decrypted_meta_e2i->route_ctx;
|
||||
}
|
||||
else
|
||||
{
|
||||
sids = &ctx->raw_meta_e2i->sids;
|
||||
route_ctx = &ctx->raw_meta_e2i->route_ctx;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (meta->is_decrypted)
|
||||
{
|
||||
sids = &ctx->decrypted_meta_i2e->sids;
|
||||
route_ctx = &ctx->decrypted_meta_i2e->route_ctx;
|
||||
}
|
||||
else
|
||||
{
|
||||
sids = &ctx->raw_meta_i2e->sids;
|
||||
route_ctx = &ctx->raw_meta_i2e->route_ctx;
|
||||
}
|
||||
}
|
||||
|
||||
sids_copy(&meta->sids, sids);
|
||||
route_ctx_copy(&meta->route_ctx, route_ctx);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* keepalive
|
||||
******************************************************************************/
|
||||
|
||||
// return 0 : not keepalive packet
|
||||
// return 1 : is keepalive packet
|
||||
static int is_downlink_keepalive_packet(marsio_buff_t *rx_buff)
|
||||
@@ -902,13 +988,13 @@ static void handle_raw_packet(marsio_buff_t *rx_buff, struct thread_ctx *thread_
|
||||
// bypass_traffic:3 bypass decrypted traffic
|
||||
if (unlikely(thread_ctx->ref_io->config.bypass_traffic == 2 && meta.is_decrypted == 0))
|
||||
{
|
||||
LOG_DEBUG("%s: session %lu bypass, enable raw traffic bypass !!!", LOG_TAG_PKTIO);
|
||||
LOG_DEBUG("%s: session %lu bypass, enable raw traffic bypass !!!", LOG_TAG_PKTIO, meta.session_id);
|
||||
goto error_bypass;
|
||||
}
|
||||
|
||||
if (unlikely(thread_ctx->ref_io->config.bypass_traffic == 3 && meta.is_decrypted == 1))
|
||||
{
|
||||
LOG_DEBUG("%s: session %lu bypass, enable decrypted traffic bypass !!!", LOG_TAG_PKTIO);
|
||||
LOG_DEBUG("%s: session %lu bypass, enable decrypted traffic bypass !!!", LOG_TAG_PKTIO, meta.session_id);
|
||||
goto error_bypass;
|
||||
}
|
||||
|
||||
@@ -919,20 +1005,7 @@ static void handle_raw_packet(marsio_buff_t *rx_buff, struct thread_ctx *thread_
|
||||
goto error_bypass;
|
||||
}
|
||||
|
||||
if (meta.is_e2i_dir)
|
||||
{
|
||||
if (metadata_is_empty(session_ctx->raw_meta_e2i))
|
||||
{
|
||||
metadata_deep_copy(session_ctx->raw_meta_e2i, &meta);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (metadata_is_empty(session_ctx->raw_meta_i2e))
|
||||
{
|
||||
metadata_deep_copy(session_ctx->raw_meta_i2e, &meta);
|
||||
}
|
||||
}
|
||||
update_session_by_metadata(session_ctx, &meta);
|
||||
|
||||
if (meta.is_decrypted == 1)
|
||||
{
|
||||
@@ -988,17 +1061,7 @@ static void handle_inject_packet(marsio_buff_t *rx_buff, struct thread_ctx *thre
|
||||
goto error_block;
|
||||
}
|
||||
|
||||
meta.session_id = session_ctx->session_id;
|
||||
if (meta.is_e2i_dir)
|
||||
{
|
||||
sids_copy(&meta.sids, &session_ctx->raw_meta_e2i->sids);
|
||||
route_ctx_copy(&meta.route_ctx, &session_ctx->raw_meta_e2i->route_ctx);
|
||||
}
|
||||
else
|
||||
{
|
||||
sids_copy(&meta.sids, &session_ctx->raw_meta_i2e->sids);
|
||||
route_ctx_copy(&meta.route_ctx, &session_ctx->raw_meta_i2e->route_ctx);
|
||||
}
|
||||
update_metadata_by_session(session_ctx, &meta);
|
||||
|
||||
if (meta.is_decrypted == 1)
|
||||
{
|
||||
|
||||
@@ -28,6 +28,21 @@ int metadata_is_empty(struct metadata *meta)
|
||||
}
|
||||
}
|
||||
|
||||
void metadata_shallow_copy(struct metadata *dst, struct metadata *src)
|
||||
{
|
||||
dst->write_ref++;
|
||||
dst->session_id = src->session_id;
|
||||
dst->raw_data = NULL;
|
||||
dst->raw_len = 0;
|
||||
dst->l7offset = src->l7offset;
|
||||
dst->is_e2i_dir = src->is_e2i_dir;
|
||||
dst->is_ctrl_pkt = src->is_ctrl_pkt;
|
||||
dst->is_decrypted = src->is_decrypted;
|
||||
|
||||
sids_copy(&dst->sids, &src->sids);
|
||||
route_ctx_copy(&dst->route_ctx, &src->route_ctx);
|
||||
}
|
||||
|
||||
void metadata_deep_copy(struct metadata *dst, struct metadata *src)
|
||||
{
|
||||
dst->write_ref++;
|
||||
@@ -70,6 +85,8 @@ struct session_ctx *session_ctx_new()
|
||||
|
||||
fixed_num_array_init(&session_ctx->rule_ids);
|
||||
|
||||
session_ctx->decrypted_meta_i2e = metadata_new();
|
||||
session_ctx->decrypted_meta_e2i = metadata_new();
|
||||
session_ctx->raw_meta_i2e = metadata_new();
|
||||
session_ctx->raw_meta_e2i = metadata_new();
|
||||
session_ctx->ctrl_meta = metadata_new();
|
||||
@@ -81,6 +98,18 @@ void session_ctx_free(struct session_ctx *session_ctx)
|
||||
{
|
||||
if (session_ctx)
|
||||
{
|
||||
if (session_ctx->decrypted_meta_i2e)
|
||||
{
|
||||
metadata_free(session_ctx->decrypted_meta_i2e);
|
||||
session_ctx->decrypted_meta_i2e = NULL;
|
||||
}
|
||||
|
||||
if (session_ctx->decrypted_meta_e2i)
|
||||
{
|
||||
metadata_free(session_ctx->decrypted_meta_e2i);
|
||||
session_ctx->decrypted_meta_e2i = NULL;
|
||||
}
|
||||
|
||||
if (session_ctx->raw_meta_i2e)
|
||||
{
|
||||
metadata_free(session_ctx->raw_meta_i2e);
|
||||
|
||||
@@ -120,6 +120,15 @@ target_include_directories(gtest_raw_pkt_error_bypass PUBLIC ${CMAKE_SOURCE_DIR}
|
||||
target_include_directories(gtest_raw_pkt_error_bypass PUBLIC ${CMAKE_SOURCE_DIR}/platform/include)
|
||||
target_link_libraries(gtest_raw_pkt_error_bypass temp_platform gtest)
|
||||
|
||||
###############################################################################
|
||||
# gtest_mix_pkt_stee_forward
|
||||
###############################################################################
|
||||
|
||||
add_executable(gtest_mix_pkt_stee_forward gtest_mix_pkt_stee_forward.cpp)
|
||||
target_include_directories(gtest_mix_pkt_stee_forward PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
|
||||
target_include_directories(gtest_mix_pkt_stee_forward PUBLIC ${CMAKE_SOURCE_DIR}/platform/include)
|
||||
target_link_libraries(gtest_mix_pkt_stee_forward temp_platform gtest)
|
||||
|
||||
###############################################################################
|
||||
# gtest_discover_tests
|
||||
###############################################################################
|
||||
@@ -140,6 +149,7 @@ gtest_discover_tests(gtest_raw_pkt_mirr_forward)
|
||||
gtest_discover_tests(gtest_raw_pkt_mirr_rx_drop)
|
||||
|
||||
gtest_discover_tests(gtest_raw_pkt_error_bypass)
|
||||
gtest_discover_tests(gtest_mix_pkt_stee_forward)
|
||||
|
||||
file(COPY ./test_data/log/ DESTINATION ./log/)
|
||||
file(COPY ./test_data/conf/ DESTINATION ./conf/)
|
||||
|
||||
124
test/gtest_mix_pkt_stee_forward.cpp
Normal file
124
test/gtest_mix_pkt_stee_forward.cpp
Normal file
@@ -0,0 +1,124 @@
|
||||
#include "gtest_utils.h"
|
||||
|
||||
// 147 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,
|
||||
0x00, 0xab, 0x76, 0x23, 0x40, 0x00, 0x7d, 0x06, 0x67, 0x66, 0xc0, 0xa8, 0x29, 0x40, 0x5d, 0xb8,
|
||||
0xd8, 0x22, 0xce, 0xec, 0x00, 0x50, 0xf8, 0x77, 0x0e, 0x1e, 0x47, 0x34, 0x32, 0xb9, 0x50, 0x18,
|
||||
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,
|
||||
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};
|
||||
|
||||
// 147 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,
|
||||
0x00, 0xab, 0x76, 0x23, 0x40, 0x00, 0x7d, 0x06, 0x67, 0x66, 0xc0, 0xa8, 0x29, 0x40, 0x5d, 0xb8,
|
||||
0xd8, 0x22, 0xce, 0xec, 0x00, 0x50, 0xf8, 0x77, 0x0e, 0x1e, 0x47, 0x34, 0x32, 0xb9, 0x50, 0x18,
|
||||
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,
|
||||
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};
|
||||
|
||||
// 145 bytes
|
||||
static u_char raw_pkt[] = {
|
||||
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
|
||||
0x00, 0x83, 0x46, 0x1f, 0x40, 0x00, 0x40, 0x06, 0xd4, 0x92, 0xc0, 0xa8, 0x29, 0x40, 0x5d, 0xb8,
|
||||
0xd8, 0x22, 0xce, 0xec, 0x00, 0x50, 0xf8, 0x77, 0x0d, 0xcf, 0x47, 0x34, 0x32, 0xb9, 0x80, 0x18,
|
||||
0xfa, 0xf0, 0xad, 0xf4, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x45, 0xfc, 0x39, 0x3d, 0xc1, 0x1f,
|
||||
0x8d, 0x76, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
|
||||
0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d,
|
||||
0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67,
|
||||
0x65, 0x6e, 0x74, 0x3a, 0x20, 0x63, 0x75, 0x72, 0x6c, 0x2f, 0x37, 0x2e, 0x36, 0x31, 0x2e, 0x31,
|
||||
0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d,
|
||||
0x0a};
|
||||
|
||||
// 145 bytes
|
||||
static u_char decrypted_pkt[] = {
|
||||
0x48, 0x73, 0x97, 0x96, 0x38, 0x10, 0x0c, 0xa7, 0x5c, 0x64, 0x00, 0x01, 0x08, 0x00, 0x45, 0x00,
|
||||
0x00, 0x83, 0x46, 0x1f, 0x40, 0x00, 0x40, 0x06, 0xd4, 0x92, 0xc0, 0xa8, 0x29, 0x40, 0x5d, 0xb8,
|
||||
0xd8, 0x22, 0xce, 0xec, 0x00, 0x50, 0xf8, 0x77, 0x0d, 0xcf, 0x47, 0x34, 0x32, 0xb9, 0x80, 0x18,
|
||||
0xfa, 0xf0, 0xad, 0xf4, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x45, 0xfc, 0x39, 0x3d, 0xc1, 0x1f,
|
||||
0x8d, 0x76, 0x47, 0x45, 0x54, 0x20, 0x2f, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31,
|
||||
0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x78, 0x61, 0x6d,
|
||||
0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x0d, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67,
|
||||
0x65, 0x6e, 0x74, 0x3a, 0x20, 0x63, 0x75, 0x72, 0x6c, 0x2f, 0x37, 0x2e, 0x36, 0x31, 0x2e, 0x31,
|
||||
0x0d, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a, 0x0d,
|
||||
0x0a};
|
||||
|
||||
TEST(PACKET_IO, MIX_PKT_STEE_FORWARD)
|
||||
{
|
||||
marsio_buff_t *tx_mbuf1 = NULL;
|
||||
marsio_buff_t *tx_mbuf2 = NULL;
|
||||
marsio_buff_t *tx_mbuf3 = NULL;
|
||||
marsio_buff_t *tx_mbuf4 = NULL;
|
||||
|
||||
marsio_buff_t *dup_mbuf1 = NULL;
|
||||
marsio_buff_t *dup_mbuf2 = NULL;
|
||||
marsio_buff_t *dup_mbuf3 = NULL;
|
||||
marsio_buff_t *dup_mbuf4 = NULL;
|
||||
|
||||
struct gtest_frame *gtest_frame = NULL;
|
||||
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 raw packet
|
||||
build_mbuf_for_raw_pkt(tx_mbuf2, raw_pkt, sizeof(raw_pkt), 290484492702581737, 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 decrypted packet
|
||||
build_mbuf_for_raw_pkt(tx_mbuf4, decrypted_pkt, sizeof(decrypted_pkt), 290484492702581737, 1);
|
||||
dup_mbuf3 = marsio_mbuff_dup(tx_mbuf3);
|
||||
dup_mbuf4 = marsio_mbuff_dup(tx_mbuf4);
|
||||
|
||||
gtest_frame = gtest_frame_new("mix_pkt_stee_forward.json", "mix_pkt_stee_forward");
|
||||
mr_instance = packet_io_get_mr_instance(gtest_frame->sce_ctx->io);
|
||||
|
||||
// recv ctrl packet of raw packet from nf
|
||||
// send ctrl packet of raw packet to nf
|
||||
gtest_frame_run(gtest_frame, tx_mbuf1, dup_mbuf1, 1);
|
||||
// recv ctrl packet of decrypted packet from nf
|
||||
// send ctrl packet of decrypted packet to nf
|
||||
gtest_frame_run(gtest_frame, tx_mbuf3, dup_mbuf3, 1);
|
||||
// recv raw packet from nf
|
||||
// send vxlan packet to sf
|
||||
marsio_set_recv_mbuff(mr_instance, tx_mbuf2);
|
||||
EXPECT_TRUE(packet_io_thread_polling_nf(gtest_frame->sce_ctx->io, >est_frame->sce_ctx->work_threads[0]) == 1);
|
||||
EXPECT_TRUE(mbuff_cmp_payload(dup_mbuf2, marsio_get_send_mbuff(mr_instance)) == 0);
|
||||
// recv decrypted packet from nf
|
||||
// send vxlan packet to sf
|
||||
marsio_set_recv_mbuff(mr_instance, tx_mbuf4);
|
||||
EXPECT_TRUE(packet_io_thread_polling_nf(gtest_frame->sce_ctx->io, >est_frame->sce_ctx->work_threads[0]) == 1);
|
||||
EXPECT_TRUE(mbuff_cmp_payload(dup_mbuf4, marsio_get_send_mbuff(mr_instance)) == 0);
|
||||
|
||||
gtest_frame_log(gtest_frame);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &tx_mbuf1, 1, 0, 0);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &tx_mbuf2, 1, 0, 0);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &tx_mbuf3, 1, 0, 0);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &tx_mbuf4, 1, 0, 0);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &dup_mbuf1, 1, 0, 0);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &dup_mbuf2, 1, 0, 0);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &dup_mbuf3, 1, 0, 0);
|
||||
marsio_buff_free(packet_io_get_mr_instance(gtest_frame->sce_ctx->io), &dup_mbuf4, 1, 0, 0);
|
||||
gtest_frame_free(gtest_frame);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
@@ -39,8 +39,11 @@ redis_port_range=6379
|
||||
max_chaining_size=32
|
||||
|
||||
[packet_io]
|
||||
# bypass_all_traffic:1 NF2NF and SF2SF
|
||||
bypass_all_traffic=0
|
||||
# bypass_traffic:0 disable
|
||||
# bypass_traffic:1 bypass all traffic
|
||||
# bypass_traffic:2 bypass raw traffic
|
||||
# bypass_traffic:3 bypass decrypted traffic
|
||||
bypass_traffic=0
|
||||
rx_burst_max=128
|
||||
app_symbol=sce
|
||||
dev_endpoint=eth_sf_endpoint
|
||||
|
||||
23
test/test_data/log/test_mix_pkt_stee_forward_ok.fs2
Normal file
23
test/test_data/log/test_mix_pkt_stee_forward_ok.fs2
Normal file
@@ -0,0 +1,23 @@
|
||||
============================================================Fri May 5 11:08:21 2023============================================================
|
||||
nf_rx_pkt nf_rx_B nf_tx_pkt nf_tx_B endp_rx_pkt endp_rx_B endp_tx_pkt endp_tx_B
|
||||
sum 4 584 2 294 0 0 2 390
|
||||
speed/s 0 0 0 0 0 0 0 0
|
||||
kee_d_rx_pkt kee_d_rx_B kee_d_tx_pkt kee_d_tx_B kee_u_rx_pkt kee_u_rx_B kee_u_rxdop_pkt kee_u_rxdop_B
|
||||
sum 0 0 0 0 0 0 0 0
|
||||
speed/s 0 0 0 0 0 0 0 0
|
||||
mirr_bypass_pkt mirr_bypass_B mirr_block_pkt mirr_block_B mirr_rxdop_pkt mirr_rxdop_B mirro_tx_pkt mirro_tx_B
|
||||
sum 0 0 0 0 0 0 0 0
|
||||
speed/s 0 0 0 0 0 0 0 0
|
||||
stee_bypass_pkt stee_bypass_B stee_block_pkt stee_block_B stee_rx_pkt stee_rx_B stee_tx_pkt stee_tx_B
|
||||
sum 0 0 0 0 0 0 2 290
|
||||
speed/s 0 0 0 0 0 0 0 0
|
||||
miss_sess_pkt miss_sess_B err_bypass_pkt err_bypass_B err_block_pkt err_block_B endp_drop_pkt endp_drop_B
|
||||
sum 0 0 0 0 0 0 0 0
|
||||
speed/s 0 0 0 0 0 0 0 0
|
||||
ctrl_rx_pkt ctrl_rx_B ctrl_tx_pkt ctrl_tx_B ctrl_opening ctrl_active ctrl_closing ctrl_resetall
|
||||
sum 2 294 2 294 0 2 0 0
|
||||
speed/s 0 0 0 0 0 0 0 0
|
||||
ctrl_error session_num session_logs sf_active sf_inactive
|
||||
sum 0 1 0 2 0
|
||||
speed/s 0 0 0 0 0
|
||||
________________________________________________________________________________________________________________________________________________
|
||||
25
test/test_data/resource/mix_pkt_stee_forward.json
Normal file
25
test/test_data/resource/mix_pkt_stee_forward.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"plugin_table": [
|
||||
{
|
||||
"table_name": "SERVICE_FUNCTION_PROFILE",
|
||||
"table_content": [
|
||||
"1\tdevice_group_a\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"1.1.1.1\"}\t{\"method\":\"none\"}\t1\t1",
|
||||
"2\tdevice_group_a\t1\t{\"method\":\"vxlan_g\",\"dest_ip\":\"2.2.2.2\"}\t{\"method\":\"none\"}\t1\t1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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"
|
||||
]
|
||||
},
|
||||
{
|
||||
"table_name": "SERVICE_CHAINING_COMPILE",
|
||||
"table_content": [
|
||||
"995199\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"raw\",\"sff_profiles\":[1]}\t1\t2",
|
||||
"995200\t0\t2\t1\t1\t{}\t{\"vsys_id\":1,\"targeted_traffic\":\"decrypted\",\"sff_profiles\":[2]}\t1\t2"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user