我想用netfilter钩子来处理简单的数据包检查。C - 不能访问saddr
宣言似乎相当简单:
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);
你有错误信息吗?它是什么? – 2012-02-12 22:09:26
它杀死了机器..我通常只是在我的虚拟机中重置快照。没有编译时错误。内核崩溃后有没有办法获得错误信息? – kevgliss 2012-02-12 22:27:32