diff options
| author | lijia <[email protected]> | 2021-07-30 16:01:22 +0800 |
|---|---|---|
| committer | lijia <[email protected]> | 2021-07-30 16:01:22 +0800 |
| commit | ce0dfaf375577b1e5204efe78d4c684aa064e6e2 (patch) | |
| tree | ff537a4de1db2d3199b4a9854c1c6f0d23876f91 | |
| parent | 559390c7dd2d7a9403a82aa94cd05296e1ac8381 (diff) | |
TSG-7242, 插件使用RAW_PKT_GET_DATA, 获取原始数据包, 带有vxlan层, 已修复.v4.2.44
| -rw-r--r-- | src/dealpkt/plug_support.c | 4 | ||||
| -rw-r--r-- | 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;
|
