ruby
> match = Match.new( {:in_port=>1, :dl_src=>"00:00:00:00:00:0a", :dl_dst=>"00:00:00:00:00:14", :dl_vlan=>0, :dl_vlan_pcp=>0, :dl_type=>2048, :nw_tos=>0, :nw_proto=>1, :nw_src=>"10.0.0.0/8", :nw_dst=>"20.0.0.0/8", :tp_src=>8, :tp_dst=>0} )
> match.to_s
=> "wildcards = 0x61800(nw_src(24)|nw_dst(24)), in_port = 1, dl_src = 00:00:00:00:00:0a, dl_dst = 00:00:00:00:00:14, dl_vlan = 0, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 1, nw_src = 10.0.0.0/8, nw_dst = 20.0.0.0/8, tp_src = 8, tp_dst = 0"
bianry = [1,14,0,192,0,0,0,0,0,6,24,0,0,1,0,0,0,0,0,10,0,0,0,0,0,20,0,0,0,0,8,0,0,1,0,0,10,0,0,0,20,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,1,0,1,0,8,0,10,0,0,0,2,0,8,0,0,0,0,0,3,0,8,0,0,0,0,0,4,0,16,0,0,0,0,0,1,0,0,0,0,0,0,0,5,0,16,0,0,0,0,0,2,0,0,0,0,0,0,0,6,0,8,10,0,0,1,0,7,0,8,20,0,0,2,0,8,0,8,184,0,0,0,0,9,0,8,0,8,0,0,0,10,0,8,0,0,0,0,0,11,0,16,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,1,0,128].pack("C*")
pp FlowMod.read bianry
#<Pio::FlowMod:0x00000002a50620
@format=
{:open_flow_header=>
{:ofp_version=>1,
:message_type=>14,
:message_length=>192,
:transaction_id=>0},
:body=>
{:match=>
{:wildcards=>[{:nw_src=>24}, {:nw_dst=>24}],
:in_port=>1,
:dl_src=>#<Pio::Mac:21891620 "00:00:00:00:00:0a">,
:dl_dst=>#<Pio::Mac:21845160 "00:00:00:00:00:14">,
:dl_vlan=>0,
:dl_vlan_pcp=>0,
:dl_type=>2048,
:nw_tos=>0,
:nw_proto=>1,
:nw_src=>
#<Pio::IPv4Address:0x000000029a8c18
@value=#<IPAddr: IPv4:10.0.0.0/255.255.255.255>>,
:nw_dst=>
#<Pio::IPv4Address:0x00000002987860
@value=#<IPAddr: IPv4:20.0.0.0/255.255.255.255>>,
:tp_src=>8,
:tp_dst=>0},
:cookie=>0,
:command=>:add,
:idle_timeout=>0,
:hard_timeout=>0,
:priority=>65535,
:buffer_id=>4294967295,
:out_port=>65535,
:flags=>[:send_flow_rem],
:actions=>
[#<Pio::SetVlanVid:0x00000002984700
@format={:type=>1, :message_length=>8, :vlan_id=>10}>,
#<Pio::SetVlanPriority:0x00000002979558
@format={:type=>2, :message_length=>8, :vlan_priority=>0}>,
#<Pio::StripVlanHeader:0x00000002962218
@format={:type=>3, :message_length=>8}>,
#<Pio::SetEthSrcAddr:0x0000000295fae0
@format=
{:type=>4,
:message_length=>16,
:mac_address=>#<Pio::Mac:21685520 "00:00:00:00:00:01">}>,
#<Pio::SetEthDstAddr:0x00000002957e80
@format=
{:type=>5,
:message_length=>16,
:mac_address=>#<Pio::Mac:21668840 "00:00:00:00:00:02">}>,
#<Pio::SetIpSrcAddr:0x00000002954190
@format=
{:type=>6,
:message_length=>8,
:ip_address=>
#<Pio::IPv4Address:0x00000002940988
@value=#<IPAddr: IPv4:10.0.0.1/255.255.255.255>>}>,
#<Pio::SetIpDstAddr:0x0000000292fb38
@format=
{:type=>7,
:message_length=>8,
:ip_address=>
#<Pio::IPv4Address:0x0000000292b5b0
@value=#<IPAddr: IPv4:20.0.0.2/255.255.255.255>>}>,
#<Pio::SetIpTos:0x0000000292aae8
@format={:type=>8, :message_length=>8, :type_of_service=>184}>,
#<Pio::SetTransportSrcPort:0x0000000291b4f8
@format={:type=>9, :message_length=>8, :port_number=>8}>,
#<Pio::SetTransportDstPort:0x0000000290b170
@format={:type=>10, :message_length=>8, :port_number=>0}>,
#<Pio::Enqueue:0x00000002908f60
@format=
{:type=>11, :message_length=>16, :port_number=>1, :queue_id=>1}>,
#<Pio::SendOutPort:0x000000028fde30
@format=
{:type=>0, :message_length=>8, :port_number=>1, :max_len=>128}>]}}>