From ce0dfaf375577b1e5204efe78d4c684aa064e6e2 Mon Sep 17 00:00:00 2001 From: lijia Date: Fri, 30 Jul 2021 16:01:22 +0800 Subject: TSG-7242, 插件使用RAW_PKT_GET_DATA, 获取原始数据包, 带有vxlan层, 已修复. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dealpkt/plug_support.c | 4 ++-- src/project/raw_ip_frag_list.c | 8 ++------ 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; -- cgit v1.2.3