免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ 求助!
最近访问板块 发新帖
查看: 1057 | 回复: 1
打印 上一主题 下一主题

求助! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-22 22:03 |只看该作者 |倒序浏览
这是一个基于数据包原地址过滤的程序,但是编译时老是在
    if(sb->nh.iph->saddr == *(unsigned int *)drop_ip) 这句报错
错误:
hook3.c: In function `hook_func':
hook3.c:43: dereferencing pointer to incomplete type

我把这句改成:
if(*(sb->nh.iph->saddr) == *(unsigned int *)drop_ip)
还是报一样的错误,希望高手帮我解疑惑啊!

#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
                                                                                                                                                                                
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)
                return NF_ACCEPT;
        if (!(sb->nh.iph))
                return NF_ACCEPT;

        if(sb->nh.iph->saddr == *(unsigned int *)drop_ip)
        {
                printk("Dropped packet from ...%d.%d.%d.%d\n",*drop_ip, *(drop_ip+1),
                                                                                     *(drop_ip+2), *(drop_ip+3));
                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);
}

论坛徽章:
0
2 [报告]
发表于 2006-05-22 22:55 |只看该作者
我这里编译是没问题的呀,呵呵~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP