summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author刘学利 <[email protected]>2023-05-30 13:13:52 +0000
committer刘学利 <[email protected]>2023-05-30 13:13:52 +0000
commit707bfcab119addc999c5a100dbdbc12d35244b12 (patch)
tree95f468f306c309b945531ec7eea625a6cc82679c
parent2375c4c18069c3ffc6a377718abffaea138d3ed2 (diff)
cmsg中数组类型为空时不再填写nil; cmsg中当tcp_wsacle不存在时,填充默认值0v6.0.15
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--src/tsg_sync_state.cpp60
-rw-r--r--test/src/gtest_sync_state.cpp161
3 files changed, 182 insertions, 41 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 31e53c4..2401cf6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,7 @@ variables:
BUILD_IMAGE_CENTOS8: "git.mesalab.cn:7443/mesa_platform/build-env:rockylinux"
BUILD_PADDING_PREFIX: /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX/
INSTALL_PREFIX: "/home/mesasoft/sapp_run/"
- INSTALL_DEPENDENCY_LIBRARY: systemd-devel libbreakpad_mini numactl-devel zlib-devel vim-common libMESA_handle_logger-devel libcjson-devel libMESA_field_stat2-devel sapp sapp-devel framework_env libMESA_prof_load-devel http-devel dns-devel ftp-devel mail-devel ssl-devel librdkafka-devel libmaat4-devel quic-devel mesa_sip-devel gtp-devel libMESA_htable-devel libasan mrzcpd rapidjson-devel libMESA_jump_layer-devel stratum-devel rdp-devel dtls-devel libfieldstat3-devel
+ INSTALL_DEPENDENCY_LIBRARY: systemd-devel libbreakpad_mini numactl-devel zlib-devel vim-common libMESA_handle_logger-devel-2.0.9.b677bb6 libcjson-devel libMESA_field_stat2-devel sapp sapp-devel framework_env libMESA_prof_load-devel http-devel dns-devel ftp-devel mail-devel ssl-devel librdkafka-devel libmaat4-devel quic-devel mesa_sip-devel gtp-devel libMESA_htable-devel libasan mrzcpd rapidjson-devel libMESA_jump_layer-devel stratum-devel rdp-devel dtls-devel libfieldstat3-devel
stages:
- analysis
diff --git a/src/tsg_sync_state.cpp b/src/tsg_sync_state.cpp
index 14e038f..da8174b 100644
--- a/src/tsg_sync_state.cpp
+++ b/src/tsg_sync_state.cpp
@@ -114,61 +114,41 @@ static void mpack_append_string(mpack_writer_t *writer, char *str)
static void mpack_append_fqdn_cat_ids(mpack_writer_t *writer, struct fqdn_cat_id_val *array)
{
- if (array->num > 0)
- {
- int num = MIN(array->num, FQDN_CAT_ID_VALS);
- mpack_build_array(writer);
- for (int i = 0; i < num; i++)
- {
- mpack_write_u32(writer, array->value[i]);
- }
- mpack_complete_array(writer);
- }
- else
+ int num = MIN(array->num, FQDN_CAT_ID_VALS);
+ mpack_build_array(writer);
+ for (int i = 0; i < num; i++)
{
- mpack_write_nil(writer);
+ mpack_write_u32(writer, array->value[i]);
}
+ mpack_complete_array(writer);
return;
}
static void mpack_append_tcp_sids(mpack_writer_t *writer, struct tcp_sids *array)
{
- if (array->num > 0)
- {
- int num = MIN(array->num, TCP_XXX_SIDS);
- mpack_build_array(writer);
- for (int i = 0; i < num; i++)
- {
- mpack_write_u16(writer, array->value[i]);
- }
- mpack_complete_array(writer);
- }
- else
+ int num = MIN(array->num, TCP_XXX_SIDS);
+ mpack_build_array(writer);
+ for (int i = 0; i < num; i++)
{
- mpack_write_nil(writer);
+ mpack_write_u16(writer, array->value[i]);
}
-
+ mpack_complete_array(writer);
+
return;
}
static void mpack_append_route_ctx(mpack_writer_t *writer, struct tcp_route_ctx *array)
{
- if (array->num > 0)
- {
- int num = MIN(array->num, TCP_XXX_ROUTE_CTX);
- mpack_build_array(writer);
- for (int i = 0; i < num; i++)
- {
- mpack_write_u8(writer, array->value[i]);
- }
- mpack_complete_array(writer);
- }
- else
+
+ int num = MIN(array->num, TCP_XXX_ROUTE_CTX);
+ mpack_build_array(writer);
+ for (int i = 0; i < num; i++)
{
- mpack_write_nil(writer);
+ mpack_write_u8(writer, array->value[i]);
}
-
+ mpack_complete_array(writer);
+
return;
}
@@ -194,8 +174,8 @@ static void mpack_append_cmsg_value(mpack_writer_t *writer, struct proxy_cmsg *c
}
else
{
- mpack_write_nil(writer);
- mpack_write_nil(writer);
+ mpack_write_u8(writer, 0);
+ mpack_write_u8(writer, 0);
}
mpack_write_u8(writer, cmsg->tcp_sack_client);
mpack_write_u8(writer, cmsg->tcp_sack_server);
diff --git a/test/src/gtest_sync_state.cpp b/test/src/gtest_sync_state.cpp
index f7827f8..d75c344 100644
--- a/test/src/gtest_sync_state.cpp
+++ b/test/src/gtest_sync_state.cpp
@@ -565,6 +565,167 @@ TEST(POLICY_UPDATE, Proxy)
gtest_cmsg_destroy(&cmsg);
}
+
+TEST(POLICY_UPDATE, ProxyTcpWsacleExist0)
+{
+ char ctrl_pkt_buf[1024] = {0};
+ int ctrl_pkt_len = 0;
+ struct streaminfo a_stream = {0};
+ struct update_policy test;
+ memset(&test, 0, sizeof(test));
+ struct proxy_cmsg cmsg;
+ test.type = POLICY_UPDATE_INTERCEPT;
+ test.n_ids = 6;
+ for (int i = 0; i < test.n_ids; i++)
+ {
+ test.ids[i] = 10000 + i;
+ }
+
+ gtest_cmsg_init(&cmsg);
+ cmsg.tcp_wsacle_exist = 0;
+ memcpy(&test.cmsg, &cmsg, sizeof(struct proxy_cmsg));
+ tsg_sync_policy_update(&a_stream, &test, 1);
+
+ ctrl_pkt_len = get_ctrl_pkt(ctrl_pkt_buf, sizeof(ctrl_pkt_buf));
+ mpack_tree_t tree;
+ mpack_tree_init_data(&tree, ctrl_pkt_buf, ctrl_pkt_len);
+ mpack_tree_parse(&tree);
+ mpack_node_t root = mpack_tree_root(&tree);
+ mpack_node_t params = mpack_node_map_cstr(root, "params");
+
+ // proxy
+ EXPECT_EQ(mpack_type_map, mpack_node_type(mpack_node_map_cstr(params, "proxy")));
+ mpack_node_t proxy_map = mpack_node_map_cstr(params, "proxy");
+
+ mpack_node_t tcp_handshake = mpack_node_map_cstr(proxy_map, "tcp_handshake");
+ EXPECT_EQ(1, mpack_node_u32(mpack_node_array_at(tcp_handshake, 0)));
+ EXPECT_EQ(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 4)));
+ EXPECT_EQ(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 5)));
+
+ EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok);
+ gtest_cmsg_destroy(&cmsg);
+}
+
+
+TEST(POLICY_UPDATE, ProxyFqdnCatIds0)
+{
+ char ctrl_pkt_buf[1024] = {0};
+ int ctrl_pkt_len = 0;
+ struct streaminfo a_stream = {0};
+ struct update_policy test;
+ memset(&test, 0, sizeof(test));
+ struct proxy_cmsg cmsg;
+ test.type = POLICY_UPDATE_INTERCEPT;
+ test.n_ids = 6;
+ for (int i = 0; i < test.n_ids; i++)
+ {
+ test.ids[i] = 10000 + i;
+ }
+
+ gtest_cmsg_init(&cmsg);
+ cmsg.fqdn_cat_ids.num = 0;
+ memcpy(&test.cmsg, &cmsg, sizeof(struct proxy_cmsg));
+ tsg_sync_policy_update(&a_stream, &test, 1);
+
+ ctrl_pkt_len = get_ctrl_pkt(ctrl_pkt_buf, sizeof(ctrl_pkt_buf));
+ mpack_tree_t tree;
+ mpack_tree_init_data(&tree, ctrl_pkt_buf, ctrl_pkt_len);
+ mpack_tree_parse(&tree);
+ mpack_node_t root = mpack_tree_root(&tree);
+ mpack_node_t params = mpack_node_map_cstr(root, "params");
+
+ // proxy
+ EXPECT_EQ(mpack_type_map, mpack_node_type(mpack_node_map_cstr(params, "proxy")));
+ mpack_node_t proxy_map = mpack_node_map_cstr(params, "proxy");
+
+ mpack_node_t tcp_handshake = mpack_node_map_cstr(proxy_map, "tcp_handshake");
+ mpack_node_t fqdn_cat_id_vals = mpack_node_array_at(tcp_handshake, 31);
+ EXPECT_EQ(0, mpack_node_array_length(fqdn_cat_id_vals));
+
+ EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok);
+ gtest_cmsg_destroy(&cmsg);
+}
+
+
+TEST(POLICY_UPDATE, ProxyTcpAckRouteCtxs0)
+{
+ char ctrl_pkt_buf[1024] = {0};
+ int ctrl_pkt_len = 0;
+ struct streaminfo a_stream = {0};
+ struct update_policy test;
+ memset(&test, 0, sizeof(test));
+ struct proxy_cmsg cmsg;
+ test.type = POLICY_UPDATE_INTERCEPT;
+ test.n_ids = 6;
+ for (int i = 0; i < test.n_ids; i++)
+ {
+ test.ids[i] = 10000 + i;
+ }
+
+ gtest_cmsg_init(&cmsg);
+ cmsg.tcp_ack_route_ctx.num = 0;
+ memcpy(&test.cmsg, &cmsg, sizeof(struct proxy_cmsg));
+ tsg_sync_policy_update(&a_stream, &test, 1);
+
+ ctrl_pkt_len = get_ctrl_pkt(ctrl_pkt_buf, sizeof(ctrl_pkt_buf));
+ mpack_tree_t tree;
+ mpack_tree_init_data(&tree, ctrl_pkt_buf, ctrl_pkt_len);
+ mpack_tree_parse(&tree);
+ mpack_node_t root = mpack_tree_root(&tree);
+ mpack_node_t params = mpack_node_map_cstr(root, "params");
+
+ // proxy
+ EXPECT_EQ(mpack_type_map, mpack_node_type(mpack_node_map_cstr(params, "proxy")));
+ mpack_node_t proxy_map = mpack_node_map_cstr(params, "proxy");
+
+ mpack_node_t tcp_handshake = mpack_node_map_cstr(proxy_map, "tcp_handshake");
+ mpack_node_t tcp_ack_route_ctxs = mpack_node_array_at(tcp_handshake, 35);
+ EXPECT_EQ(0, mpack_node_array_length(tcp_ack_route_ctxs));
+
+ EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok);
+ gtest_cmsg_destroy(&cmsg);
+}
+
+
+TEST(POLICY_UPDATE, ProxyTcpSeqSids0)
+{
+ char ctrl_pkt_buf[1024] = {0};
+ int ctrl_pkt_len = 0;
+ struct streaminfo a_stream = {0};
+ struct update_policy test;
+ memset(&test, 0, sizeof(test));
+ struct proxy_cmsg cmsg;
+ test.type = POLICY_UPDATE_INTERCEPT;
+ test.n_ids = 6;
+ for (int i = 0; i < test.n_ids; i++)
+ {
+ test.ids[i] = 10000 + i;
+ }
+
+ gtest_cmsg_init(&cmsg);
+ cmsg.tcp_seq_sids.num = 0;
+ memcpy(&test.cmsg, &cmsg, sizeof(struct proxy_cmsg));
+ tsg_sync_policy_update(&a_stream, &test, 1);
+
+ ctrl_pkt_len = get_ctrl_pkt(ctrl_pkt_buf, sizeof(ctrl_pkt_buf));
+ mpack_tree_t tree;
+ mpack_tree_init_data(&tree, ctrl_pkt_buf, ctrl_pkt_len);
+ mpack_tree_parse(&tree);
+ mpack_node_t root = mpack_tree_root(&tree);
+ mpack_node_t params = mpack_node_map_cstr(root, "params");
+
+ // proxy
+ EXPECT_EQ(mpack_type_map, mpack_node_type(mpack_node_map_cstr(params, "proxy")));
+ mpack_node_t proxy_map = mpack_node_map_cstr(params, "proxy");
+
+ mpack_node_t tcp_handshake = mpack_node_map_cstr(proxy_map, "tcp_handshake");
+ mpack_node_t tcp_seq_sids = mpack_node_array_at(tcp_handshake, 32);
+ EXPECT_EQ(0, mpack_node_array_length(tcp_seq_sids));
+
+ EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok);
+ gtest_cmsg_destroy(&cmsg);
+}
+
TEST(POLICY_UPDATE, ProxyOverLimit)
{
char ctrl_pkt_buf[1024] = {0};