Linux 从sku buff中提取PID。

Linux 从sku buff中提取PID。,linux,networking,kernel,Linux,Networking,Kernel,我正在寻找某种方法来确定sku buff是如何处理的。我知道没有直接的方法可以做到这一点。要获得sku buff我正在使用netif\u rx通知程序。我不得不使用通知程序而不是NETFILTER,因为NETFILTER在中断上下文中工作(但是,如果NETFILTER在这种情况下更有用,我可以切换)。 到目前为止我所尝试的: 从struct sock*获取struct pid*sk\u peer\u pid 将每个任务的struct file*与打开的文件描述符struct files\u st

我正在寻找某种方法来确定sku buff是如何处理的。我知道没有直接的方法可以做到这一点。要获得
sku buff
我正在使用
netif\u rx通知程序
。我不得不使用通知程序而不是NETFILTER,因为NETFILTER在中断上下文中工作(但是,如果NETFILTER在这种情况下更有用,我可以切换)。
到目前为止我所尝试的:
struct sock*
获取
struct pid*sk\u peer\u pid

将每个任务的
struct file*
与打开的文件描述符
struct files\u struct
进行比较。这个太重了。
网络名称空间。这是无用的,因为所有进程都使用相同的名称空间,并且默认情况下设备上不启用此功能


我的最后一个想法是以某种方式将数据包的目标端口与进程正在侦听的端口进行比较。有办法吗?从数据包中获取所需的端口号,然后查找它,并查看监听它的进程是什么

为什么要这样做(为什么要在内核中这样做,而不是使用iptables)?除此之外,该模块还必须监控其他事件,如设备注册、注销时向设备发出的IOCTL等。