summaryrefslogtreecommitdiff
path: root/entry/src/kni_entry.cpp
diff options
context:
space:
mode:
authorfumingwei <[email protected]>2021-08-27 14:54:07 +0800
committerfumingwei <[email protected]>2021-08-27 16:42:55 +0800
commit5718d879f3b37d1e90b8f9834b3837137fb69766 (patch)
treec2babf95befd57bc34566cb72a5773ed0fca915a /entry/src/kni_entry.cpp
parent534a9de16d1052561db032f8edf388e18cd841b5 (diff)
bugfix:TSG-6638根据拦截成功的第一个数据包矫正kni传输给tfe的timestamp相关数值v21.08.02
Diffstat (limited to 'entry/src/kni_entry.cpp')
-rw-r--r--entry/src/kni_entry.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/entry/src/kni_entry.cpp b/entry/src/kni_entry.cpp
index d416dc5..ee1bc7b 100644
--- a/entry/src/kni_entry.cpp
+++ b/entry/src/kni_entry.cpp
@@ -1185,6 +1185,20 @@ static int tsg_diagnose_judge_streamshunt(int maat_rule_config_id,struct pme_inf
}
return ret;
}
+static void set_timestamp_depend_first_data(struct streaminfo *stream, struct pme_info *pmeinfo, struct pkt_info *pktinfo){
+ struct kni_tcpopt_info tcpopt_first_data;
+ if(pmeinfo->client_tcpopt.ts_set != 1 || pmeinfo->server_tcpopt.ts_set != 1)
+ return;
+ kni_get_tcpopt(&tcpopt_first_data,pktinfo->tcphdr,pktinfo->tcphdr_len);
+ if(stream->curdir == 1){
+ pmeinfo->client_tcpopt.ts_value = tcpopt_first_data.ts_value;
+ pmeinfo->server_tcpopt.ts_value = tcpopt_first_data.ts_ecr;
+ }
+ if(stream->curdir == 2){
+ pmeinfo->client_tcpopt.ts_value = tcpopt_first_data.ts_ecr;
+ pmeinfo->server_tcpopt.ts_value = tcpopt_first_data.ts_value;
+ }
+}
static int first_data_intercept(struct streaminfo *stream, struct pme_info *pmeinfo, struct pkt_info *pktinfo, int thread_seq){
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_INTCP_READY_STM], 0, FS_OP_ADD, 1);
@@ -1370,6 +1384,8 @@ static int first_data_intercept(struct streaminfo *stream, struct pme_info *pmei
}
}
+ //get intercept success first data timestamps send to tfe
+ set_timestamp_depend_first_data(stream, pmeinfo, pktinfo);
//add cmsg
len = 0;
buff = add_cmsg_to_packet(pmeinfo, stream, pktinfo, &len);