trema / trema-edge

Transient repository for Trema OF1.3 branch
27 stars 14 forks source link

Dumper.rb の port_status メソッド が正しく動作しない #127

Open ghost opened 10 years ago

ghost commented 10 years ago

実行すると以下のとおり。

$ trema run dumper.rb -c dumper.conf
src/examples/dumper/dumper.rb:126:in 'port_status': undefined method 'phy_port' for #
<Trema::Messages::PortStatus:0x00000001972650> (NoMethodError)

phy_port がないと言われるので、Openflow v1.3 の 仕様書 [A.4.3 Port Status Message (P78)] をみると、 使用上定義されていないことがわかる。 そこで、dumper.rb の 126 行目を

dump_phy_port message

に変更して実行すると、今度は dump_phy_port でエラー

$ trema run dumper.rb -c dumper.conf
src/examples/dumper/dumper.rb:165:in `dump_phy_port': undefined method `number' for # 
<Trema::Messages::PortStatus:0x00000001d1b7e8> (NoMethodError)

ruby/trema/messages/port.rb を見ると、確かに number はない。 Tremaでは変数名 "number" だったが、Trema-edgeDeha "port_no" に変更されていることが理由なので、

def numder
  port_no
end

を追記することで、正しく動作することを確認。

Trema では PortStatus#number だったので、Trema-edge 変数名が異なっている。 Trema-edge でも Port#number に変更したほうが良いのでは…?

yasuhito commented 10 years ago

@y-shijo ありがとうございます。パッチとテストを PR してもらえますか? 分からない部分があったら聞いてください。