ネットワークソフトウエア特論

次回の課題で使用するvdlに関する説明。vdlはおそらくVirtual DataLinkの略で、OSIでいうところの第1層の物理層と、第2層のデータリンク層を仮想的にシミュレーションしたソフトウエアである。
どうも先生(または先生の周辺の人たち?)の作。あとでDの人に聞くとこのソフトは昔から使われているようで、この授業では定番の課題らしい。
使い方は、まずvdl_init()という初期化の関数を呼び、次にデータリンクのIDを指定してvdl_connect()をコールするとVDLディスクリプタという値を返す。これはファイルディスクリプタによく似た値で、データリンク層上で接続する線を識別するIDである。このIDと相手先のノードのアドレスがわかればoutputをすることができる。outputにはtypeというプロトコル番号が必要になる。このプロトコル番号がないと、上位の層のプロセスに返すときにどれに返せばよいかわからなくなってしまう。つまり、上位の層のプロセスと下位のプロセスとの関係はn対1の関係にあるといえる。
受信はコールバック関数が用いられている。関数ポインタを使うのだが、このシステムではインタフェースさえ守れば余り気にする必要はない。