2

機能が実装されているnet_deviceものがあります。ndo_start_xmit

ndo_start_xmit関数が呼び出されると、skbIP パケットを含む があります。ヘッダーでパケットを上書きIP+UDPし、ルーティング システムに送り返す必要があります。

dst_input(skb)問題は、 orを呼び出すとdst_output(skb)NULLポインター逆参照エラーが発生することです。この関数を使用して、カプセル化されたパケットをネットワーク スタックにプッシュすることはできないようです。

解決策は何ですか?

4

2 に答える 2

3

パケット送信時(ドライバからネットワークリンクへ)

ソケット バッファー (skb->data) からドライバー カーネル バッファー ( hard_start_xmit関数内) にデータをコピーします。

パケット受信時(ネットワークリンクからドライバへ)

skb バッファーを作成します。ドライバー カーネル バッファーからソケット バッファーにデータをコピーし、netif_rx() 関数を使用してカーネル ネットワーク スタックに渡します。

于 2013-08-29T04:19:22.873 に答える