1

カーネル内からarpリクエストを生成しようとしていますが、「ターゲットMACアドレス」と「宛先MACアドレス」の違いがわかりません。私が使用しているカーネル関数は次のとおりです。

void arp_send(int type, int ptype, __be32 dest_ip,
          struct net_device *dev, __be32 src_ip,
          const unsigned char *dest_hw, const unsigned char *src_hw,
          const unsigned char *target_hw)

'target_hw'(ターゲットMACアドレス)と'dst_hw'(宛先MACアドレス)の違いを知っている人はいますか?私にとって、それらは同じでなければなりません...

4

1 に答える 1

1

arp_send関数は汎用関数であり、ARP要求と応答の両方を送信するために使用されます。

あなたの場合(ARP要求)はtarget_hw学習したい情報なので、このフィールドは無視できます(NULLに設定、RFC826の例を参照) dest_hwもNULLになります-ブロードキャストアドレスを使用することになります(arp_createコメントを参照)

ここでは、IPv4overEthernetを想定しています。他のLayer2/3プロトコルの場合、外観が異なる場合があります。

于 2013-01-12T09:41:50.120 に答える