【发布时间】:2021-06-09 06:45:02
【问题描述】:
我有一个tpacket3_hdr *ppd 指针对象。我知道如何提取 iphdr 和 tcphdr 但如果我需要数据包的主体部分怎么办。我正在尝试这样
struct iphdr *ip = (struct iphdr *) ((uint8_t *) eth + ETH_HLEN);
struct tcphdr *tcp=(struct tcp *)((uint8_t *)ip+sizeof(struct iphdr));
char *payload_body=(char *)(tcp+sizeof(struct tcphdr));
printf("%s\n",payload_body);//Printing wrong Not containing what I am checking by simply downloading html
我不认为这是正确的做法。此处给出了来自 MMAP 的 Rx Ring 的完整代码https://elixir.bootlin.com/linux/latest/source/tools/testing/selftests/net/psock_tpacket.c
【问题讨论】:
-
提示:你为什么在前两行写
(uint8_t *)? -
@JosephSible-ReinstateMonica 指向 eth 地址和 ip 地址的开始。为什么有问题?