2016-11-12 42 views
1

當我使用網絡過濾器API,skb-> data_len,skb-> len,skb-> mac_len的值爲0是否正確?

iph = ip_hdr(skb); 
saddr = iph->saddr;  //unsigned long 
daddr = iph->daddr;  //unsigned long 

saddrdaddr是不正確的值。

所以我測試

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); 

結果是:

enter image description here

這是正確的?

+2

從'skb'似乎沒有得到很好的分配中提取的值。請在您的問題中添加文本而不是圖片,並提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) –

回答

2

嘗試提取物是這樣的:

struct iphdr *ip_hdr = (struct iphdr *)skb_network_header(skb); 

和訪問是這樣的:

printk("source address = %u destination address = %u\n", ip_hdr->saddr, ip_hdr->daddr); 
相關問題