Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
ARP情報は先に説明したルーティング情報(rtable構造体)と一体化して管理されている。下図neighbour構造体はARP操作を管理するための構造体である。arp_hh_opsテーブルはARPを利用して出力する関数が登録されており、ARPの状態(neighbourの状態)により、呼び出す関数が切り替えられる。(アドレスが解決する前と後など)
hh_cache構造体は、ARP情報そのもの(ハードウェアアドレス情報)のキャッシュである。アドレス解決が完了したルーティング情報にリンクされる。
neighbour構造体は、ルーティングテーブルキャッシュに登録(rt_intern_hash関数)、または更新(ip_rt_redirect関数)するときに確保(arp_bind_neighbour関数)される。
arp_bind_neighbour関数は、ルーティング情報から得られた送信先(またはgateway)のIPアドレスを元にarp_tbl内にキャッシュからneighbour構造体を取り出し、ルーティング情報(rtable)とリンクする。もし、キャッシュ上に存在しない場合はneighbour構造体を新規に確保する。
hh_cacheは、アドレス解決が完了した時点で登録(neigh_hh_init関数)される。hh_cacheはハードウェアアドレスを格納する。
一度全てのデータ構造が出来上がると、ルーティング情報を検索すると同時にARP情報も得ることができるようになる。
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1
[ページ情報]
更新日時: 2008-08-27 14:18:59, 更新者: hiromichi-m
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー