trema 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ruby/trema/flow-removed.c +3 -0
- data/ruby/trema/match.c +19 -0
- data/ruby/trema/packet-in.c +3 -0
- data/ruby/trema/port.c +12 -0
- data/ruby/trema/send-out-port.rb +1 -1
- data/ruby/trema/version.rb +1 -1
- data/spec/spec_helper.rb +8 -0
- data/spec/support/action.rb +4 -4
- data/spec/trema/barrier-request_spec.rb +1 -1
- data/spec/trema/cli_spec.rb +1 -3
- data/spec/trema/controller_spec.rb +1 -1
- data/spec/trema/dsl/configuration_spec.rb +24 -24
- data/spec/trema/dsl/link_spec.rb +4 -6
- data/spec/trema/dsl/run_spec.rb +7 -11
- data/spec/trema/dsl/runner_spec.rb +9 -9
- data/spec/trema/dsl/switch_spec.rb +5 -11
- data/spec/trema/dsl/vhost_spec.rb +1 -3
- data/spec/trema/dsl/vswitch_spec.rb +7 -15
- data/spec/trema/echo-request_spec.rb +1 -1
- data/spec/trema/enqueue_spec.rb +4 -4
- data/spec/trema/features-reply_spec.rb +1 -1
- data/spec/trema/features-request_spec.rb +1 -1
- data/spec/trema/flow-removed_spec.rb +19 -19
- data/spec/trema/get-config-request_spec.rb +1 -1
- data/spec/trema/hardware-switch_spec.rb +3 -3
- data/spec/trema/host_spec.rb +2 -2
- data/spec/trema/list-switches-reply_spec.rb +1 -1
- data/spec/trema/mac_spec.rb +1 -1
- data/spec/trema/match_spec.rb +8 -8
- data/spec/trema/open-vswitch_spec.rb +6 -6
- data/spec/trema/openflow-error_spec.rb +15 -15
- data/spec/trema/packet-in_spec.rb +210 -208
- data/spec/trema/packet-out_spec.rb +4 -6
- data/spec/trema/port-mod_spec.rb +28 -29
- data/spec/trema/port-status-modify_spec.rb +2 -2
- data/spec/trema/port_spec.rb +9 -9
- data/spec/trema/queue-get-config-reply_spec.rb +2 -2
- data/spec/trema/send-out-port_spec.rb +53 -43
- data/spec/trema/set-config_spec.rb +2 -2
- data/spec/trema/set-eth-dst-addr_spec.rb +3 -3
- data/spec/trema/set-eth-src-addr_spec.rb +3 -3
- data/spec/trema/set-ip-dst-addr_spec.rb +20 -16
- data/spec/trema/set-ip-src-addr_spec.rb +20 -16
- data/spec/trema/set-ip-tos_spec.rb +20 -21
- data/spec/trema/set-transport-dst-port_spec.rb +22 -23
- data/spec/trema/set-transport-src-port_spec.rb +22 -23
- data/spec/trema/set-vlan-priority_spec.rb +20 -21
- data/spec/trema/set-vlan-vid_spec.rb +20 -21
- data/spec/trema/shell/vhost_spec.rb +7 -7
- data/spec/trema/shell/vswitch_spec.rb +8 -8
- data/spec/trema/stats-reply_spec.rb +23 -23
- data/spec/trema/strip-vlan-header_spec.rb +9 -9
- data/spec/trema/switch-daemon_spec.rb +15 -15
- data/spec/trema/util_spec.rb +2 -6
- data/spec/trema/vendor-action_spec.rb +24 -36
- metadata +4 -4
@@ -29,7 +29,7 @@ shared_examples_for "echo reply message" do
|
|
29
29
|
}.run( EchoReplyController ) {
|
30
30
|
controller( "EchoReplyController" ).send_message( 0xabc, subject )
|
31
31
|
sleep 2 # FIXME: wait to send_message
|
32
|
-
IO.read( File.join( Trema.log, "openflowd.echo.log" ) ).
|
32
|
+
expect( IO.read( File.join( Trema.log, "openflowd.echo.log" ) ) ).to include( "OFPT_ECHO_REPLY" )
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
data/spec/trema/enqueue_spec.rb
CHANGED
@@ -32,7 +32,7 @@ end
|
|
32
32
|
|
33
33
|
describe Enqueue, ".new( :port_number => number, :queue_id => 1 )" do
|
34
34
|
subject { Enqueue.new :port_number => port_number, :queue_id => 1 }
|
35
|
-
it_validates "option range", :port_number, 0..( 2 ** 16 - 1 )
|
35
|
+
it_validates "option is within range", :port_number, 0..( 2 ** 16 - 1 )
|
36
36
|
|
37
37
|
context "when :port_number == 1" do
|
38
38
|
let( :port_number ) { 1 }
|
@@ -43,7 +43,7 @@ end
|
|
43
43
|
|
44
44
|
describe Enqueue, ".new( :port_number => 1, :queue_id => number )" do
|
45
45
|
subject { Enqueue.new :port_number => 1, :queue_id => queue_id }
|
46
|
-
it_validates "option range", :queue_id, 0..( 2 ** 32 - 1 )
|
46
|
+
it_validates "option is within range", :queue_id, 0..( 2 ** 32 - 1 )
|
47
47
|
|
48
48
|
context "when :queue_id == 256" do
|
49
49
|
let( :queue_id ) { 256 }
|
@@ -61,8 +61,8 @@ describe Enqueue, ".new( VALID OPTIONS )" do
|
|
61
61
|
}.run( FlowModAddController ) {
|
62
62
|
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => Enqueue.new( :port_number => 1, :queue_id => 123 ) )
|
63
63
|
sleep 2 # FIXME: wait to send_flow_mod
|
64
|
-
vswitch( "0xabc" ).
|
65
|
-
vswitch( "0xabc" ).flows[0].actions.
|
64
|
+
expect( vswitch( "0xabc" ) ).to have( 1 ).flows
|
65
|
+
expect( vswitch( "0xabc" ).flows[0].actions ).to match( /enqueue:1q123/ )
|
66
66
|
}
|
67
67
|
end
|
68
68
|
end
|
@@ -29,7 +29,7 @@ shared_examples_for "features request message" do
|
|
29
29
|
}.run( FeaturesRequestController ) {
|
30
30
|
controller( "FeaturesRequestController" ).send_message( 0xabc, subject )
|
31
31
|
sleep 2 # FIXME: wait to send_message
|
32
|
-
IO.read( File.join( Trema.log, "openflowd.features-request.log" ) ).
|
32
|
+
expect( IO.read( File.join( Trema.log, "openflowd.features-request.log" ) ) ).to include( "OFPT_FEATURES_REQUEST" )
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
@@ -105,25 +105,25 @@ describe Trema::FlowRemoved, ".new( VALID OPTIONS )" do
|
|
105
105
|
vswitch { datapath_id 0xabc }
|
106
106
|
}.run( FlowRemovedController ) {
|
107
107
|
controller( "FlowRemovedController" ).should_receive( :flow_removed ) do | datapath_id, message |
|
108
|
-
datapath_id.
|
109
|
-
message.match.in_port.
|
110
|
-
message.match.dl_src.to_s.
|
111
|
-
message.match.dl_dst.to_s.
|
112
|
-
message.match.dl_type.
|
113
|
-
message.match.dl_vlan.
|
114
|
-
message.match.dl_vlan_pcp.
|
115
|
-
message.match.nw_tos.
|
116
|
-
message.match.nw_proto.
|
117
|
-
Trema::IP.new( message.match.nw_src ).to_s.
|
118
|
-
Trema::IP.new( message.match.nw_dst ).to_s.
|
119
|
-
message.match.tp_src.
|
120
|
-
message.match.tp_dst.
|
121
|
-
message.cookie.
|
122
|
-
message.idle_timeout.
|
123
|
-
message.reason.
|
124
|
-
message.duration_sec.
|
125
|
-
message.packet_count.
|
126
|
-
message.byte_count.
|
108
|
+
expect( datapath_id ).to eq( 0xabc )
|
109
|
+
expect( message.match.in_port ).to eq( 1 )
|
110
|
+
expect( message.match.dl_src.to_s ).to eq( "00:00:00:00:00:01" )
|
111
|
+
expect( message.match.dl_dst.to_s ).to eq( "00:00:00:00:00:02" )
|
112
|
+
expect( message.match.dl_type ).to eq( 0x800 )
|
113
|
+
expect( message.match.dl_vlan ).to eq( 65535 )
|
114
|
+
expect( message.match.dl_vlan_pcp ).to eq( 0 )
|
115
|
+
expect( message.match.nw_tos ).to eq( 0 )
|
116
|
+
expect( message.match.nw_proto ).to eq( 17 )
|
117
|
+
expect( Trema::IP.new( message.match.nw_src ).to_s ).to eq( "192.168.0.1" )
|
118
|
+
expect( Trema::IP.new( message.match.nw_dst ).to_s ).to eq( "192.168.0.2" )
|
119
|
+
expect( message.match.tp_src ).to eq( 1 )
|
120
|
+
expect( message.match.tp_dst ).to eq( 1 )
|
121
|
+
expect( message.cookie ).to eq( 123456789 )
|
122
|
+
expect( message.idle_timeout ).to eq( 1 )
|
123
|
+
expect( message.reason ).to eq( 0 )
|
124
|
+
expect( message.duration_sec ).to be >= 1
|
125
|
+
expect( message.packet_count ).to eq( 0 )
|
126
|
+
expect( message.byte_count ).to eq( 0 )
|
127
127
|
end
|
128
128
|
controller( "FlowRemovedController" ).send_flow_mod_add(
|
129
129
|
0xabc,
|
@@ -29,7 +29,7 @@ shared_examples_for "get config request message" do
|
|
29
29
|
}.run( GetConfigRequestController ) {
|
30
30
|
controller( "GetConfigRequestController" ).send_message( 0xabc, subject )
|
31
31
|
sleep 2 # FIXME: wait to send_message
|
32
|
-
IO.read( File.join( Trema.log, "openflowd.get-config-request.log" ) ).
|
32
|
+
expect( IO.read( File.join( Trema.log, "openflowd.get-config-request.log" ) ) ).to include( "OFPT_GET_CONFIG_REQUEST" )
|
33
33
|
}
|
34
34
|
end
|
35
35
|
end
|
@@ -33,17 +33,17 @@ module Trema
|
|
33
33
|
|
34
34
|
|
35
35
|
it "should return its name" do
|
36
|
-
@switch.name.
|
36
|
+
expect( @switch.name ).to eq( "0xabc" )
|
37
37
|
end
|
38
38
|
|
39
39
|
|
40
40
|
it "should return dpid in long format" do
|
41
|
-
@switch.dpid_long.
|
41
|
+
expect( @switch.dpid_long ).to eq( "0000000000000abc" )
|
42
42
|
end
|
43
43
|
|
44
44
|
|
45
45
|
it "should return dpid in short format" do
|
46
|
-
@switch.dpid_short.
|
46
|
+
expect( @switch.dpid_short ).to eq( "0xabc" )
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
data/spec/trema/host_spec.rb
CHANGED
@@ -166,7 +166,7 @@ module Trema
|
|
166
166
|
it "should get tx stats" do
|
167
167
|
@cli.should_receive( :tx_stats ).and_return( @stats )
|
168
168
|
|
169
|
-
@host.tx_stats.
|
169
|
+
expect( @host.tx_stats ).to eq( @stats )
|
170
170
|
end
|
171
171
|
end
|
172
172
|
end
|
@@ -177,7 +177,7 @@ module Trema
|
|
177
177
|
it "should get rx stats" do
|
178
178
|
@cli.should_receive( :rx_stats ).and_return( @stats )
|
179
179
|
|
180
|
-
@host.rx_stats.
|
180
|
+
expect( @host.rx_stats ).to eq( @stats )
|
181
181
|
end
|
182
182
|
end
|
183
183
|
end
|
@@ -32,7 +32,7 @@ describe Controller do
|
|
32
32
|
vswitch { datapath_id 0x3 }
|
33
33
|
}.run( ListSwitchesController ) {
|
34
34
|
controller( "ListSwitchesController" ).should_receive( :list_switches_reply ) do | dpids |
|
35
|
-
dpids.
|
35
|
+
expect( dpids ).to eq( [ 0x1, 0x2, 0x3 ] )
|
36
36
|
end
|
37
37
|
controller( "ListSwitchesController" ).send_list_switches_request
|
38
38
|
}
|
data/spec/trema/mac_spec.rb
CHANGED
@@ -86,7 +86,7 @@ module Trema
|
|
86
86
|
it "can be used for Hash keys" do
|
87
87
|
fdb = {}
|
88
88
|
fdb[ Mac.new( "00:00:00:00:00:01" ) ] = "Port #1"
|
89
|
-
fdb[ Mac.new( "00:00:00:00:00:01" ) ].
|
89
|
+
expect( fdb[ Mac.new( "00:00:00:00:00:01" ) ] ).to eq( "Port #1" )
|
90
90
|
end
|
91
91
|
end
|
92
92
|
end
|
data/spec/trema/match_spec.rb
CHANGED
@@ -40,17 +40,17 @@ describe Match, ".new" do
|
|
40
40
|
)
|
41
41
|
}
|
42
42
|
its( :in_port ) { should == 1 }
|
43
|
-
its(
|
44
|
-
its(
|
43
|
+
its( "dl_src.to_s" ) { should == "00:00:00:00:00:01" }
|
44
|
+
its( "dl_dst.to_s" ) { should == "00:00:00:00:00:02" }
|
45
45
|
its( :dl_vlan ) { should == 65535 }
|
46
46
|
its( :dl_vlan_pcp ) { should == 0 }
|
47
47
|
its( :dl_type ) { should == 0x800 }
|
48
48
|
its( :nw_tos ) { should == 0 }
|
49
49
|
its( :nw_proto ) { should == 17 }
|
50
|
-
its(
|
51
|
-
its(
|
52
|
-
its(
|
53
|
-
its(
|
50
|
+
its( "nw_src.to_s" ) { should == "192.168.0.1" }
|
51
|
+
its( "nw_src.prefixlen" ) { should == 32 }
|
52
|
+
its( "nw_dst.to_s" ) { should == "192.168.0.0" }
|
53
|
+
its( "nw_dst.prefixlen" ) { should == 24 }
|
54
54
|
its( :tp_src ) { should == 10 }
|
55
55
|
its( :tp_dst ) { should == 20 }
|
56
56
|
its( :to_s ) { should == "wildcards = 0x20000(nw_dst(8)), in_port = 1, dl_src = 00:00:00:00:00:01, dl_dst = 00:00:00:00:00:02, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 17, nw_src = 192.168.0.1/32, nw_dst = 192.168.0.0/24, tp_src = 10, tp_dst = 20" }
|
@@ -78,7 +78,7 @@ describe Match, ".compare" do
|
|
78
78
|
:nw_src => "192.168.0.0/24",
|
79
79
|
:nw_dst => "192.168.0.0/24"
|
80
80
|
)
|
81
|
-
pattern.compare( tester ).
|
81
|
+
expect( pattern.compare( tester ) ).to be_true
|
82
82
|
end
|
83
83
|
|
84
84
|
it "Should not match" do
|
@@ -101,7 +101,7 @@ describe Match, ".compare" do
|
|
101
101
|
:nw_src => "10.0.0.0/8",
|
102
102
|
:nw_dst => "10.0.0.0/8"
|
103
103
|
)
|
104
|
-
pattern.compare( tester ).
|
104
|
+
expect( pattern.compare( tester ) ).to be_false
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
@@ -38,10 +38,10 @@ module Trema
|
|
38
38
|
OpenVswitch.new mock( "stanza 1", :name => "vswitch 1", :validate => true )
|
39
39
|
OpenVswitch.new mock( "stanza 2", :name => "vswitch 2", :validate => true )
|
40
40
|
|
41
|
-
OpenflowSwitch.
|
42
|
-
OpenflowSwitch[ "vswitch 0" ].
|
43
|
-
OpenflowSwitch[ "vswitch 1" ].
|
44
|
-
OpenflowSwitch[ "vswitch 2" ].
|
41
|
+
expect( OpenflowSwitch ).to have( 3 ).vswitches
|
42
|
+
expect( OpenflowSwitch[ "vswitch 0" ] ).not_to be_nil
|
43
|
+
expect( OpenflowSwitch[ "vswitch 1" ] ).not_to be_nil
|
44
|
+
expect( OpenflowSwitch[ "vswitch 2" ] ).not_to be_nil
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -94,7 +94,7 @@ module Trema
|
|
94
94
|
|
95
95
|
it "should execute ovs openflowd" do
|
96
96
|
subject.should_receive( :sh ).with do | command |
|
97
|
-
command.
|
97
|
+
expect( command ).to include( Executables.ovs_openflowd )
|
98
98
|
end
|
99
99
|
|
100
100
|
subject.run!
|
@@ -106,7 +106,7 @@ module Trema
|
|
106
106
|
subject << "VirtualInterface2"
|
107
107
|
|
108
108
|
subject.should_receive( :sh ).with do | command |
|
109
|
-
command.
|
109
|
+
expect( command ).to include( "--ports=VirtualInterface0,VirtualInterface1,VirtualInterface2" )
|
110
110
|
end
|
111
111
|
|
112
112
|
subject.run!
|
@@ -34,9 +34,9 @@ describe Trema::OpenflowError, "new" do
|
|
34
34
|
:advertise => 0
|
35
35
|
)
|
36
36
|
controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
|
37
|
-
datapath_id.
|
38
|
-
message.type.
|
39
|
-
message.code.
|
37
|
+
expect( datapath_id ).to eq( 0xabc )
|
38
|
+
expect( message.type ).to eq( Error::OFPET_PORT_MOD_FAILED )
|
39
|
+
expect( message.code ).to eq( Error::OFPPMFC_BAD_PORT )
|
40
40
|
end
|
41
41
|
controller( "OpenflowErrorController" ).send_message( 0xabc, port_mod )
|
42
42
|
sleep 2 # FIXME: wait to send_message
|
@@ -62,9 +62,9 @@ describe Trema::OpenflowError, "new" do
|
|
62
62
|
:advertise => 0
|
63
63
|
)
|
64
64
|
controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
|
65
|
-
datapath_id.
|
66
|
-
message.type.
|
67
|
-
message.code.
|
65
|
+
expect( datapath_id ).to eq( 0xabc )
|
66
|
+
expect( message.type ).to eq( Error::OFPET_PORT_MOD_FAILED )
|
67
|
+
expect( message.code ).to eq( Error::OFPPMFC_BAD_HW_ADDR )
|
68
68
|
end
|
69
69
|
controller( "OpenflowErrorController" ).send_message( 0xabc, port_mod )
|
70
70
|
sleep 2 # FIXME: wait to send_message
|
@@ -84,9 +84,9 @@ describe Trema::OpenflowError, "new" do
|
|
84
84
|
link "host2", "error-port"
|
85
85
|
}.run( OpenflowErrorController ) {
|
86
86
|
controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
|
87
|
-
datapath_id.
|
88
|
-
message.type.
|
89
|
-
message.code.
|
87
|
+
expect( datapath_id ).to eq( 0xabc )
|
88
|
+
expect( message.type ).to eq( Error::OFPET_BAD_ACTION )
|
89
|
+
expect( message.code ).to eq( Error::OFPBAC_BAD_OUT_PORT )
|
90
90
|
end
|
91
91
|
controller( "OpenflowErrorController" ).send_flow_mod_add( 0xabc, :actions => ActionOutput.new( :port => 0x5555 ) )
|
92
92
|
sleep 2 # FIXME: wait to send_flow_mod_add
|
@@ -103,23 +103,23 @@ describe Trema::OpenflowError, "new" do
|
|
103
103
|
}.run( OpenflowController ) {
|
104
104
|
queue_get_config_request = Trema::QueueGetConfigRequest.new( :port => 1 )
|
105
105
|
controller( "OpenflowController" ).should_receive( :openflow_error ) do | datapath_id, message |
|
106
|
-
message.datapath_id.
|
107
|
-
message.type.
|
106
|
+
expect( message.datapath_id ).to eq( 0xabc )
|
107
|
+
expect( message.type ).to satisfy { | n |
|
108
108
|
n >= 0 && n <= 5
|
109
109
|
}
|
110
110
|
case message.type
|
111
111
|
when 0,4
|
112
|
-
message.code.
|
112
|
+
expect( message.code ).to include( 0,1 )
|
113
113
|
when 1,2
|
114
|
-
message.code.
|
114
|
+
expect( message.code ).to satisfy { | n |
|
115
115
|
n >= 0 && n <= 8
|
116
116
|
}
|
117
117
|
when 3
|
118
|
-
message.code.
|
118
|
+
expect( message.code ).to satisfy { | n |
|
119
119
|
n >= 0 && n <= 5
|
120
120
|
}
|
121
121
|
when 5
|
122
|
-
message.code.
|
122
|
+
expect( message.code ).to satisfy { |n|
|
123
123
|
n >= 0 && n <= 3
|
124
124
|
}
|
125
125
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
# Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
3
2
|
#
|
4
3
|
# Copyright (C) 2008-2012 NEC Corporation
|
@@ -56,9 +55,9 @@ describe Trema::PacketIn do
|
|
56
55
|
link "test", "host2"
|
57
56
|
}.run( PacketInController ) {
|
58
57
|
controller( "PacketInController" ).should_receive( :packet_in ) do | datapath_id, message |
|
59
|
-
datapath_id.
|
60
|
-
message.datapath_id.
|
61
|
-
message.in_port.
|
58
|
+
expect( datapath_id ).to eq( 0xabc )
|
59
|
+
expect( message.datapath_id ).to eq( 0xabc )
|
60
|
+
expect( message.in_port ).to be > 0
|
62
61
|
end
|
63
62
|
send_and_wait
|
64
63
|
}
|
@@ -77,22 +76,22 @@ describe Trema::PacketIn do
|
|
77
76
|
}.run( PacketInController ) {
|
78
77
|
controller( "PacketInController" ).should_receive( :packet_in ) do | datapath_id, message |
|
79
78
|
# packet_in expected to have data portion.
|
80
|
-
message.total_len.
|
81
|
-
message.data.
|
82
|
-
message.buffered
|
83
|
-
|
84
|
-
message.macsa.
|
85
|
-
message.macsa.to_s.
|
86
|
-
message.macda.
|
87
|
-
message.macda.to_s.
|
88
|
-
|
89
|
-
message.eth_type.
|
90
|
-
message.ipv4
|
91
|
-
message.ipv4_version.
|
92
|
-
message.ipv4_saddr.
|
93
|
-
message.ipv4_saddr.to_s.
|
94
|
-
message.ipv4_daddr.
|
95
|
-
message.ipv4_daddr.to_s.
|
79
|
+
expect( message.total_len ).to be > 20
|
80
|
+
expect( message.data ).to be_instance_of( String )
|
81
|
+
expect( message.buffered? ).to be_false
|
82
|
+
|
83
|
+
expect( message.macsa ).to be_instance_of( Trema::Mac )
|
84
|
+
expect( message.macsa.to_s ).to eq( "00:00:00:00:00:01" )
|
85
|
+
expect( message.macda ).to be_instance_of( Trema::Mac )
|
86
|
+
expect( message.macda.to_s ).to eq( "00:00:00:00:00:02" )
|
87
|
+
|
88
|
+
expect( message.eth_type ).to eq( 0x0800 )
|
89
|
+
expect( message.ipv4? ).to be_true
|
90
|
+
expect( message.ipv4_version ).to eq( 4 )
|
91
|
+
expect( message.ipv4_saddr ).to be_instance_of( Trema::IP )
|
92
|
+
expect( message.ipv4_saddr.to_s ).to eq( "192.168.1.1" )
|
93
|
+
expect( message.ipv4_daddr ).to be_instance_of( Trema::IP )
|
94
|
+
expect( message.ipv4_daddr.to_s ).to eq( "192.168.1.2" )
|
96
95
|
end
|
97
96
|
send_and_wait
|
98
97
|
}
|
@@ -130,66 +129,66 @@ describe Trema::PacketIn do
|
|
130
129
|
0x00, 0x00
|
131
130
|
].pack( "C*" )
|
132
131
|
controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
|
133
|
-
message.in_port.
|
134
|
-
message.vtag
|
135
|
-
message.arp
|
136
|
-
message.ipv4
|
137
|
-
message.tcp
|
138
|
-
message.udp
|
139
|
-
message.icmpv4
|
140
|
-
message.igmp
|
141
|
-
|
142
|
-
message.arp_oper.
|
143
|
-
message.arp_sha.to_s.
|
144
|
-
message.arp_spa.to_s.
|
145
|
-
message.arp_tha.to_s.
|
146
|
-
message.arp_tpa.to_s.
|
147
|
-
message.arp_request
|
148
|
-
message.arp_reply
|
149
|
-
|
150
|
-
message.vlan_tpid.
|
151
|
-
message.vlan_tci.
|
152
|
-
message.vlan_prio.
|
153
|
-
message.vlan_cfi.
|
154
|
-
message.vlan_vid.
|
155
|
-
|
156
|
-
message.ipv4_version.
|
157
|
-
message.ipv4_ihl.
|
158
|
-
message.ipv4_tos.
|
159
|
-
message.ipv4_tot_len.
|
160
|
-
message.ipv4_id.
|
161
|
-
message.ipv4_frag_off.
|
162
|
-
message.ipv4_ttl.
|
163
|
-
message.ipv4_protocol.
|
164
|
-
message.ipv4_checksum.
|
165
|
-
message.ipv4_saddr.
|
166
|
-
message.ipv4_daddr.
|
167
|
-
|
168
|
-
message.icmpv4_type.
|
169
|
-
message.icmpv4_code.
|
170
|
-
message.icmpv4_checksum.
|
171
|
-
message.icmpv4_id.
|
172
|
-
message.icmpv4_seq.
|
173
|
-
message.icmpv4_gateway.
|
174
|
-
|
175
|
-
message.igmp_type.
|
176
|
-
message.igmp_checksum.
|
177
|
-
message.igmp_group.
|
178
|
-
|
179
|
-
message.tcp_src_port.
|
180
|
-
message.tcp_dst_port.
|
181
|
-
message.tcp_seq_no.
|
182
|
-
message.tcp_ack_no.
|
183
|
-
message.tcp_offset.
|
184
|
-
message.tcp_flags.
|
185
|
-
message.tcp_window.
|
186
|
-
message.tcp_checksum.
|
187
|
-
message.tcp_urgent.
|
188
|
-
|
189
|
-
message.udp_src_port.
|
190
|
-
message.udp_dst_port.
|
191
|
-
message.udp_checksum.
|
192
|
-
message.udp_len.
|
132
|
+
expect( message.in_port ).to be > 0
|
133
|
+
expect( message.vtag? ).to be_false
|
134
|
+
expect( message.arp? ).to be_true
|
135
|
+
expect( message.ipv4? ).to be_false
|
136
|
+
expect( message.tcp? ).to be_false
|
137
|
+
expect( message.udp? ).to be_false
|
138
|
+
expect( message.icmpv4? ).to be_false
|
139
|
+
expect( message.igmp? ).to be_false
|
140
|
+
|
141
|
+
expect( message.arp_oper ).to eq( 2 )
|
142
|
+
expect( message.arp_sha.to_s ).to eq( "00:00:00:00:00:01" )
|
143
|
+
expect( message.arp_spa.to_s ).to eq( "192.168.0.1" )
|
144
|
+
expect( message.arp_tha.to_s ).to eq( "00:00:00:00:00:02" )
|
145
|
+
expect( message.arp_tpa.to_s ).to eq( "192.168.0.2" )
|
146
|
+
expect( message.arp_request? ).to be_false
|
147
|
+
expect( message.arp_reply? ).to be_true
|
148
|
+
|
149
|
+
expect( message.vlan_tpid ).to be_nil
|
150
|
+
expect( message.vlan_tci ).to be_nil
|
151
|
+
expect( message.vlan_prio ).to be_nil
|
152
|
+
expect( message.vlan_cfi ).to be_nil
|
153
|
+
expect( message.vlan_vid ).to be_nil
|
154
|
+
|
155
|
+
expect( message.ipv4_version ).to be_nil
|
156
|
+
expect( message.ipv4_ihl ).to be_nil
|
157
|
+
expect( message.ipv4_tos ).to be_nil
|
158
|
+
expect( message.ipv4_tot_len ).to be_nil
|
159
|
+
expect( message.ipv4_id ).to be_nil
|
160
|
+
expect( message.ipv4_frag_off ).to be_nil
|
161
|
+
expect( message.ipv4_ttl ).to be_nil
|
162
|
+
expect( message.ipv4_protocol ).to be_nil
|
163
|
+
expect( message.ipv4_checksum ).to be_nil
|
164
|
+
expect( message.ipv4_saddr ).to be_nil
|
165
|
+
expect( message.ipv4_daddr ).to be_nil
|
166
|
+
|
167
|
+
expect( message.icmpv4_type ).to be_nil
|
168
|
+
expect( message.icmpv4_code ).to be_nil
|
169
|
+
expect( message.icmpv4_checksum ).to be_nil
|
170
|
+
expect( message.icmpv4_id ).to be_nil
|
171
|
+
expect( message.icmpv4_seq ).to be_nil
|
172
|
+
expect( message.icmpv4_gateway ).to be_nil
|
173
|
+
|
174
|
+
expect( message.igmp_type ).to be_nil
|
175
|
+
expect( message.igmp_checksum ).to be_nil
|
176
|
+
expect( message.igmp_group ).to be_nil
|
177
|
+
|
178
|
+
expect( message.tcp_src_port ).to be_nil
|
179
|
+
expect( message.tcp_dst_port ).to be_nil
|
180
|
+
expect( message.tcp_seq_no ).to be_nil
|
181
|
+
expect( message.tcp_ack_no ).to be_nil
|
182
|
+
expect( message.tcp_offset ).to be_nil
|
183
|
+
expect( message.tcp_flags ).to be_nil
|
184
|
+
expect( message.tcp_window ).to be_nil
|
185
|
+
expect( message.tcp_checksum ).to be_nil
|
186
|
+
expect( message.tcp_urgent ).to be_nil
|
187
|
+
|
188
|
+
expect( message.udp_src_port ).to be_nil
|
189
|
+
expect( message.udp_dst_port ).to be_nil
|
190
|
+
expect( message.udp_checksum ).to be_nil
|
191
|
+
expect( message.udp_len ).to be_nil
|
193
192
|
end
|
194
193
|
|
195
194
|
controller( "PacketInSendController" ).send_packet_out(
|
@@ -240,42 +239,42 @@ describe Trema::PacketIn do
|
|
240
239
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
241
240
|
].pack( "C*" )
|
242
241
|
controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
|
243
|
-
message.in_port.
|
244
|
-
message.vtag
|
245
|
-
message.arp
|
246
|
-
message.ipv4
|
247
|
-
message.udp
|
248
|
-
message.tcp
|
249
|
-
message.icmpv4
|
250
|
-
message.igmp
|
251
|
-
|
252
|
-
message.ipv4_version.
|
253
|
-
message.ipv4_ihl.
|
254
|
-
message.ipv4_tos.
|
255
|
-
message.ipv4_tot_len.
|
256
|
-
message.ipv4_id.
|
257
|
-
message.ipv4_frag_off.
|
258
|
-
message.ipv4_ttl.
|
259
|
-
message.ipv4_protocol.
|
260
|
-
message.ipv4_checksum.
|
261
|
-
message.ipv4_saddr.to_s.
|
262
|
-
message.ipv4_daddr.to_s.
|
263
|
-
|
264
|
-
message.tcp_src_port.
|
265
|
-
message.tcp_dst_port.
|
266
|
-
message.tcp_seq_no.
|
267
|
-
message.tcp_ack_no.
|
268
|
-
message.tcp_offset.
|
269
|
-
message.tcp_flags.
|
270
|
-
message.tcp_window.
|
271
|
-
message.tcp_checksum.
|
272
|
-
message.tcp_urgent.
|
273
|
-
|
274
|
-
message.arp_oper.
|
275
|
-
message.arp_sha.
|
276
|
-
message.arp_spa.
|
277
|
-
message.arp_tha.
|
278
|
-
message.arp_tpa.
|
242
|
+
expect( message.in_port ).to be > 0
|
243
|
+
expect( message.vtag? ).to be_false
|
244
|
+
expect( message.arp? ).to be_false
|
245
|
+
expect( message.ipv4? ).to be_true
|
246
|
+
expect( message.udp? ).to be_false
|
247
|
+
expect( message.tcp? ).to be_true
|
248
|
+
expect( message.icmpv4? ).to be_false
|
249
|
+
expect( message.igmp? ).to be_false
|
250
|
+
|
251
|
+
expect( message.ipv4_version ).to eq( 4 )
|
252
|
+
expect( message.ipv4_ihl ).to eq( 5 )
|
253
|
+
expect( message.ipv4_tos ).to eq( 0 )
|
254
|
+
expect( message.ipv4_tot_len ).to eq( 0x28 )
|
255
|
+
expect( message.ipv4_id ).to eq( 0 )
|
256
|
+
expect( message.ipv4_frag_off ).to eq( 0 )
|
257
|
+
expect( message.ipv4_ttl ).to eq( 0 )
|
258
|
+
expect( message.ipv4_protocol ).to eq( 6 )
|
259
|
+
expect( message.ipv4_checksum ).to eq( 0x397d )
|
260
|
+
expect( message.ipv4_saddr.to_s ).to eq( "192.168.0.1" )
|
261
|
+
expect( message.ipv4_daddr.to_s ).to eq( "192.168.0.2" )
|
262
|
+
|
263
|
+
expect( message.tcp_src_port ).to eq( 1 )
|
264
|
+
expect( message.tcp_dst_port ).to eq( 2 )
|
265
|
+
expect( message.tcp_seq_no ).to eq( 0 )
|
266
|
+
expect( message.tcp_ack_no ).to eq( 0 )
|
267
|
+
expect( message.tcp_offset ).to eq( 5 )
|
268
|
+
expect( message.tcp_flags ).to eq( 0 )
|
269
|
+
expect( message.tcp_window ).to eq( 0 )
|
270
|
+
expect( message.tcp_checksum ).to eq( 11910 ) # 0x2e86
|
271
|
+
expect( message.tcp_urgent ).to eq( 0 )
|
272
|
+
|
273
|
+
expect( message.arp_oper ).to be_nil
|
274
|
+
expect( message.arp_sha ).to be_nil
|
275
|
+
expect( message.arp_spa ).to be_nil
|
276
|
+
expect( message.arp_tha ).to be_nil
|
277
|
+
expect( message.arp_tpa ).to be_nil
|
279
278
|
end
|
280
279
|
|
281
280
|
controller( "PacketInSendController" ).send_packet_out(
|
@@ -323,31 +322,32 @@ describe Trema::PacketIn do
|
|
323
322
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
324
323
|
].pack( "C*" )
|
325
324
|
controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
|
326
|
-
message.in_port.
|
327
|
-
message.vtag
|
328
|
-
message.arp
|
329
|
-
message.ipv4
|
330
|
-
message.tcp
|
331
|
-
message.udp
|
332
|
-
message.icmpv4
|
333
|
-
message.igmp
|
334
|
-
|
335
|
-
|
336
|
-
message.
|
337
|
-
message.
|
338
|
-
message.
|
339
|
-
message.
|
340
|
-
message.
|
341
|
-
message.
|
342
|
-
message.
|
343
|
-
message.
|
344
|
-
message.
|
345
|
-
message.
|
346
|
-
|
347
|
-
|
348
|
-
message.
|
349
|
-
message.
|
350
|
-
message.
|
325
|
+
expect( message.in_port ).to be > 0
|
326
|
+
expect( message.vtag? ).to be_false
|
327
|
+
expect( message.arp? ).to be_false
|
328
|
+
expect( message.ipv4? ).to be_true
|
329
|
+
expect( message.tcp? ).to be_false
|
330
|
+
expect( message.udp? ).to be_true
|
331
|
+
expect( message.icmpv4? ).to be_false
|
332
|
+
expect( message.igmp? ).to be_false
|
333
|
+
|
334
|
+
|
335
|
+
expect( message.ipv4_version ).to eq( 4 )
|
336
|
+
expect( message.ipv4_ihl ).to eq( 5 )
|
337
|
+
expect( message.ipv4_tos ).to eq( 0 )
|
338
|
+
expect( message.ipv4_tot_len ).to eq( 0x32 )
|
339
|
+
expect( message.ipv4_id ).to eq( 0 )
|
340
|
+
expect( message.ipv4_frag_off ).to eq( 0 )
|
341
|
+
expect( message.ipv4_ttl ).to eq( 0x40 )
|
342
|
+
expect( message.ipv4_protocol ).to eq( 17 )
|
343
|
+
expect( message.ipv4_checksum ).to eq( 0xf968 )
|
344
|
+
expect( message.ipv4_saddr.to_s ).to eq( "192.168.0.1" )
|
345
|
+
expect( message.ipv4_daddr.to_s ).to eq( "192.168.0.2" )
|
346
|
+
|
347
|
+
expect( message.udp_src_port ).to eq( 1 )
|
348
|
+
expect( message.udp_dst_port ).to eq( 2 )
|
349
|
+
expect( message.udp_checksum ).to eq( 0 )
|
350
|
+
expect( message.udp_len ).to eq( 0x1e )
|
351
351
|
end
|
352
352
|
|
353
353
|
controller( "PacketInSendController" ).send_packet_out(
|
@@ -375,6 +375,8 @@ describe Trema::PacketIn do
|
|
375
375
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # dst
|
376
376
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
|
377
377
|
# vlan tag
|
378
|
+
|
379
|
+
|
378
380
|
0x81, 0x00, # tpid
|
379
381
|
0x0f, 0x9f, # tci
|
380
382
|
0x08, 0x00, # ether type
|
@@ -400,44 +402,44 @@ describe Trema::PacketIn do
|
|
400
402
|
0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69
|
401
403
|
].pack( "C*" )
|
402
404
|
controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
|
403
|
-
message.in_port.
|
404
|
-
message.vtag
|
405
|
-
message.arp
|
406
|
-
message.ipv4
|
407
|
-
message.udp
|
408
|
-
message.tcp
|
409
|
-
message.icmpv4
|
410
|
-
message.igmp
|
411
|
-
|
412
|
-
message.vlan_tpid.
|
413
|
-
message.vlan_tci.
|
414
|
-
message.vlan_prio.
|
415
|
-
message.vlan_cfi.
|
416
|
-
message.vlan_vid.
|
417
|
-
message.eth_type.
|
418
|
-
|
419
|
-
message.ipv4_version.
|
420
|
-
message.ipv4_ihl.
|
421
|
-
message.ipv4_tos.
|
422
|
-
message.ipv4_tot_len.
|
423
|
-
message.ipv4_id.
|
424
|
-
message.ipv4_frag_off.
|
425
|
-
message.ipv4_ttl.
|
426
|
-
message.ipv4_protocol.
|
427
|
-
message.ipv4_checksum.
|
428
|
-
message.ipv4_saddr.to_s.
|
429
|
-
message.ipv4_daddr.to_s.
|
430
|
-
|
431
|
-
message.icmpv4_type.
|
432
|
-
message.icmpv4_code.
|
433
|
-
message.icmpv4_checksum.
|
434
|
-
message.icmpv4_id.
|
435
|
-
message.icmpv4_seq.
|
436
|
-
|
437
|
-
message.icmpv4_echo_reply
|
438
|
-
message.icmpv4_dst_unreach
|
439
|
-
message.icmpv4_redirect
|
440
|
-
message.icmpv4_echo_request
|
405
|
+
expect( message.in_port ).to be > 0
|
406
|
+
expect( message.vtag? ).to be_true
|
407
|
+
expect( message.arp? ).to be_false
|
408
|
+
expect( message.ipv4? ).to be_true
|
409
|
+
expect( message.udp? ).to be_false
|
410
|
+
expect( message.tcp? ).to be_false
|
411
|
+
expect( message.icmpv4? ).to be_true
|
412
|
+
expect( message.igmp? ).to be_false
|
413
|
+
|
414
|
+
expect( message.vlan_tpid ).to eq( 0x8100 )
|
415
|
+
expect( message.vlan_tci ).to eq( 0x0f9f )
|
416
|
+
expect( message.vlan_prio ).to eq( 0 )
|
417
|
+
expect( message.vlan_cfi ).to eq( 0 )
|
418
|
+
expect( message.vlan_vid ).to eq( 0xf9f )
|
419
|
+
expect( message.eth_type ).to eq( 0x0800 )
|
420
|
+
|
421
|
+
expect( message.ipv4_version ).to eq( 4 )
|
422
|
+
expect( message.ipv4_ihl ).to eq( 5 )
|
423
|
+
expect( message.ipv4_tos ).to eq( 0 )
|
424
|
+
expect( message.ipv4_tot_len ).to eq( 0x003c )
|
425
|
+
expect( message.ipv4_id ).to eq( 0x8c1b )
|
426
|
+
expect( message.ipv4_frag_off ).to eq( 0 )
|
427
|
+
expect( message.ipv4_ttl ).to eq( 0x80 )
|
428
|
+
expect( message.ipv4_protocol ).to eq( 1 )
|
429
|
+
expect( message.ipv4_checksum ).to eq( 0xed09 )
|
430
|
+
expect( message.ipv4_saddr.to_s ).to eq( "192.168.32.74" )
|
431
|
+
expect( message.ipv4_daddr.to_s ).to eq( "192.168.32.1" )
|
432
|
+
|
433
|
+
expect( message.icmpv4_type ).to eq( 8 )
|
434
|
+
expect( message.icmpv4_code ).to eq( 0 )
|
435
|
+
expect( message.icmpv4_checksum ).to eq( 0xe95b )
|
436
|
+
expect( message.icmpv4_id ).to eq( 0x0400 )
|
437
|
+
expect( message.icmpv4_seq ).to eq( 0x6000 )
|
438
|
+
|
439
|
+
expect( message.icmpv4_echo_reply? ).to be_false
|
440
|
+
expect( message.icmpv4_dst_unreach? ).to be_false
|
441
|
+
expect( message.icmpv4_redirect? ).to be_false
|
442
|
+
expect( message.icmpv4_echo_request? ).to be_true
|
441
443
|
end
|
442
444
|
|
443
445
|
controller( "PacketInSendController" ).send_packet_out(
|
@@ -483,35 +485,35 @@ describe Trema::PacketIn do
|
|
483
485
|
0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69
|
484
486
|
].pack( "C*" )
|
485
487
|
controller( "PacketInSendController" ).should_receive( :packet_in ) do | datapath_id, message |
|
486
|
-
message.in_port.
|
487
|
-
message.vtag
|
488
|
-
message.arp
|
489
|
-
message.ipv4
|
490
|
-
message.udp
|
491
|
-
message.tcp
|
492
|
-
message.icmpv4
|
493
|
-
message.igmp
|
494
|
-
|
495
|
-
message.igmp_membership_query
|
496
|
-
message.igmp_v1_membership_report
|
497
|
-
message.igmp_v2_membership_report
|
498
|
-
message.igmp_v2_leave_group
|
499
|
-
message.igmp_v3_membership_report
|
500
|
-
|
501
|
-
message.ipv4_version.
|
502
|
-
message.ipv4_ihl.
|
503
|
-
message.ipv4_tos.
|
504
|
-
message.ipv4_tot_len.
|
505
|
-
message.ipv4_id.
|
506
|
-
message.ipv4_frag_off.
|
507
|
-
message.ipv4_ttl.
|
508
|
-
message.ipv4_protocol.
|
509
|
-
message.ipv4_checksum.
|
510
|
-
message.ipv4_saddr.to_s.
|
511
|
-
message.ipv4_daddr.to_s.
|
512
|
-
|
513
|
-
message.igmp_type.
|
514
|
-
message.igmp_checksum.
|
488
|
+
expect( message.in_port ).to be > 0
|
489
|
+
expect( message.vtag? ).to be_false
|
490
|
+
expect( message.arp? ).to be_false
|
491
|
+
expect( message.ipv4? ).to be_true
|
492
|
+
expect( message.udp? ).to be_false
|
493
|
+
expect( message.tcp? ).to be_false
|
494
|
+
expect( message.icmpv4? ).to be_false
|
495
|
+
expect( message.igmp? ).to be_true
|
496
|
+
|
497
|
+
expect( message.igmp_membership_query? ).to be_true
|
498
|
+
expect( message.igmp_v1_membership_report? ).to be_false
|
499
|
+
expect( message.igmp_v2_membership_report? ).to be_false
|
500
|
+
expect( message.igmp_v2_leave_group? ).to be_false
|
501
|
+
expect( message.igmp_v3_membership_report? ).to be_false
|
502
|
+
|
503
|
+
expect( message.ipv4_version ).to eq( 4 )
|
504
|
+
expect( message.ipv4_ihl ).to eq( 6 )
|
505
|
+
expect( message.ipv4_tos ).to eq( 0xc0 )
|
506
|
+
expect( message.ipv4_tot_len ).to eq( 0x0020 )
|
507
|
+
expect( message.ipv4_id ).to eq( 0x3aea )
|
508
|
+
expect( message.ipv4_frag_off ).to eq( 0 )
|
509
|
+
expect( message.ipv4_ttl ).to eq( 1 )
|
510
|
+
expect( message.ipv4_protocol ).to eq( 2 )
|
511
|
+
expect( message.ipv4_checksum ).to eq( 0xe458 )
|
512
|
+
expect( message.ipv4_saddr.to_s ).to eq( "192.168.100.43" )
|
513
|
+
expect( message.ipv4_daddr.to_s ).to eq( "224.0.0.1" )
|
514
|
+
|
515
|
+
expect( message.igmp_type ).to eq( 0x11 )
|
516
|
+
expect( message.igmp_checksum ).to eq( 0xee9b )
|
515
517
|
end
|
516
518
|
|
517
519
|
controller( "PacketInSendController" ).send_packet_out(
|