[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:データ構造
}}}
= データ構造 = #SECTION07620000000000000000
ARP情報は先に説明したルーティング情報(rtable構造体)と一体化して管理されている。下図neighbour構造体はARP操作を管理するための構造体である。arp_hh_opsテーブルはARPを利用して出力する関数が登録されており、ARPの状態(neighbourの状態)により、呼び出す関数が切り替えられる。(アドレスが解決する前と後など)
hh_cache構造体は、ARP情報そのもの(ハードウェアアドレス情報)のキャッシュである。アドレス解決が完了したルーティング情報にリンクされる。
[[Embed(internal22-images:img91.gif)]]
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 [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]