- 论坛徽章:
- 0
|
5可用积分
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/ip.h>
#include <linux/udp.h>
#include <linux/icmp.h>
#include <net/icmp.h>
#include <net/ip.h>
#include <net/tcp.h>
#include <net/route.h>
#include <net/dst.h>
#include <linux/netfilter/x_tables.h>
#include <linux/netfilter_ipv4/ip_tables.h>
#ifdef CONFIG_BRIDGE_NETFILTER
#include <linux/netfilter_bridge.h>
#endif
MODULE_LICENSE("GPL");
MODULE_AUTHOR("zj");
MODULE_DESCRIPTION("Xtables: packet \"winnuke\" target for IPv4");
static unsigned int
reject_tg(unsigned int hooknum,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
const struct iphdr *oiph;
const struct tcphdr *oth;
struct tcphdr _otcph;
oiph = ip_hdr(skb);
if (oiph->frag_off & htons(IP_OFFSET))
return NF_DROP;
switch (oiph->protocol)
{
case IPPROTO_TCP:
printk("TCP PACKET!!!\n");
break;
case IPPROTO_UDP:
printk("UDP PACKET!!!\n");
break;
case IPPROTO_ICMP:
break;
default:
return NF_ACCEPT;
}
oth = skb_header_pointer(skb, ip_hdrlen(skb),
sizeof(_otcph), &_otcph);
if (oth == NULL)
return NF_DROP;
if (oth->urg)
return NF_DROP;
else
{
printk("urg ok!!!!!");
printk("s_port:%d,d_port:%d",oth->source,oth->dest);
}
return NF_ACCEPT;
}
static struct xt_target reject_tg_reg __read_mostly = {
.name = "reject",
.family = PF_INET,
.target = reject_tg,
.hooks = (1 << NF_INET_LOCAL_IN) | (1 << NF_INET_FORWARD) |
(1 << NF_INET_LOCAL_OUT),
.me = THIS_MODULE,
};
static int __init reject_tg_init(void)
{
return xt_register_target(&reject_tg_reg);
}
static void __exit reject_tg_exit(void)
{
xt_unregister_target(&reject_tg_reg);
}
module_init(reject_tg_init);
module_exit(reject_tg_exit);
|
TARGET=ipt
ifneq ($(KERNELRELEASE),)
obj-m := ${TARGET}.o
else
KDIR := /lib/modules/$(shell uname -r)/build
  WD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
endif
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
rm *odule*
|
make的时候ipt.c:66: warning: initialization from incompatible pointer type
我ismod加载后根本没作用,我是防ipt_REJECT.c写的.内核是最新的2.6.27 |
|