3

スイッチでやってます。パケットは特別なギガビット ポート経由でカーネルに入ります。各パケットの前には、パケットが最初に入ってきたスイッチ ポートを示すヘッダーが付きます。

私は、パケットに応答するためにポートを知る必要があるプロトコルに取り組んでいます。電力割り当て、OAM、802.1X などすべてにこの問題があることを想像できます。

スイッチのポート番号を sk_buff の新しいフィールドに保存します。問題ない。

しかし、ユーザー空間では、recvfrom を使用してパケットを受信して​​おり、sk_buff にアクセスできません。私は sll_ifindex にアクセスできるので、VLAN を含め、パケットが入ってきたインターフェイス (eth0.2 など) を知ることができますが、すべてのパケットが特別なギガビット ポートに入っているため、これは必要なものではありません。元のポートが必要です。

sockaddr から sk_buff までさかのぼる方法はありますか? 途中でパケットがコピーされているため、その前のバイトにアクセスできなくなります。少なくとも今は skbuff にもアクセスできません。この情報の別のキューを維持し、別のチャネルまたは何かを介してそれを通信するなど、不安定なものを思い付くことができましたが、それは問題があるようです.

アイデア?

4

0 に答える 0