我正在寻找一些方法来确定sk_buff指向的进程。我知道没有直接的方法可以做到这一点。获取sk_buff
我正在使用netif_rx notifier
。我不得不使用通知程序而不是NETFILTER,因为NETFILTER在中断上下文中工作(但是,如果NETFILTER在这种情况下可以以任何方式更有用,我可以切换)。
到目前为止我尝试了什么:
从struct pid *sk_peer_pid
获取struct sock *
。
将struct file *
与每个任务的已打开文件描述符struct files_struct
进行比较。这太重了
网络命名空间。这是无用的,因为所有进程都使用相同的命名空间,并且默认情况下不会在设备上启用此功能。
我的最后一个想法是比较数据包的某种目的端口,以及进程正在侦听的端口。有没有办法做到这一点?要从数据包中获取所需的端口号,然后查找它,并查看正在侦听的进程?