skb-> data_len,skb-> len,skb-> mac_len的值为0是否正确?
问题描述:
当我使用网络过滤器API,skb-> data_len,skb-> len,skb-> mac_len的值为0是否正确?
iph = ip_hdr(skb);
saddr = iph->saddr; //unsigned long
daddr = iph->daddr; //unsigned long
但saddr
和daddr
是不正确的值。
所以我测试
printk("len = %u , data_len = %u , mac_len = %u , hdr_len = %u\n",skb->len , skb->data_len , skb->mac_len , skb->hdr_len);
printk("truesize = %u , data = %x\n",skb->truesize , &skb->data);
结果是:
这是正确的?
答
尝试提取物是这样的:
struct iphdr *ip_hdr = (struct iphdr *)skb_network_header(skb);
和访问是这样的:
printk("source address = %u destination address = %u\n", ip_hdr->saddr, ip_hdr->daddr);
从'skb'似乎没有得到很好的分配中提取的值。请在您的问题中添加文本而不是图片,并提供[最小,完整和可验证示例](http://*.com/help/mcve) –