summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--src/tsg_entry.cpp2
-rw-r--r--src/tsg_proxy.cpp18
-rw-r--r--src/tsg_sync_state.cpp16
-rw-r--r--src/tsg_sync_state.h3
-rw-r--r--test/src/gtest_common.cpp2
-rw-r--r--test/src/gtest_sync_state.cpp61
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);