ネットワークデバイス
デバイスの管理
ネットワークデバイスはstruct net_deviceで管理される。ネットワークデバイスは登録されると、dev_baseリストにつながれる。dev_baseからnet_deviceのnextをたどることで全デバイスを参照することができる(図1)。
図1 net_device構造体
struct net_deviceはdev_baseリストの他にも、2種類のハッシュで管理される(表1)。
表1 struct net_deviceのハッシュ
ハッシュテーブル |
説明 |
---|---|
dev_name_head[] |
eth0等のデバイス名で検索を行う。 struct net_deviceのname_hlistでたどることができる。 |
dev_index_head[] |
デバイスのifindexで検索を行う。 struct net_deviceのindex_hlistでたどることができる。 |
デバイスに設定されたIPアドレス
デバイスに設定されたIPアドレスは該当するデバイスのstruct net_deviceにチェーンされる。struct net_device内にプロトコル依存データを指すポインタがあり、IPv4の場合は、ip_ptrがstruct in_deviceを指す。struct in_deviceのifa_listからIPv4アドレスを表すstruct
in_ifaddrのリストになっている。
図2 デバイスとIPアドレス