diff options
| -rw-r--r-- | .gitlab-ci.yml | 2 | ||||
| -rw-r--r-- | src/tsg_entry.cpp | 2 | ||||
| -rw-r--r-- | src/tsg_proxy.cpp | 18 | ||||
| -rw-r--r-- | src/tsg_sync_state.cpp | 16 | ||||
| -rw-r--r-- | src/tsg_sync_state.h | 3 | ||||
| -rw-r--r-- | test/src/gtest_common.cpp | 2 | ||||
| -rw-r--r-- | test/src/gtest_sync_state.cpp | 61 |
7 files changed, 58 insertions, 46 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6fdadd5..3b68458 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-4.0.46.461d43c libmaat4-devel-4.0.46.461d43c quic-devel mesa_sip-devel gtp-devel libMESA_htable-devel libasan mrzcpd rapidjson-devel libMESA_jump_layer-devel stratum-devel rdp-devel dtls-devel-1.0.10.ab7166e libfieldstat3-devel openssl-devel + 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-4.0.48.2252578 libmaat4-devel-4.0.48.2252578 quic-devel mesa_sip-devel gtp-devel libMESA_htable-devel libasan mrzcpd rapidjson-devel libMESA_jump_layer-devel stratum-devel rdp-devel dtls-devel-1.0.10.ab7166e libfieldstat3-devel openssl-devel stages: - analysis diff --git a/src/tsg_entry.cpp b/src/tsg_entry.cpp index 3fed2bf..50dfcaa 100644 --- a/src/tsg_entry.cpp +++ b/src/tsg_entry.cpp @@ -1121,7 +1121,7 @@ int session_state_control_packet(const struct streaminfo *a_stream, void *payloa } int is_ctrl_pkt=0; - const void *raw_pkt = get_rawpkt_from_streaminfo(a_stream); + const void *raw_pkt = get_current_rawpkt_from_streaminfo(a_stream); int ret=get_opt_from_rawpkt(raw_pkt, RAW_PKT_GET_IS_CTRL_PKT, (void *)&is_ctrl_pkt); if(ret<0 || is_ctrl_pkt==0) { diff --git a/src/tsg_proxy.cpp b/src/tsg_proxy.cpp index 3c29b2a..dec7aa6 100644 --- a/src/tsg_proxy.cpp +++ b/src/tsg_proxy.cpp @@ -237,7 +237,7 @@ static int tsg_proxy_rawpkt_info_get(const void *raw_pkt, struct tsg_proxy_tcp_o void tsg_proxy_tcp_parse(struct tsg_proxy_tcp_attribute *tcp_attr, struct pkt_info *pktinfo, const struct streaminfo *stream) { - const void *raw_pkt = get_rawpkt_from_streaminfo(stream); + const void *raw_pkt = get_current_rawpkt_from_streaminfo(stream); if (!raw_pkt) { @@ -609,11 +609,17 @@ void tsg_proxy_update_policy_fill(const struct streaminfo *stream, struct update update_segment_sids(&cmsg->tcp_ack_sids, segment_ids->sid_list+1, segment_ids->sz_sidlist-1); // delete intercept sid update_segment_sids(&cmsg->tcp_ack_sids, server->sid_list.sid_list, server->sid_list.sz_sidlist); - if (client->wscale_set && server->wscale_set) { - cmsg->tcp_wsacle_exist = 1; - cmsg->tcp_wsacle_client = client->wscale; - cmsg->tcp_wsacle_server = server->wscale; - } + cmsg->tcp_wsacle_set_client = client->wscale_set; + cmsg->tcp_wsacle_set_server = server->wscale_set; + if (client->wscale_set) + { + cmsg->tcp_wsacle_client = client->wscale; + } + + if (server->wscale_set) + { + cmsg->tcp_wsacle_server = server->wscale; + } tsg_proxy_cmsg_subscriber_fill(session_attr, cmsg); tsg_proxy_cmsg_asn_fill(session_attr, cmsg); diff --git a/src/tsg_sync_state.cpp b/src/tsg_sync_state.cpp index b228629..38ea187 100644 --- a/src/tsg_sync_state.cpp +++ b/src/tsg_sync_state.cpp @@ -177,16 +177,12 @@ static void mpack_append_cmsg_value(mpack_writer_t *writer, struct proxy_cmsg *c mpack_write_u32(writer, cmsg->tcp_ack); mpack_write_u16(writer, cmsg->tcp_mss_client); mpack_write_u16(writer, cmsg->tcp_mss_server); - if (cmsg->tcp_wsacle_exist == 1) - { - mpack_write_u8(writer, cmsg->tcp_wsacle_client); - mpack_write_u8(writer, cmsg->tcp_wsacle_server); - } - else - { - mpack_write_u8(writer, 0); - mpack_write_u8(writer, 0); - } + + mpack_write_u8(writer, cmsg->tcp_wsacle_set_client); + mpack_write_u8(writer, cmsg->tcp_wsacle_set_server); + mpack_write_u8(writer, cmsg->tcp_wsacle_client); + mpack_write_u8(writer, cmsg->tcp_wsacle_server); + mpack_write_u8(writer, cmsg->tcp_sack_client); mpack_write_u8(writer, cmsg->tcp_sack_server); mpack_write_u8(writer, cmsg->tcp_ts_client); diff --git a/src/tsg_sync_state.h b/src/tsg_sync_state.h index 4b391e5..3021ecc 100644 --- a/src/tsg_sync_state.h +++ b/src/tsg_sync_state.h @@ -52,7 +52,8 @@ struct cmsg_buff struct proxy_cmsg { uint8_t tcp_info_packet_cur_dir; - uint8_t tcp_wsacle_exist; + uint8_t tcp_wsacle_set_client; + uint8_t tcp_wsacle_set_server; uint8_t tcp_wsacle_client; uint8_t tcp_wsacle_server; uint8_t tcp_sack_client; diff --git a/test/src/gtest_common.cpp b/test/src/gtest_common.cpp index 6c680f9..045f9e7 100644 --- a/test/src/gtest_common.cpp +++ b/test/src/gtest_common.cpp @@ -130,7 +130,7 @@ const void *get_this_layer_header(const struct streaminfo * pstream) return NULL; } -const void *get_rawpkt_from_streaminfo(const struct streaminfo *pstream) +const void *get_current_rawpkt_from_streaminfo(const struct streaminfo *pstream) { return (void*)1; } diff --git a/test/src/gtest_sync_state.cpp b/test/src/gtest_sync_state.cpp index cb9fd1e..31f7236 100644 --- a/test/src/gtest_sync_state.cpp +++ b/test/src/gtest_sync_state.cpp @@ -383,7 +383,8 @@ TEST(POLICY_UPDATE, ActiveStateServiceChainingAndShaping1) static void gtest_cmsg_init(struct proxy_cmsg *cmsg) { - cmsg->tcp_wsacle_exist = 1; + cmsg->tcp_wsacle_set_client = 1; + cmsg->tcp_wsacle_set_server = 1; cmsg->tcp_seq = 1; cmsg->tcp_ack = 2; cmsg->tcp_mss_client = 3; @@ -540,42 +541,42 @@ TEST(POLICY_UPDATE, 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(16, mpack_node_u32(mpack_node_array_at(tcp_handshake, 14))); + EXPECT_EQ(16, mpack_node_u32(mpack_node_array_at(tcp_handshake, 16))); - memcpy(test_str, mpack_node_str(mpack_node_array_at(tcp_handshake, 17)), mpack_node_strlen(mpack_node_array_at(tcp_handshake, 17))); + memcpy(test_str, mpack_node_str(mpack_node_array_at(tcp_handshake, 19)), mpack_node_strlen(mpack_node_array_at(tcp_handshake, 19))); EXPECT_STREQ("thisistest=2", test_str); memset(test_str, 0, sizeof(test_str)); - memcpy(test_str, mpack_node_str(mpack_node_array_at(tcp_handshake, 22)), mpack_node_strlen(mpack_node_array_at(tcp_handshake, 22))); + memcpy(test_str, mpack_node_str(mpack_node_array_at(tcp_handshake, 24)), mpack_node_strlen(mpack_node_array_at(tcp_handshake, 24))); EXPECT_STREQ("thisistest=7", test_str); memset(test_str, 0, sizeof(test_str)); - mpack_node_t fqdn_cat_id_vals = mpack_node_array_at(tcp_handshake, 25); + mpack_node_t fqdn_cat_id_vals = mpack_node_array_at(tcp_handshake, 27); EXPECT_EQ(4, mpack_node_array_length(fqdn_cat_id_vals)); for (int i = 0; i < 4; i++) { EXPECT_EQ(i + 1, mpack_node_u32(mpack_node_array_at(fqdn_cat_id_vals, i))); } - mpack_node_t tcp_ack_route_ctxs = mpack_node_array_at(tcp_handshake, 29); + mpack_node_t tcp_ack_route_ctxs = mpack_node_array_at(tcp_handshake, 31); EXPECT_EQ(mpack_type_bin, mpack_node_type(tcp_ack_route_ctxs)); memcpy(test_str, mpack_node_bin_data(tcp_ack_route_ctxs), mpack_node_bin_size(tcp_ack_route_ctxs)); EXPECT_STREQ("test: tcp_ack_route_ctx", test_str); memset(test_str, 0, sizeof(test_str)); - mpack_node_t tcp_seq_pkg_header = mpack_node_array_at(tcp_handshake, 30); + mpack_node_t tcp_seq_pkg_header = mpack_node_array_at(tcp_handshake, 32); EXPECT_EQ(mpack_type_bin, mpack_node_type(tcp_seq_pkg_header)); memcpy(test_str, mpack_node_bin_data(tcp_seq_pkg_header), mpack_node_bin_size(tcp_seq_pkg_header)); EXPECT_STREQ("test: c2s_rawpkt_header", test_str); memset(test_str, 0, sizeof(test_str)); - mpack_node_t tcp_ack_pkg_header = mpack_node_array_at(tcp_handshake, 31); + mpack_node_t tcp_ack_pkg_header = mpack_node_array_at(tcp_handshake, 33); EXPECT_EQ(mpack_type_bin, mpack_node_type(tcp_ack_pkg_header)); memcpy(test_str, mpack_node_bin_data(tcp_ack_pkg_header), mpack_node_bin_size(tcp_ack_pkg_header)); EXPECT_STREQ("test: s2c_rawpkt_header", test_str); memset(test_str, 0, sizeof(test_str)); - mpack_node_t tcp_is_intercept = mpack_node_array_at(tcp_handshake, 32); + mpack_node_t tcp_is_intercept = mpack_node_array_at(tcp_handshake, 34); EXPECT_EQ(0, mpack_node_u8(tcp_is_intercept)); EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); gtest_cmsg_destroy(&cmsg); @@ -614,7 +615,7 @@ TEST(POLICY_UPDATE, ProxyTcpIsIntercept) 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_is_intercept = mpack_node_array_at(tcp_handshake, 32); + mpack_node_t tcp_is_intercept = mpack_node_array_at(tcp_handshake, 34); EXPECT_EQ(3, mpack_node_u8(tcp_is_intercept)); EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); @@ -639,7 +640,8 @@ TEST(POLICY_UPDATE, ProxyPkgHeader0) gtest_cmsg_init(&cmsg); cmsg.tcp_s2c_rpkt_header.len = 0; cmsg.tcp_c2s_rpkt_header.len = 0; - cmsg.tcp_wsacle_exist = 0; + cmsg.tcp_wsacle_set_client = 0; + cmsg.tcp_wsacle_set_server = 0; memcpy(&test.cmsg, &cmsg, sizeof(struct proxy_cmsg)); tsg_sync_policy_update(&a_stream, &test, 1); @@ -656,12 +658,14 @@ TEST(POLICY_UPDATE, ProxyPkgHeader0) 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(0, mpack_node_bin_size(mpack_node_array_at(tcp_handshake, 30))); - EXPECT_NE(nullptr, mpack_node_bin_data(mpack_node_array_at(tcp_handshake, 31))); - EXPECT_EQ(0, mpack_node_bin_size(mpack_node_array_at(tcp_handshake, 30))); - EXPECT_NE(nullptr, mpack_node_bin_data(mpack_node_array_at(tcp_handshake, 31))); + EXPECT_EQ(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 4))); // tcp_wsacle_set_client + EXPECT_EQ(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 5))); // tcp_wsacle_set_server + EXPECT_EQ(6, mpack_node_u32(mpack_node_array_at(tcp_handshake, 6))); // tcp_wsacle_client + EXPECT_EQ(7, mpack_node_u32(mpack_node_array_at(tcp_handshake, 7))); // tcp_wsacle_server + EXPECT_EQ(0, mpack_node_bin_size(mpack_node_array_at(tcp_handshake, 32))); + EXPECT_NE(nullptr, mpack_node_bin_data(mpack_node_array_at(tcp_handshake, 33))); + EXPECT_EQ(0, mpack_node_bin_size(mpack_node_array_at(tcp_handshake, 32))); + EXPECT_NE(nullptr, mpack_node_bin_data(mpack_node_array_at(tcp_handshake, 33))); EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); gtest_cmsg_destroy(&cmsg); @@ -684,7 +688,10 @@ TEST(POLICY_UPDATE, ProxyTcpWsacleExist0) } gtest_cmsg_init(&cmsg); - cmsg.tcp_wsacle_exist = 0; + cmsg.tcp_wsacle_set_client = 0; + cmsg.tcp_wsacle_set_server = 0; + cmsg.tcp_wsacle_client = 0; + cmsg.tcp_wsacle_server = 0; memcpy(&test.cmsg, &cmsg, sizeof(struct proxy_cmsg)); tsg_sync_policy_update(&a_stream, &test, 1); @@ -701,8 +708,10 @@ TEST(POLICY_UPDATE, ProxyTcpWsacleExist0) 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(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 4))); // tcp_wsacle_set_client + EXPECT_EQ(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 5))); // tcp_wsacle_set_server + EXPECT_EQ(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 6))); // tcp_wsacle_client + EXPECT_EQ(0, mpack_node_u32(mpack_node_array_at(tcp_handshake, 7))); // tcp_wsacle_server EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); gtest_cmsg_destroy(&cmsg); @@ -741,7 +750,7 @@ TEST(POLICY_UPDATE, ProxyFqdnCatIds0) 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, 25); + mpack_node_t fqdn_cat_id_vals = mpack_node_array_at(tcp_handshake, 27); EXPECT_EQ(0, mpack_node_array_length(fqdn_cat_id_vals)); EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); @@ -781,7 +790,7 @@ TEST(POLICY_UPDATE, ProxyTcpAckRouteCtxs0) 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, 29); + mpack_node_t tcp_ack_route_ctxs = mpack_node_array_at(tcp_handshake, 31); EXPECT_EQ(0, mpack_node_bin_size(tcp_ack_route_ctxs)); EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); @@ -821,7 +830,7 @@ TEST(POLICY_UPDATE, ProxyTcpSeqSids0) 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, 26); + mpack_node_t tcp_seq_sids = mpack_node_array_at(tcp_handshake, 28); EXPECT_EQ(0, mpack_node_array_length(tcp_seq_sids)); EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); @@ -862,13 +871,13 @@ TEST(POLICY_UPDATE, ProxyOverLimit) 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, 25); + mpack_node_t fqdn_cat_id_vals = mpack_node_array_at(tcp_handshake, 27); EXPECT_EQ(FQDN_CAT_ID_VALS, mpack_node_array_length(fqdn_cat_id_vals)); - mpack_node_t tcp_seq_sids = mpack_node_array_at(tcp_handshake, 26); + mpack_node_t tcp_seq_sids = mpack_node_array_at(tcp_handshake, 28); EXPECT_EQ(TCP_XXX_SIDS, mpack_node_array_length(tcp_seq_sids)); - mpack_node_t tcp_ack_sids = mpack_node_array_at(tcp_handshake, 27); + mpack_node_t tcp_ack_sids = mpack_node_array_at(tcp_handshake, 29); EXPECT_EQ(TCP_XXX_SIDS, mpack_node_array_length(tcp_ack_sids)); EXPECT_EQ(mpack_tree_destroy(&tree), mpack_ok); |
