- 论坛徽章:
- 0
|
各位大虾,请帮帮忙解决这个问题。我在Ubuntu中编写makefile文件,内容如下:- obj-m:=kill_port.o
- KERNELDIR:=/lib/modules/2.6.31-14-generic/build
- PWD:=$(shell pwd)
- modules:
- $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
- modules_install:
- $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
- clean:
- $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
复制代码 结果运行make出现错误,请问这个Makefile怎么写呢?我是想按照模块编程的思想,让其生成一个.ko文件,然后通过insmod命令把.ko文件加载进内核中,再调试的。现在在这个问题上卡住了。望高手指点,不胜感激。附上源代码:- #ifndef _KERNEL_
- #define _KERNEL_
- #endif
- #ifndef MODULE
- #define MODULE
- #endif
- #include <linux/module.h>
- #include <linux/sched.h>
- #include <linux/kernel.h>
- #include <linux/netdevice.h>
- #include <linux/ip.h>
- #include <linux/tcp.h>
- #include <linux/skbuff.h>
- #include <linux/proc.h>
- #include <linux/if.h>
- #include <linux/in.h>
- #include <linux/netifilter_ipv4.h>
- static unsigned int kill_port(unsigned int hooknum,
- struct sk_buff **skb,
- const struct net_device *in,
- const struct net_device *out,
- int (*okfn)(struct sk_buff*))
- {
- struct tcphdr *tcph;
- struct iphdr *iph;
- iph=(*skb)->nh.iph;
- if(iph->protocol==IPPROTO_TCP)
- {
- tcph=(*skb)->h.th;
- if(ntohs(tcph->source)==23)
- {
- printk("\nftp service refused");
- return NF_DROP;
- }
- return NF_ACCEPT;
- }
- struct nf_hook_op kill={
- .hook=kill_port,
- .owner=THIS_MODULE,
- .pf=PF_INET,
- .hooknum=NF_IP_LOCAL_OUT,
- .priority=NF_IP_PRI_FILTER,
- };
- int init_module(){
- nf_register_hook(&kill);
- return 0;
- }
- void cleanup_module(){
- nf_unregister_hook(&kill);
- }
复制代码 |
|