本文主要是介绍NF_IP_LOCAL_IN NF_IP_LOCAL_OUT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
下面主要是通过上面接收的hook注册函数,实现向内核中相应的hook点注册hook回调函数,结合icmp数据包的格式,实现对icmp数据包的处理。
icmp_reply_filter.c
主要是数据接收方向的NF_IP_LOCAL_IN点注册回调函数,该回调函数对接收到的icmp reply报文,将序列号是9的倍数的reply报文丢弃掉
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/ioctl.h>
#include <linux/version.h>
#include <linux/skbuff.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/moduleparam.h>
#include <linux/netfilter_ipv4/ip_tables.h>
#include <linux/icmp.h>
#include <net/ip.h>
static unsigned int
icmp_reply_hook_func(unsigned int hook,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
const struct iphdr *iph;
struct icmphdr *icmph;
这篇关于NF_IP_LOCAL_IN NF_IP_LOCAL_OUT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!