trema 0.2.2.1 → 0.2.3
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/.gitmodules +3 -0
- data/.travis.yml +13 -0
- data/.yardopts +4 -0
- data/Gemfile +2 -3
- data/README.md +43 -97
- data/Rakefile +60 -4
- data/Rantfile +11 -10
- data/cruise.rb +4 -6
- data/features/example.packetin_filter_config.feature +10 -10
- data/features/example.switch_monitor.feature +14 -2
- data/features/step_definitions/kill_steps.rb +2 -2
- data/features/step_definitions/{off_steps.rb → killall_steps.rb} +2 -2
- data/features/step_definitions/misc_steps.rb +1 -1
- data/features/step_definitions/up_steps.rb +30 -0
- data/features/trema.feature +1 -0
- data/features/trema.run.feature +1 -0
- data/locale/README.ja.md +19 -0
- data/locale/ja/yard.po +3762 -0
- data/locale/yard.pot +3740 -0
- data/ruby/extconf.rb +4 -1
- data/ruby/trema/action-common.c +3 -17
- data/ruby/trema/action-common.h +3 -7
- data/ruby/trema/action.rb +33 -0
- data/ruby/trema/app.rb +1 -1
- data/ruby/trema/barrier-request.c +1 -0
- data/ruby/trema/command/run.rb +13 -9
- data/ruby/trema/command/usage.rb +1 -0
- data/ruby/trema/command/version.rb +1 -1
- data/ruby/trema/controller.c +133 -50
- data/ruby/trema/controller.rb +2 -2
- data/ruby/trema/desc-stats-reply.rb +77 -0
- data/ruby/trema/dsl/configuration.rb +3 -14
- data/ruby/trema/dsl/rswitch.rb +47 -0
- data/ruby/trema/dsl/runner.rb +4 -1
- data/ruby/trema/dsl/syntax.rb +11 -8
- data/ruby/trema/echo-reply.c +59 -45
- data/ruby/trema/echo-reply.h +1 -3
- data/ruby/trema/echo-request.c +49 -71
- data/ruby/trema/echo-request.h +0 -2
- data/ruby/trema/echo.c +99 -0
- data/ruby/trema/{action-enqueue.h → echo.h} +6 -7
- data/ruby/trema/enqueue.rb +87 -0
- data/ruby/trema/error.c +109 -104
- data/ruby/trema/error.h +0 -2
- data/ruby/trema/features-reply.c +89 -35
- data/ruby/trema/features-reply.h +0 -6
- data/ruby/trema/features-request.c +63 -37
- data/ruby/trema/features-request.h +0 -2
- data/ruby/trema/flow-mod.c +149 -0
- data/ruby/trema/{action-output.h → flow-mod.h} +6 -6
- data/ruby/trema/get-config-request.c +1 -0
- data/ruby/trema/hardware-switch.rb +88 -0
- data/ruby/trema/hello.c +55 -31
- data/ruby/trema/hello.h +0 -2
- data/ruby/trema/ip.rb +12 -2
- data/ruby/trema/logger.rb +29 -0
- data/ruby/trema/mac.rb +57 -36
- data/ruby/trema/match.c +7 -9
- data/ruby/trema/monkey-patch/integer/ranges.rb +0 -2
- data/ruby/trema/network-component.rb +1 -1
- data/ruby/trema/open-vswitch.rb +2 -2
- data/ruby/trema/openflow-switch.rb +3 -54
- data/ruby/trema/{packet_in.c → packet-in.c} +262 -175
- data/ruby/trema/{packet_in.h → packet-in.h} +0 -2
- data/ruby/trema/packet-queue.rb +4 -3
- data/ruby/trema/port-mod.c +8 -9
- data/ruby/trema/port-status-add.rb +60 -0
- data/ruby/trema/port-status-delete.rb +60 -0
- data/ruby/trema/port-status-modify.rb +60 -0
- data/ruby/trema/port-status.c +48 -15
- data/ruby/trema/port-status.h +6 -8
- data/ruby/trema/port.c +63 -8
- data/ruby/trema/queue-get-config-request.c +1 -0
- data/ruby/trema/ruby-switch.rb +62 -0
- data/ruby/trema/send-out-port.rb +97 -0
- data/ruby/trema/set-config.c +1 -0
- data/ruby/trema/set-eth-addr.rb +45 -0
- data/ruby/trema/set-eth-dst-addr.rb +54 -0
- data/ruby/trema/set-eth-src-addr.rb +54 -0
- data/ruby/trema/set-ip-addr.rb +47 -0
- data/ruby/trema/set-ip-dst-addr.rb +53 -0
- data/ruby/trema/set-ip-src-addr.rb +52 -0
- data/ruby/trema/set-ip-tos.rb +63 -0
- data/ruby/trema/set-transport-dst-port.rb +53 -0
- data/ruby/trema/set-transport-port.rb +52 -0
- data/ruby/trema/set-transport-src-port.rb +54 -0
- data/ruby/trema/set-vlan-priority.rb +65 -0
- data/ruby/trema/set-vlan-vid.rb +64 -0
- data/ruby/trema/shell/down.rb +1 -1
- data/ruby/trema/shell/link.rb +4 -4
- data/ruby/trema/shell/run.rb +8 -6
- data/ruby/trema/shell/up.rb +3 -3
- data/ruby/trema/stats-reply.c +27 -2
- data/ruby/trema/stats-request.c +64 -23
- data/ruby/trema/strip-vlan-header.rb +41 -0
- data/ruby/trema/switch.c +196 -0
- data/ruby/trema/{action-vendor.h → switch.h} +5 -7
- data/ruby/trema/switch.rb +28 -9
- data/ruby/trema/trema-ruby-utils.c +66 -0
- data/ruby/trema/{action-set-dl-src.h → trema-ruby-utils.h} +9 -11
- data/ruby/trema/trema.c +61 -61
- data/ruby/trema/vendor-action.rb +73 -0
- data/ruby/trema/vendor.c +121 -52
- data/ruby/trema/vendor.h +6 -10
- data/ruby/trema/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/action.rb +52 -0
- data/spec/support/mandatory-option.rb +56 -0
- data/spec/support/openflow-message.rb +91 -7
- data/spec/support/port-status.rb +38 -0
- data/spec/trema/controller_spec.rb +0 -26
- data/spec/trema/dsl/configuration_spec.rb +3 -3
- data/spec/trema/dsl/runner_spec.rb +12 -32
- data/spec/trema/dsl/syntax_spec.rb +2 -11
- data/spec/trema/echo-reply_spec.rb +49 -14
- data/spec/trema/echo-request_spec.rb +86 -34
- data/spec/trema/enqueue_spec.rb +76 -0
- data/spec/trema/error_spec.rb +43 -58
- data/spec/trema/features-reply_spec.rb +58 -24
- data/spec/trema/features-request_spec.rb +54 -28
- data/spec/trema/flow-mod_spec.rb +99 -0
- data/spec/trema/{openflow-switch_spec.rb → hardware-switch_spec.rb} +3 -3
- data/spec/trema/hello_spec.rb +28 -14
- data/spec/trema/ip_spec.rb +54 -0
- data/spec/trema/mac_spec.rb +49 -64
- data/spec/trema/match_spec.rb +1 -1
- data/spec/trema/open-vswitch_spec.rb +7 -7
- data/spec/trema/packet-in_spec.rb +73 -16
- data/spec/trema/port-status-add_spec.rb +32 -0
- data/spec/trema/port-status-delete_spec.rb +32 -0
- data/spec/trema/port-status-modify_spec.rb +71 -0
- data/spec/trema/port-status_spec.rb +5 -76
- data/spec/trema/{action-output_spec.rb → send-out-port_spec.rb} +20 -47
- data/spec/trema/set-eth-dst-addr_spec.rb +75 -0
- data/spec/trema/set-eth-src-addr_spec.rb +72 -0
- data/spec/trema/set-ip-dst-addr_spec.rb +58 -0
- data/spec/trema/set-ip-src-addr_spec.rb +58 -0
- data/spec/trema/set-ip-tos_spec.rb +65 -0
- data/spec/trema/set-transport-dst-port_spec.rb +65 -0
- data/spec/trema/set-transport-src-port_spec.rb +65 -0
- data/spec/trema/set-vlan-priority_spec.rb +65 -0
- data/spec/trema/set-vlan-vid_spec.rb +65 -0
- data/spec/trema/shell/vhost_spec.rb +4 -1
- data/spec/trema/shell/vswitch_spec.rb +11 -11
- data/spec/trema/stats-reply_spec.rb +59 -13
- data/spec/trema/stats-request_spec.rb +6 -0
- data/spec/trema/{action-strip-vlan_spec.rb → strip-vlan-header_spec.rb} +3 -17
- data/spec/trema/switch-daemon_spec.rb +39 -0
- data/spec/trema/vendor-action_spec.rb +81 -0
- data/spec/trema/vendor_spec.rb +76 -0
- data/spec/trema_spec.rb +56 -0
- data/src/examples/dumper/dumper.c +0 -8
- data/src/examples/dumper/dumper.rb +52 -52
- data/src/examples/hello_trema/hello_trema.c +0 -2
- data/src/examples/learning_switch/learning-switch.rb +3 -3
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +3 -3
- data/src/examples/openflow_message/features-request.rb +3 -3
- data/src/examples/packetin_filter_config/utils.c +4 -4
- data/src/examples/repeater_hub/repeater-hub.rb +3 -3
- data/src/examples/switch_info/switch_info.rb +2 -2
- data/src/examples/switch_monitor/switch_monitor.c +1 -1
- data/src/examples/traffic_monitor/traffic-monitor.rb +3 -3
- data/src/lib/arp.h +4 -1
- data/src/lib/chibach.c +391 -0
- data/src/lib/chibach.h +71 -0
- data/src/lib/chibach_private.c +170 -0
- data/src/lib/chibach_private.h +52 -0
- data/src/lib/ether.c +2 -1
- data/src/lib/ether.h +0 -1
- data/src/lib/ipv4.h +13 -14
- data/{ruby/trema/action-set-nw-src.h → src/lib/ipv6.h} +13 -9
- data/src/lib/log.c +161 -58
- data/src/lib/log.h +11 -16
- data/src/lib/messenger.c +36 -1
- data/src/lib/messenger.h +1 -0
- data/src/lib/openflow_application_interface.c +128 -28
- data/src/lib/openflow_application_interface.h +31 -6
- data/src/lib/openflow_message.c +2 -1
- data/src/lib/openflow_service_interface.h +1 -0
- data/src/lib/openflow_switch_interface.c +1380 -0
- data/src/lib/openflow_switch_interface.h +264 -0
- data/src/lib/packet_info.c +94 -11
- data/src/lib/packet_info.h +22 -3
- data/src/lib/packet_parser.c +38 -2
- data/src/lib/secure_channel.c +498 -0
- data/{ruby/trema/vendor-request.h → src/lib/secure_channel.h} +11 -10
- data/src/lib/tcp.h +0 -3
- data/src/lib/trema.c +38 -5
- data/{ruby/trema/action-set-nw-dst.h → src/lib/trema.hpp} +17 -8
- data/src/lib/trema_wrapper.c +5 -0
- data/src/lib/trema_wrapper.h +4 -0
- data/src/lib/utility.c +93 -4
- data/src/lib/utility.h +1 -0
- data/src/lib/wrapper.c +30 -7
- data/src/lib/wrapper.h +2 -0
- data/src/switch_manager/ofpmsg_recv.c +44 -30
- data/src/switch_manager/ofpmsg_send.c +40 -1
- data/src/switch_manager/ofpmsg_send.h +2 -0
- data/src/switch_manager/switch.c +153 -8
- data/src/switch_manager/switch.h +1 -0
- data/src/switch_manager/switchinfo.h +5 -0
- data/src/tremashark/README +2 -2
- data/src/tremashark/plugin/packet-trema/packet-trema.c +1 -0
- data/trema +1 -1
- data/unittests/lib/log_test.c +158 -34
- data/unittests/lib/openflow_application_interface_test.c +252 -69
- data/unittests/lib/openflow_message_test.c +3 -1
- data/unittests/lib/packet_parser_test.c +60 -15
- data/unittests/lib/test_packets/icmp6_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/icmp6_echo_req.cap +0 -0
- data/unittests/lib/trema_test.c +2 -0
- data/unittests/lib/utility_test.c +65 -2
- data/unittests/lib/wrapper_test.c +29 -0
- data/vendor/{README → README.md} +2 -12
- data/vendor/packet-openflow.diff +13 -0
- metadata +86 -53
- data/GPL2 +0 -339
- data/ruby/trema/action-enqueue.c +0 -161
- data/ruby/trema/action-output.c +0 -169
- data/ruby/trema/action-set-dl-dst.c +0 -131
- data/ruby/trema/action-set-dl-dst.h +0 -44
- data/ruby/trema/action-set-dl-src.c +0 -131
- data/ruby/trema/action-set-nw-dst.c +0 -135
- data/ruby/trema/action-set-nw-src.c +0 -140
- data/ruby/trema/action-set-nw-tos.c +0 -124
- data/ruby/trema/action-set-nw-tos.h +0 -42
- data/ruby/trema/action-set-tp-dst.c +0 -122
- data/ruby/trema/action-set-tp-dst.h +0 -42
- data/ruby/trema/action-set-tp-src.c +0 -124
- data/ruby/trema/action-set-tp-src.h +0 -42
- data/ruby/trema/action-set-vlan-pcp.c +0 -128
- data/ruby/trema/action-set-vlan-pcp.h +0 -42
- data/ruby/trema/action-set-vlan-vid.c +0 -125
- data/ruby/trema/action-set-vlan-vid.h +0 -42
- data/ruby/trema/action-strip-vlan.c +0 -81
- data/ruby/trema/action-strip-vlan.h +0 -42
- data/ruby/trema/action-vendor.c +0 -121
- data/ruby/trema/vendor-request.c +0 -193
- data/spec/trema/action-enqueue_spec.rb +0 -100
- data/spec/trema/action-set-dl-dst_spec.rb +0 -95
- data/spec/trema/action-set-dl-src_spec.rb +0 -92
- data/spec/trema/action-set-nw-dst_spec.rb +0 -96
- data/spec/trema/action-set-nw-src_spec.rb +0 -97
- data/spec/trema/action-set-nw-tos_spec.rb +0 -88
- data/spec/trema/action-set-tp-dst_spec.rb +0 -88
- data/spec/trema/action-set-tp-src_spec.rb +0 -88
- data/spec/trema/action-set-vlan-pcp_spec.rb +0 -91
- data/spec/trema/action-set-vlan-vid_spec.rb +0 -91
- data/spec/trema/action-vendor_spec.rb +0 -90
- data/spec/trema/vendor-request_spec.rb +0 -79
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
#
|
|
4
|
-
# Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
# published by the Free Software Foundation.
|
|
9
|
-
#
|
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
# GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License along
|
|
16
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
-
require "trema"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
shared_examples_for "any OpenFlow message with nw_tos option" do
|
|
26
|
-
it_should_behave_like "any OpenFlow message", :option => :nw_tos, :name => "Nw tos", :size => 8
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
describe ActionSetNwTos, ".new( VALID OPTION )" do
|
|
31
|
-
subject { ActionSetNwTos.new( :nw_tos => nw_tos ) }
|
|
32
|
-
let( :nw_tos ) { 4 }
|
|
33
|
-
its( :nw_tos ) { should == 4 }
|
|
34
|
-
it "should inspect its attributes" do
|
|
35
|
-
subject.inspect.should == "#<Trema::ActionSetNwTos nw_tos=4>"
|
|
36
|
-
end
|
|
37
|
-
it_should_behave_like "any OpenFlow message with nw_tos option"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
describe ActionSetNwTos, ".new( MANDATORY OPTION MISSING )" do
|
|
42
|
-
it "should raise ArgumentError" do
|
|
43
|
-
expect { subject }.to raise_error( ArgumentError )
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
describe ActionSetNwTos, ".new( INVALID OPTION ) - argument type Array instead of Hash" do
|
|
49
|
-
subject { ActionSetNwTos.new( [ 4 ] ) }
|
|
50
|
-
it "should raise TypeError" do
|
|
51
|
-
expect { subject }.to raise_error( TypeError )
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
describe ActionSetNwTos, ".new( VALID OPTION )" do
|
|
57
|
-
context "when sending #flow_mod(add) with action set to mod_nw_tos" do
|
|
58
|
-
it "should respond to #append" do
|
|
59
|
-
class FlowModAddController < Controller; end
|
|
60
|
-
network {
|
|
61
|
-
vswitch { datapath_id 0xabc }
|
|
62
|
-
}.run( FlowModAddController ) {
|
|
63
|
-
action = ActionSetNwTos.new( :nw_tos => 4 )
|
|
64
|
-
action.should_receive( :append )
|
|
65
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
|
|
66
|
-
}
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
it "should have a flow with action set to mod_nw_tos" do
|
|
71
|
-
class FlowModAddController < Controller; end
|
|
72
|
-
network {
|
|
73
|
-
vswitch { datapath_id 0xabc }
|
|
74
|
-
}.run( FlowModAddController ) {
|
|
75
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetNwTos.new( :nw_tos => 4 ) )
|
|
76
|
-
vswitch( "0xabc" ).should have( 1 ).flows
|
|
77
|
-
vswitch( "0xabc" ).flows[0].actions.should match( /mod_nw_tos:4/ )
|
|
78
|
-
}
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### Local variables:
|
|
85
|
-
### mode: Ruby
|
|
86
|
-
### coding: utf-8-unix
|
|
87
|
-
### indent-tabs-mode: nil
|
|
88
|
-
### End:
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
#
|
|
4
|
-
# Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
# published by the Free Software Foundation.
|
|
9
|
-
#
|
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
# GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License along
|
|
16
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
-
require "trema"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
shared_examples_for "any OpenFlow message with tp_dst option" do
|
|
26
|
-
it_should_behave_like "any OpenFlow message", :option => :tp_dst, :name => "Destination TCP or UDP port", :size => 16
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
describe ActionSetTpDst, ".new( VALID OPTION )" do
|
|
31
|
-
subject { ActionSetTpDst.new( :tp_dst => tp_dst ) }
|
|
32
|
-
let( :tp_dst ) { 5555 }
|
|
33
|
-
its( :tp_dst ) { should == 5555 }
|
|
34
|
-
it "should inspect its attributes" do
|
|
35
|
-
subject.inspect.should == "#<Trema::ActionSetTpDst tp_port=5555>"
|
|
36
|
-
end
|
|
37
|
-
it_should_behave_like "any OpenFlow message with tp_dst option"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
describe ActionSetTpDst, ".new( MANDATORY OPTION MISSING )" do
|
|
42
|
-
it "should raise ArgumentError" do
|
|
43
|
-
expect { subject }.to raise_error( ArgumentError )
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
describe ActionSetTpDst, ".new( INVALID OPTION ) - argument type Array instead of Hash" do
|
|
49
|
-
subject { ActionSetTpDst.new( [ 5555 ] ) }
|
|
50
|
-
it "should raise TypeError" do
|
|
51
|
-
expect { subject }.to raise_error( TypeError )
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
describe ActionSetTpDst, ".new( VALID OPTION )" do
|
|
57
|
-
context "when sending #flow_mod(add) with action set to mod_tp_dst" do
|
|
58
|
-
it "should respond to #append" do
|
|
59
|
-
class FlowModAddController < Controller; end
|
|
60
|
-
network {
|
|
61
|
-
vswitch { datapath_id 0xabc }
|
|
62
|
-
}.run( FlowModAddController ) {
|
|
63
|
-
action = ActionSetTpDst.new( :tp_dst => 5555 )
|
|
64
|
-
action.should_receive( :append )
|
|
65
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
|
|
66
|
-
}
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
it "should have a flow with action set to mod_tp_dst" do
|
|
71
|
-
class FlowModAddController < Controller; end
|
|
72
|
-
network {
|
|
73
|
-
vswitch { datapath_id 0xabc }
|
|
74
|
-
}.run( FlowModAddController ) {
|
|
75
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetTpDst.new( :tp_dst => 5555 ) )
|
|
76
|
-
vswitch( "0xabc" ).should have( 1 ).flows
|
|
77
|
-
vswitch( "0xabc" ).flows[0].actions.should match( /mod_tp_dst:5555/ )
|
|
78
|
-
}
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### Local variables:
|
|
85
|
-
### mode: Ruby
|
|
86
|
-
### coding: utf-8-unix
|
|
87
|
-
### indent-tabs-mode: nil
|
|
88
|
-
### End:
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
#
|
|
4
|
-
# Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
# published by the Free Software Foundation.
|
|
9
|
-
#
|
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
# GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License along
|
|
16
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
-
require "trema"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
shared_examples_for "any OpenFlow message with tp_src option" do
|
|
26
|
-
it_should_behave_like "any OpenFlow message", :option => :tp_src, :name => "Source TCP or UDP port", :size => 16
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
describe ActionSetTpSrc, ".new( VALID OPTION )" do
|
|
31
|
-
subject { ActionSetTpSrc.new( :tp_src => tp_src ) }
|
|
32
|
-
let( :tp_src ) { 5555 }
|
|
33
|
-
its( :tp_src ) { should == 5555 }
|
|
34
|
-
it "should inspect its attributes" do
|
|
35
|
-
subject.inspect.should == "#<Trema::ActionSetTpSrc tp_port=5555>"
|
|
36
|
-
end
|
|
37
|
-
it_should_behave_like "any OpenFlow message with tp_src option"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
describe ActionSetTpSrc, ".new( MANDATORY OPTION MISSING )" do
|
|
42
|
-
it "should raise ArgumentError" do
|
|
43
|
-
expect { subject }.to raise_error( ArgumentError )
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
describe ActionSetTpSrc, ".new( INVALID OPTION ) - argument type Array instead of Hash" do
|
|
49
|
-
subject { ActionSetTpSrc.new( [ 5555 ] ) }
|
|
50
|
-
it "should raise TypeError" do
|
|
51
|
-
expect { subject }.to raise_error( TypeError )
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
describe ActionSetTpSrc, ".new( VALID OPTION )" do
|
|
57
|
-
context "when sending #flow_mod(add) with action set to mod_tp_src" do
|
|
58
|
-
it "should respond to #append" do
|
|
59
|
-
class FlowModAddController < Controller; end
|
|
60
|
-
network {
|
|
61
|
-
vswitch { datapath_id 0xabc }
|
|
62
|
-
}.run( FlowModAddController ) {
|
|
63
|
-
action = ActionSetTpSrc.new( :tp_src => 5555 )
|
|
64
|
-
action.should_receive( :append )
|
|
65
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
|
|
66
|
-
}
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
it "should have a flow with action set to mod_tp_src" do
|
|
71
|
-
class FlowModAddController < Controller; end
|
|
72
|
-
network {
|
|
73
|
-
vswitch { datapath_id 0xabc }
|
|
74
|
-
}.run( FlowModAddController ) {
|
|
75
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetTpSrc.new( :tp_src => 5555 ) )
|
|
76
|
-
vswitch( "0xabc" ).should have( 1 ).flows
|
|
77
|
-
vswitch( "0xabc" ).flows[0].actions.should match( /mod_tp_src:5555/ )
|
|
78
|
-
}
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### Local variables:
|
|
85
|
-
### mode: Ruby
|
|
86
|
-
### coding: utf-8-unix
|
|
87
|
-
### indent-tabs-mode: nil
|
|
88
|
-
### End:
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
#
|
|
4
|
-
# Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
# published by the Free Software Foundation.
|
|
9
|
-
#
|
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
# GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License along
|
|
16
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
-
require "trema"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
describe ActionSetVlanPcp, ".new( VALID OPTION )" do
|
|
26
|
-
subject { ActionSetVlanPcp.new( :vlan_pcp => 7 ) }
|
|
27
|
-
its( :vlan_pcp ) { should == 7 }
|
|
28
|
-
it "should inspect its attributes" do
|
|
29
|
-
subject.inspect.should == "#<Trema::ActionSetVlanPcp vlan_pcp=7>"
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
describe ActionSetVlanPcp, ".new( MANDATORY OPTION MISSING )" do
|
|
35
|
-
it "should raise ArgumentError" do
|
|
36
|
-
expect { subject }.to raise_error( ArgumentError )
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
describe ActionSetVlanPcp, ".new( INVALID OPTION )" do
|
|
42
|
-
context "when value outside allowed range" do
|
|
43
|
-
subject { ActionSetVlanPcp.new( :vlan_pcp => 250 ) }
|
|
44
|
-
it "should raise RangeError" do
|
|
45
|
-
expect { subject }.to raise_error( RangeError )
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
context "when argument type Array instead of Hash" do
|
|
51
|
-
subject { ActionSetVlanPcp.new( [ 7 ] ) }
|
|
52
|
-
it "should raise TypeError" do
|
|
53
|
-
expect { subject }.to raise_error( TypeError )
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
describe ActionSetVlanPcp, ".new( VALID OPTION )" do
|
|
60
|
-
context "when sending #flow_mod(add) with action set to mod_vlan_pcp" do
|
|
61
|
-
it "should respond to #append" do
|
|
62
|
-
class FlowModAddController < Controller; end
|
|
63
|
-
network {
|
|
64
|
-
vswitch { datapath_id 0xabc }
|
|
65
|
-
}.run( FlowModAddController ) {
|
|
66
|
-
action = ActionSetVlanPcp.new( :vlan_pcp => 7 )
|
|
67
|
-
action.should_receive( :append )
|
|
68
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
|
|
69
|
-
}
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
it "should have a flow with action set to mod_vlan_pcp" do
|
|
74
|
-
class FlowModAddController < Controller; end
|
|
75
|
-
network {
|
|
76
|
-
vswitch { datapath_id 0xabc }
|
|
77
|
-
}.run( FlowModAddController ) {
|
|
78
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetVlanPcp.new( :vlan_pcp => 7 ) )
|
|
79
|
-
vswitch( "0xabc" ).should have( 1 ).flows
|
|
80
|
-
vswitch( "0xabc" ).flows[0].actions.should match( /mod_vlan_pcp:7/ )
|
|
81
|
-
}
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### Local variables:
|
|
88
|
-
### mode: Ruby
|
|
89
|
-
### coding: utf-8-unix
|
|
90
|
-
### indent-tabs-mode: nil
|
|
91
|
-
### End:
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
#
|
|
4
|
-
# Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
# published by the Free Software Foundation.
|
|
9
|
-
#
|
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
# GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License along
|
|
16
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
-
require "trema"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
describe ActionSetVlanVid, ".new( VALID OPTION )" do
|
|
26
|
-
subject { ActionSetVlanVid.new( :vlan_vid => 1024 ) }
|
|
27
|
-
its( :vlan_vid ) { should == 1024 }
|
|
28
|
-
it "should inspect its attributes" do
|
|
29
|
-
subject.inspect.should == "#<Trema::ActionSetVlanVid vlan_vid=1024>"
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
describe ActionSetVlanVid, ".new( MANDATORY OPTION MISSING )" do
|
|
35
|
-
it "should raise ArgumentError" do
|
|
36
|
-
expect { subject }.to raise_error( ArgumentError )
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
describe ActionSetVlanVid, ".new( INVALID OPTION )" do
|
|
42
|
-
context "when value outside allowed range" do
|
|
43
|
-
subject { ActionSetVlanVid.new( :vlan_vid => 0 ) }
|
|
44
|
-
it "should raise RangeError" do
|
|
45
|
-
expect { subject }.to raise_error( RangeError )
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
context "when argument type Array instead of Hash" do
|
|
51
|
-
subject { ActionSetVlanVid.new( [ 1024 ] ) }
|
|
52
|
-
it "should raise TypeError" do
|
|
53
|
-
expect { subject }.to raise_error( TypeError )
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
describe ActionSetVlanVid, ".new( VALID OPTION )" do
|
|
60
|
-
context "when sending #flow_mod(add) with action set to mod_vlan_vid" do
|
|
61
|
-
it "should respond to #append" do
|
|
62
|
-
class FlowModAddController < Controller; end
|
|
63
|
-
network {
|
|
64
|
-
vswitch { datapath_id 0xabc }
|
|
65
|
-
}.run( FlowModAddController ) {
|
|
66
|
-
action = ActionSetVlanVid.new( :vlan_vid => 1024 )
|
|
67
|
-
action.should_receive( :append )
|
|
68
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => action )
|
|
69
|
-
}
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
it "should have a flow with action set to mod_vlan_vid" do
|
|
74
|
-
class FlowModAddController < Controller; end
|
|
75
|
-
network {
|
|
76
|
-
vswitch { datapath_id 0xabc }
|
|
77
|
-
}.run( FlowModAddController ) {
|
|
78
|
-
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => ActionSetVlanVid.new( :vlan_vid => 1024 ) )
|
|
79
|
-
vswitch( "0xabc" ).should have( 1 ).flows
|
|
80
|
-
vswitch( "0xabc" ).flows[0].actions.should match( /mod_vlan_vid:1024/ )
|
|
81
|
-
}
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### Local variables:
|
|
88
|
-
### mode: Ruby
|
|
89
|
-
### coding: utf-8-unix
|
|
90
|
-
### indent-tabs-mode: nil
|
|
91
|
-
### End:
|