问一个sk_buff的问题

minoriz 2004-11-21 09:05:46
firewall.c

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/skbuff.h>

#if LINUX_VERSION_CODE>=KERNEL_VERSION(2,4,9)

MODULE_LICENSE("GPL");

MODULE_AUTHOR("XXX@hotmail.com");

#endif

static struct nf_hook_ops nfho;

static unsigned char* drop_ip="\x7f\x00\x00\x01";

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 sk_buff* sb=*skb;

if (sb->nh.iph->saddr==*(unsigned int*)drop_ip)
{
return NF_DROP;
}
else
{
return NF_ACCEPT;
}
}

int init_module()
{
nfho.hook=hook_func;
nfho.hooknum=NF_IP_PRE_ROUTING;
nfho.pf=PF_INET;
nfho.priority=NF_IP_PRI_FIRST;

nf_register_hook(&nfho);

return 0;
}

void cleanup_module()
{
nf_unregister_hook(&nfho);
}


makefile:
CC=gcc
MODFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX -I/usr/src/linux-2.4.20-8/include/

firewall.o:firewall.c
$(CC) $(MODFLAGS) -c firewall.c -o firewall.o

insmod firewall.o

我make的时候,它说if (sb->nh.iph->saddr==*(unsigned int*)drop_ip)这行 dereferencing pointer to incomplete type.
请问应该怎么改?




...全文
186 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
minoriz 2004-11-21
  • 打赏
  • 举报
回复
请大家帮帮忙啊,老着急的
minoriz 2004-11-21
  • 打赏
  • 举报
回复
终于找到了。
原来开始的时候没有#include<linux/ip.h>和#include<linux/tcp.h>
winux0 2004-11-21
  • 打赏
  • 举报
回复
这行应该是不会有问题的,你把所有的make出错信息贴出来看看

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧