1

Linux カーネル プログラミングとドライバー プログラミングは初めてです。Linux でカーネル バージョン 2.6.32-37 を使用して madwifi ドライバーを使用しており、ドライバー コード内のインターフェイスの MAC アドレスを抽出したいと考えています。この情報はnetdevice構造体フィールドにあるはずですが、どれが正しいものなのかよくわかりません。

私の質問は次のとおりです。

  1. *dev と *real の違いは何ですか?
  2. どちらを使用すればよいですか?(どちらもコードのさまざまな部分で使用されており、前者をいつ使用し、後者をいつ使用すべきかわかりません)。
4

2 に答える 2

2

http://www.makelinux.net/ldd3/chp-17-sect-3からの引用:

unsigned char dev_addr[MAX_ADDR_LEN];

ハードウェア (MAC) アドレスの長さとデバイスのハードウェア アドレス。イーサネット アドレスの長さは 6 オクテット (インターフェイス ボードのハードウェア ID を指します) で、ブロードキャスト アドレスは 6 つの 0xff オクテットで構成されます。ether_setup は、これらの値が正しくなるように調整します。一方、デバイス アドレスはデバイス固有の方法でインターフェイス ボードから読み取る必要があり、ドライバーはそれを dev_addr にコピーする必要があります。ハードウェア アドレスは、パケットが送信のためにドライバーに渡される前に、正しいイーサネット ヘッダーを生成するために使用されます。snull デバイスは物理インターフェイスを使用せず、独自のハードウェア アドレスを発明します。

それが役立つことを願っています。

于 2013-03-20T12:04:49.933 に答える