Modify-Field アクションの紹介も今日が最後です。今日はパケットの VLAN VID とプライオリティを書き換える方法です。
パケットの VLAN VID を書き換えるアクションを作る
VLAN VID を書き換えるアクションは SetVlanVid です。
# VLAN VID を書き換えるアクション SetVlanVid.new( 128 )
:new の引数はあなたの想像通り、新しくセットする VLAN VID の値です。
パケットの VLAN プライオリティを書き換えるアクションを作る
VLAN プライオリティを書き換えるアクションは SetVlanPriority です。
# VLAN プライオリティを書き換えるアクション SetVlanPriority.new( 7 )
Flow Mod でアクションを指定する
こうして作ったアクションを使うには、いつもの通り Flow Mod の :actions オプションに指定します。
def packet_in datapath_id, message # .. send_flow_mod_add( datapath_id, :match => Match.new( :dl_src => message.macsa, :dl_dst => message.macda ), :actions => [ StripVlanVID( 1 ), SetVlanPriority( 7 ), SendOutPort.new( port_no ) ] )
Packet Out のアクションも同様です。
まとめ
SetVlanVID でパケットの VLAN VID を、また SetVlanPriority で VLAN プライオリティを書き換える方法を紹介しました。