データ構造

ARP情報は先に説明したルーティング情報(rtable構造体)と一体化して管理されている。下図neighbour構造体はARP操作を管理するための構造体である。arp_hh_opsテーブルはARPを利用して出力する関数が登録されており、ARPの状態(neighbourの状態)により、呼び出す関数が切り替えられる。(アドレスが解決する前と後など)

hh_cache構造体は、ARP情報そのもの(ハードウェアアドレス情報)のキャッシュである。アドレス解決が完了したルーティング情報にリンクされる。

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
2000年06月11日 (日) 22時29分57秒 JST
1