C 言語で packet_in ハンドラを書く (その4)

前回紹介した packet_info 型のデータを取り出す関数として、get_packet_info() 関数を用意しています。この関数を使って packet_info 型の構造体の値を取り出すことで、パケット中の値を簡単に参照することができます。
例えば packet_in ハンドラを以下のようにすることで、packet_info 中の MAC アドレス、Ethernet タイプを取り出し、表示することができます。

Build し、実行した上で、trema send_packets コマンドでパケットを送ってみましょう。以下のように表示されるはずです。

$ ./trema run ./packetin_display -c ./network.conf 
macsa = 00:00:00:00:00:01, macda = 00:00:00:00:00:02, eth_type = 0x0800
macsa = 00:00:00:00:00:02, macda = 00:00:00:00:00:01, eth_type = 0x0800

今回でとりあえず packet_in ハンドラ編は終わりです。次回は flow_mod の送り方について紹介したいと考えています。