如何在Linux网络堆栈的特定点推送skb?

Mil*_*avi 8 c kernel network-programming linux-device-driver linux-kernel

我想把skb推到preroutingLinux网络堆栈.有没有办法做到这一点?我使用dev_queue_xmit()netif_rx()功能,但我不认为他们可以推动skb在preroutingLinux网络堆栈.

在此输入图像描述

Cla*_*ris 1

我怀疑您想要 libpcap 或 libnetfilter_queue 以下统称为用户态队列。用户态队列会将所有符合某些规则(您定义的)的数据包路由到您的用户态应用程序。dev_queue_* 和 netif_* 函数适用于内核级路由,与用户态应用程序无关。

用户态排队会对性能产生影响,并且根据您使用的库,您必须使用特定的方法将数据包重新注入到 netfilter 队列中。