最近の Trema ではフローのアクションの API に変更があります。使い勝手は今までとまったく変わりませんが、アクションを表すクラス名が一新されています。
クラス名の新旧対応
古い名前と新しい名前の対応は次のようになります。
| 旧 | 新 |
| ActionOutput | SendOutPort |
| ActionSetDlSrc | SetEthSrcAddr |
| ActionSetDlDst | SetEthDstAddr |
| ActionSetNwSrc | SetIpSrcAddr |
| ActionSetNwDst | SetIpDstAddr |
| ActionSetNwTos | SetIpTos |
| ActionSetTpSrc | SetTransportSrcPort |
| ActionSetTpDst | SetTransportDstPort |
| ActionSetVlanVid | SetVlanVid |
| ActionSetVlanPcp | SetVlanPriority |
| ActionStripVlan | StripVlanHeader |
| ActionVendor | VendorAction |
今までのクラス名
今までのクラス名は OpenFlow 仕様が定義する C の定数 (OFPAT_*) を反映した名前になっていました。
例) OFPAT_SET_TP_SRC → ActionSetTpSrc
Trema の C ライブラリを使っている人にとっては、今までどおりのほうがわかりやすいと思います。もちろん、今までのクラス名は新クラスのエイリアスとして残してあるので、今までのコードは変更無しにそのまま動きます。
新しいクラス名
新しい名前はクラス名から “Action” のプレフィクスを取り、”Dl”, “Nw”, “Tp” などの一見わかりづらい略語をなるべく一般的な用語に直しました。
- Dl → Eth
- Nw → Ip
- Tp → Transport
なお新クラスの命名には Haskell の OpenFlow ライブラリ Nettle の型定義を参考にしました。ありがとうございます。

