Ç - 无法访问SADDR

我试图处理与netfilter的钩子简单的数据包检查。

宣言似乎相当简单:

unsigned int hook_func(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { struct iphdr *iph = (struct iphdr *)skb_network_header(skb); }

我可以访问网络头部的协议部分

iph->protocol == IPPROTO_TCP

然而

iph->saddr

失败。 有什么建议么? 我觉得这是我的一个非常简单的错误,但所有的例子如下要么此方法,或者他们只是使用

struct iphdr *iph = ip_hdr(skb);

我得到这两种方法相同​​的行为。 我已经通过skbuff.h中寻找任何线索,但没有带任何运气。

编辑:

难道这与他们的方式,我访问它做什么? 现在调试我只是想打印出来的价值使用:

printk(KERN_DEBUG "%pI4", iph->saddr);

--------------解决方案-------------

%pI4需要一个地址,所以你正在阅读可能无效的内存。 使用&iph->saddr代替。

分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.289 (s). 10 q(s)