summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlijia <[email protected]>2021-07-30 16:01:22 +0800
committerlijia <[email protected]>2021-07-30 16:01:22 +0800
commitce0dfaf375577b1e5204efe78d4c684aa064e6e2 (patch)
treeff537a4de1db2d3199b4a9854c1c6f0d23876f91
parent559390c7dd2d7a9403a82aa94cd05296e1ac8381 (diff)
TSG-7242, 插件使用RAW_PKT_GET_DATA, 获取原始数据包, 带有vxlan层, 已修复.v4.2.44
-rw-r--r--src/dealpkt/plug_support.c4
-rw-r--r--src/project/raw_ip_frag_list.c8
2 files changed, 4 insertions, 8 deletions
diff --git a/src/dealpkt/plug_support.c b/src/dealpkt/plug_support.c
index 8565a5d..d3c9049 100644
--- a/src/dealpkt/plug_support.c
+++ b/src/dealpkt/plug_support.c
@@ -34,7 +34,7 @@ int get_opt_from_rawpkt(const void *voidpkt, int type, void *void_value)
case RAW_PKT_GET_DATA:
{
void **out_value = (void **)void_value;
- *out_value = (void *)rawpkt->raw_pkt_data;
+ *out_value = (char *)rawpkt->raw_pkt_data + rawpkt->overlay_layer_bytes;
}
break;
@@ -48,7 +48,7 @@ int get_opt_from_rawpkt(const void *voidpkt, int type, void *void_value)
case RAW_PKT_GET_TOT_LEN:
{
int *out_value = (int *)void_value;
- *out_value = rawpkt->raw_pkt_len;
+ *out_value = rawpkt->raw_pkt_len - rawpkt->overlay_layer_bytes;
}
break;
diff --git a/src/project/raw_ip_frag_list.c b/src/project/raw_ip_frag_list.c
index e8aae44..039e864 100644
--- a/src/project/raw_ip_frag_list.c
+++ b/src/project/raw_ip_frag_list.c
@@ -48,13 +48,9 @@ int frags_list_append(struct frag_ipq *ipq, const raw_pkt_t *raw_pkt, int type,
return -1;
}
- pkt_len = raw_pkt->raw_pkt_len;
-#if 0
- struct mesa_ip4_hdr *ip4hdr = (struct mesa_ip4_hdr *)((char *)raw_pkt->raw_pkt_data + 14);
- printf("##### frag append ip id:0x%x\n", ntohs(ip4hdr->ip_id));
-#endif
+ pkt_len = raw_pkt->raw_pkt_len - raw_pkt->overlay_layer_bytes; /* 2021-07-29 lijia modify, inlineģʽ��, ԭʼip��Ƭ��������overlay�� */
save_pkt_ptr = dictator_malloc(thread_num, pkt_len);
- memcpy(save_pkt_ptr, raw_pkt->raw_pkt_data, pkt_len);
+ memcpy(save_pkt_ptr, raw_pkt->raw_pkt_data + raw_pkt->overlay_layer_bytes, pkt_len);
new_list_node = (raw_ipfrag_list_t *)dictator_malloc(thread_num, sizeof(raw_ipfrag_list_t));
new_list_node->frag_packet = save_pkt_ptr;
new_list_node->pkt_len = pkt_len;