我想写一个Linux
2.6 netfilter
module
,可以检查传入的IP
数据包信息,例如dest-ip,source-ip。之后将这些信息传递给应用程序,一旦数据包到达 HOOK ,user space
应用程序(即应用程序)将处理这些信息。Socket
我想尝试两种方法:
1. 在netfilter
模块内部,做一个fifo
struct line,每次数据包到达时hook
,将数据包信息放入fifo。并在/proc/example
filesystem 的帮助下。每次用户空间应用读取/proc/example
文件时,都会从fifo头获取一个数据包信息。
我是kernel
程序的新手,这个程序使我的内核崩溃了好几次。-_-!我想知道这种方式可能吗?
2. 在 netfilter 模块内部,制作一个 char 设备,用户空间应用程序从这个 char 设备中读取数据包信息。但是我仍然不知道如何确保尽快得到数据包,有什么办法当数据包到达netfilter钩子时,内核会向info用户空间应用程序发送一些信号,然后用户空间应用程序来选择数据包信息?
非常感谢你。