trema 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (291) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.travis.yml +24 -7
  4. data/Gemfile +19 -27
  5. data/Guardfile +6 -0
  6. data/README.md +13 -5
  7. data/Rakefile +418 -415
  8. data/bin/quality +2 -2
  9. data/bin/trema +103 -105
  10. data/bin/trema-config +7 -7
  11. data/build.rb +2 -2
  12. data/cruise.rb +109 -83
  13. data/features/dsl/switch_port_specifier.feature +1 -1
  14. data/features/examples/dumper.feature +9 -41
  15. data/features/examples/hello_trema.feature +1 -1
  16. data/features/examples/learning_switch.feature +7 -7
  17. data/features/examples/list_switches.feature +5 -5
  18. data/features/examples/message.set_config.feature +11 -11
  19. data/features/examples/message.vendor-action.feature +7 -7
  20. data/features/examples/message.vendor-stats-request.feature +1 -1
  21. data/features/examples/multi_learning_switch.feature +7 -7
  22. data/features/examples/openflow_message.echo.feature +15 -15
  23. data/features/examples/openflow_message.features_request.feature +12 -12
  24. data/features/examples/openflow_message.hello.feature +13 -13
  25. data/features/examples/packet_in.feature +8 -8
  26. data/features/examples/patch_panel.feature +1 -1
  27. data/features/examples/repeater_hub.feature +7 -7
  28. data/features/examples/switch_info.feature +16 -16
  29. data/features/examples/switch_monitor.feature +11 -11
  30. data/features/examples/transparent_firewall.feature +73 -0
  31. data/features/handlers/switch_ready.feature +1 -1
  32. data/features/step_definitions/misc_steps.rb +24 -24
  33. data/features/step_definitions/send_packets_steps.rb +2 -2
  34. data/features/step_definitions/stats_steps.rb +6 -6
  35. data/features/support/env.rb +15 -15
  36. data/features/support/hooks.rb +9 -9
  37. data/features/switch_event/add_forward_entry.feature +3 -3
  38. data/features/switch_event/delete_forward_entry.feature +3 -3
  39. data/features/switch_event/dump_forward_entries.feature +2 -2
  40. data/features/switch_event/set_forward_entries.feature +2 -2
  41. data/features/trema_commands/dump_flows.feature +1 -0
  42. data/features/trema_commands/help.feature +1 -0
  43. data/features/trema_commands/help_option.feature +1 -0
  44. data/features/trema_commands/kill.feature +1 -0
  45. data/features/trema_commands/killall.feature +1 -0
  46. data/features/trema_commands/port_down.feature +1 -0
  47. data/features/trema_commands/port_up.feature +1 -0
  48. data/features/trema_commands/reset_stats.feature +1 -0
  49. data/features/trema_commands/run.feature +1 -0
  50. data/features/trema_commands/send_packets.feature +2 -1
  51. data/features/trema_commands/show_stats.feature +1 -0
  52. data/features/trema_commands/up.feature +1 -0
  53. data/features/trema_commands/version.feature +1 -0
  54. data/features/trema_commands/version_option.feature +1 -0
  55. data/rubocop-todo.yml +159 -0
  56. data/ruby/blocker.rb +15 -17
  57. data/ruby/extconf.rb +19 -19
  58. data/ruby/sub-process.rb +29 -29
  59. data/ruby/trema/aggregate-stats-reply.rb +2 -2
  60. data/ruby/trema/app.rb +13 -13
  61. data/ruby/trema/cli.rb +45 -45
  62. data/ruby/trema/command.rb +14 -14
  63. data/ruby/trema/command/dump_flows.rb +5 -5
  64. data/ruby/trema/command/kill.rb +13 -13
  65. data/ruby/trema/command/killall.rb +1 -1
  66. data/ruby/trema/command/netns.rb +3 -3
  67. data/ruby/trema/command/port_down.rb +7 -7
  68. data/ruby/trema/command/port_up.rb +7 -7
  69. data/ruby/trema/command/reset_stats.rb +6 -6
  70. data/ruby/trema/command/ruby.rb +2 -2
  71. data/ruby/trema/command/run.rb +23 -23
  72. data/ruby/trema/command/send_packets.rb +9 -9
  73. data/ruby/trema/command/shell.rb +14 -16
  74. data/ruby/trema/command/show_stats.rb +9 -9
  75. data/ruby/trema/command/up.rb +4 -4
  76. data/ruby/trema/command/version.rb +1 -1
  77. data/ruby/trema/controller.rb +10 -10
  78. data/ruby/trema/custom-switch.rb +4 -4
  79. data/ruby/trema/daemon.rb +21 -21
  80. data/ruby/trema/desc-stats-reply.rb +2 -2
  81. data/ruby/trema/dsl.rb +5 -5
  82. data/ruby/trema/dsl/configuration.rb +7 -7
  83. data/ruby/trema/dsl/context.rb +10 -10
  84. data/ruby/trema/dsl/custom-switch.rb +3 -3
  85. data/ruby/trema/dsl/link.rb +2 -2
  86. data/ruby/trema/dsl/netns.rb +9 -9
  87. data/ruby/trema/dsl/parser.rb +14 -14
  88. data/ruby/trema/dsl/rswitch.rb +3 -3
  89. data/ruby/trema/dsl/run.rb +4 -4
  90. data/ruby/trema/dsl/runner.rb +20 -20
  91. data/ruby/trema/dsl/stanza.rb +5 -5
  92. data/ruby/trema/dsl/switch.rb +14 -14
  93. data/ruby/trema/dsl/syntax.rb +54 -54
  94. data/ruby/trema/dsl/vhost.rb +9 -9
  95. data/ruby/trema/dsl/vswitch.rb +4 -4
  96. data/ruby/trema/enqueue.rb +11 -11
  97. data/ruby/trema/exact-match.rb +1 -1
  98. data/ruby/trema/executables.rb +19 -19
  99. data/ruby/trema/flow-stats-reply.rb +2 -2
  100. data/ruby/trema/flow.rb +8 -8
  101. data/ruby/trema/hardware-switch.rb +2 -2
  102. data/ruby/trema/host.rb +18 -18
  103. data/ruby/trema/link.rb +9 -9
  104. data/ruby/trema/mac.rb +1 -5
  105. data/ruby/trema/match.c +0 -1
  106. data/ruby/trema/monkey-patch/integer.rb +3 -3
  107. data/ruby/trema/monkey-patch/integer/base-conversions.rb +1 -1
  108. data/ruby/trema/monkey-patch/integer/ranges.rb +2 -2
  109. data/ruby/trema/monkey-patch/integer/validators.rb +1 -1
  110. data/ruby/trema/monkey-patch/module.rb +2 -2
  111. data/ruby/trema/monkey-patch/module/class-method.rb +2 -2
  112. data/ruby/trema/monkey-patch/module/deprecation.rb +1 -1
  113. data/ruby/trema/monkey-patch/string.rb +1 -1
  114. data/ruby/trema/monkey-patch/string/inflectors.rb +7 -7
  115. data/ruby/trema/netns.rb +6 -6
  116. data/ruby/trema/network-component.rb +7 -7
  117. data/ruby/trema/ofctl.rb +13 -13
  118. data/ruby/trema/open-vswitch.rb +25 -25
  119. data/ruby/trema/openflow-switch.rb +1 -1
  120. data/ruby/trema/ordered-hash.rb +8 -8
  121. data/ruby/trema/packet-in.c +0 -1
  122. data/ruby/trema/packet-queue.rb +8 -8
  123. data/ruby/trema/packetin-filter.rb +9 -9
  124. data/ruby/trema/path.rb +32 -32
  125. data/ruby/trema/phost.rb +5 -5
  126. data/ruby/trema/port-mod.c +0 -1
  127. data/ruby/trema/port-stats-reply.rb +2 -2
  128. data/ruby/trema/port-status-add.rb +2 -2
  129. data/ruby/trema/port-status-delete.rb +2 -2
  130. data/ruby/trema/port-status-modify.rb +2 -2
  131. data/ruby/trema/port.c +0 -1
  132. data/ruby/trema/process.rb +7 -7
  133. data/ruby/trema/queue-stats-reply.rb +2 -2
  134. data/ruby/trema/ruby-switch.rb +6 -6
  135. data/ruby/trema/send-out-port.rb +11 -11
  136. data/ruby/trema/set-eth-addr.rb +5 -5
  137. data/ruby/trema/set-eth-dst-addr.rb +1 -1
  138. data/ruby/trema/set-eth-src-addr.rb +1 -1
  139. data/ruby/trema/set-ip-addr.rb +6 -6
  140. data/ruby/trema/set-ip-dst-addr.rb +1 -1
  141. data/ruby/trema/set-ip-src-addr.rb +1 -1
  142. data/ruby/trema/set-ip-tos.rb +6 -6
  143. data/ruby/trema/set-transport-dst-port.rb +2 -2
  144. data/ruby/trema/set-transport-port.rb +7 -7
  145. data/ruby/trema/set-transport-src-port.rb +3 -3
  146. data/ruby/trema/set-vlan-priority.rb +6 -6
  147. data/ruby/trema/set-vlan-vid.rb +6 -6
  148. data/ruby/trema/shell.rb +10 -10
  149. data/ruby/trema/shell/down.rb +3 -3
  150. data/ruby/trema/shell/killall.rb +1 -1
  151. data/ruby/trema/shell/link.rb +14 -14
  152. data/ruby/trema/shell/reset_stats.rb +6 -6
  153. data/ruby/trema/shell/run.rb +7 -7
  154. data/ruby/trema/shell/send_packets.rb +3 -3
  155. data/ruby/trema/shell/show_stats.rb +7 -7
  156. data/ruby/trema/shell/up.rb +5 -5
  157. data/ruby/trema/shell/vhost.rb +4 -4
  158. data/ruby/trema/shell/vswitch.rb +7 -7
  159. data/ruby/trema/stats-helper.rb +3 -3
  160. data/ruby/trema/stats-reply.c +0 -1
  161. data/ruby/trema/strip-vlan-header.rb +1 -1
  162. data/ruby/trema/switch-daemon.rb +9 -9
  163. data/ruby/trema/switch-manager.rb +9 -9
  164. data/ruby/trema/switch.rb +7 -7
  165. data/ruby/trema/table-stats-reply.rb +2 -2
  166. data/ruby/trema/timers.rb +12 -12
  167. data/ruby/trema/trema.c +0 -1
  168. data/ruby/trema/tremashark.rb +1 -1
  169. data/ruby/trema/util.rb +25 -27
  170. data/ruby/trema/vendor-action.rb +10 -10
  171. data/ruby/trema/vendor-stats-reply.rb +2 -2
  172. data/ruby/trema/version.rb +1 -1
  173. data/spec/spec_helper.rb +50 -52
  174. data/spec/support/action.rb +9 -12
  175. data/spec/support/mandatory-option.rb +15 -18
  176. data/spec/support/matchers/constant.rb +7 -7
  177. data/spec/support/openflow-message.rb +76 -79
  178. data/spec/support/port-status.rb +7 -10
  179. data/spec/trema/app_spec.rb +27 -27
  180. data/spec/trema/barrier-reply_spec.rb +10 -10
  181. data/spec/trema/barrier-request_spec.rb +35 -35
  182. data/spec/trema/cli_spec.rb +63 -63
  183. data/spec/trema/controller_spec.rb +3 -3
  184. data/spec/trema/default-logger_spec.rb +4 -4
  185. data/spec/trema/dsl/configuration_spec.rb +47 -47
  186. data/spec/trema/dsl/link_spec.rb +11 -11
  187. data/spec/trema/dsl/run_spec.rb +19 -19
  188. data/spec/trema/dsl/runner_spec.rb +91 -91
  189. data/spec/trema/dsl/switch_spec.rb +16 -16
  190. data/spec/trema/dsl/syntax_spec.rb +22 -22
  191. data/spec/trema/dsl/vhost_spec.rb +37 -37
  192. data/spec/trema/dsl/vswitch_spec.rb +21 -21
  193. data/spec/trema/echo-reply_spec.rb +29 -29
  194. data/spec/trema/echo-request_spec.rb +54 -54
  195. data/spec/trema/enqueue_spec.rb +25 -25
  196. data/spec/trema/error_spec.rb +30 -30
  197. data/spec/trema/executables_spec.rb +20 -20
  198. data/spec/trema/features-reply_spec.rb +41 -41
  199. data/spec/trema/features-request_spec.rb +35 -35
  200. data/spec/trema/flow-mod_spec.rb +32 -32
  201. data/spec/trema/flow-removed_spec.rb +62 -62
  202. data/spec/trema/get-config-reply_spec.rb +14 -12
  203. data/spec/trema/get-config-request_spec.rb +35 -35
  204. data/spec/trema/hardware-switch_spec.rb +12 -12
  205. data/spec/trema/hello_spec.rb +17 -17
  206. data/spec/trema/host_spec.rb +71 -71
  207. data/spec/trema/link_spec.rb +13 -13
  208. data/spec/trema/list-switches-reply_spec.rb +10 -10
  209. data/spec/trema/match_spec.rb +41 -41
  210. data/spec/trema/open-vswitch_spec.rb +45 -45
  211. data/spec/trema/openflow-error_spec.rb +67 -65
  212. data/spec/trema/packet-in_spec.rb +450 -446
  213. data/spec/trema/packet-out_spec.rb +42 -42
  214. data/spec/trema/packetin-filter_spec.rb +5 -5
  215. data/spec/trema/port-mod_spec.rb +32 -32
  216. data/spec/trema/port-status-add_spec.rb +3 -3
  217. data/spec/trema/port-status-delete_spec.rb +3 -3
  218. data/spec/trema/port-status-modify_spec.rb +16 -16
  219. data/spec/trema/port-status_spec.rb +2 -2
  220. data/spec/trema/port_spec.rb +21 -21
  221. data/spec/trema/process_spec.rb +22 -22
  222. data/spec/trema/queue-get-config-reply_spec.rb +21 -20
  223. data/spec/trema/queue-get-config-request_spec.rb +24 -24
  224. data/spec/trema/send-out-port_spec.rb +42 -42
  225. data/spec/trema/set-config_spec.rb +31 -31
  226. data/spec/trema/set-eth-addr_spec.rb +21 -21
  227. data/spec/trema/set-ip-addr_spec.rb +29 -29
  228. data/spec/trema/set-ip-tos_spec.rb +26 -26
  229. data/spec/trema/set-transport-dst-port_spec.rb +22 -22
  230. data/spec/trema/set-transport-src-port_spec.rb +22 -22
  231. data/spec/trema/set-vlan-priority_spec.rb +23 -23
  232. data/spec/trema/set-vlan-vid_spec.rb +23 -23
  233. data/spec/trema/shell/vhost_spec.rb +21 -21
  234. data/spec/trema/shell/vswitch_spec.rb +30 -30
  235. data/spec/trema/stats-reply_spec.rb +183 -173
  236. data/spec/trema/stats-request_spec.rb +66 -66
  237. data/spec/trema/strip-vlan-header_spec.rb +11 -11
  238. data/spec/trema/switch-daemon_spec.rb +34 -34
  239. data/spec/trema/switch-disconnected_spec.rb +17 -17
  240. data/spec/trema/switch-manager_spec.rb +6 -6
  241. data/spec/trema/tremashark_spec.rb +4 -4
  242. data/spec/trema/util_spec.rb +35 -35
  243. data/spec/trema/vendor-action_spec.rb +26 -26
  244. data/spec/trema/vendor_spec.rb +27 -27
  245. data/spec/trema_spec.rb +2 -2
  246. data/src/examples/cbench_switch/cbench-switch.rb +3 -3
  247. data/src/examples/dumper/dumper.rb +31 -31
  248. data/src/examples/hello_trema/hello-trema.rb +2 -2
  249. data/src/examples/learning_switch/fdb.rb +14 -14
  250. data/src/examples/learning_switch/learning-switch.rb +12 -10
  251. data/src/examples/learning_switch/learning_switch.c +22 -39
  252. data/src/examples/list_switches/list-switches.rb +3 -3
  253. data/src/examples/match_compare/match-compare.rb +20 -20
  254. data/src/examples/multi_learning_switch/multi-learning-switch.rb +12 -12
  255. data/src/examples/openflow_message/echo.rb +4 -4
  256. data/src/examples/openflow_message/example.rb +7 -7
  257. data/src/examples/openflow_message/features-request.rb +31 -31
  258. data/src/examples/openflow_message/hello.rb +2 -2
  259. data/src/examples/openflow_message/set-config.rb +4 -4
  260. data/src/examples/openflow_message/vendor-action.rb +3 -3
  261. data/src/examples/openflow_message/vendor-stats-request.rb +9 -9
  262. data/src/examples/packet_in/packet-in.rb +2 -2
  263. data/src/examples/patch_panel/patch-panel.rb +9 -9
  264. data/src/examples/repeater_hub/repeater-hub.rb +4 -4
  265. data/src/examples/repeater_hub/repeater-hub_spec.rb +65 -65
  266. data/src/examples/simple_router/arp-table.rb +7 -7
  267. data/src/examples/simple_router/interface.rb +10 -10
  268. data/src/examples/simple_router/routing-table.rb +4 -4
  269. data/src/examples/simple_router/simple-router.rb +3 -3
  270. data/src/examples/switch_info/switch-info.rb +9 -9
  271. data/src/examples/switch_monitor/switch-monitor.rb +4 -4
  272. data/src/examples/traffic_monitor/counter.rb +6 -6
  273. data/src/examples/traffic_monitor/fdb.rb +4 -4
  274. data/src/examples/traffic_monitor/traffic-monitor.rb +12 -12
  275. data/src/examples/transparent_firewall/README.md +61 -0
  276. data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +713 -0
  277. data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +3440 -0
  278. data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +11342 -0
  279. data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +1937 -0
  280. data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +7329 -0
  281. data/src/examples/transparent_firewall/block-rfc1918.rb +86 -0
  282. data/src/examples/transparent_firewall/pass-delegated.rb +178 -0
  283. data/src/examples/transparent_firewall/regen_aggregated.sh +53 -0
  284. data/src/examples/transparent_firewall/stats-to-cidrs.rb +59 -0
  285. data/src/lib/messenger.c +14 -5
  286. data/src/lib/openflow_message.c +0 -5
  287. data/tasks/rubocop.rake +22 -0
  288. data/trema +1 -1
  289. data/trema-config +1 -1
  290. data/trema.gemspec +22 -22
  291. metadata +30 -16
@@ -16,53 +16,53 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema'
21
21
 
22
22
 
23
- describe VendorAction, "new(vendor_id)", :type => "actions" do
23
+ describe VendorAction, 'new(vendor_id)', :type => 'actions' do
24
24
  subject { VendorAction.new vendor_id }
25
25
 
26
- context "with vendor_id (0x00004cff)" do
27
- let( :vendor_id ) { 0x00004cff }
28
- its( :vendor_id ) { should == 0x00004cff }
26
+ context 'with vendor_id (0x00004cff)' do
27
+ let(:vendor_id) { 0x00004cff }
28
+ its(:vendor_id) { should == 0x00004cff }
29
29
  end
30
30
 
31
- it_validates "option is within range", :vendor_id, 0..( 2 ** 32 - 1 )
31
+ it_validates 'option is within range', :vendor_id, 0..( 2**32 - 1)
32
32
 
33
- context %{with vendor_id ("0x00004cff")} do
34
- let( :vendor_id ) { "0x00004cff" }
35
- it { expect { subject }.to raise_error( TypeError ) }
33
+ context 'with vendor_id (0x00004cff)' do
34
+ let(:vendor_id) { '0x00004cff' }
35
+ it { expect { subject }.to raise_error(TypeError) }
36
36
  end
37
37
  end
38
38
 
39
39
 
40
- describe VendorAction, ".new(0x00002320, body)", :type => "actions" do
40
+ describe VendorAction, '.new(0x00002320, body)', :type => 'actions' do
41
41
  subject { VendorAction.new 0x00002320, body }
42
42
 
43
- context %{with body ("deadbeef")} do
44
- let( :body ) { "deadbeef" }
45
- it { expect { subject }.to raise_error( TypeError ) }
43
+ context 'with body (deadbeef)' do
44
+ let(:body) { 'deadbeef' }
45
+ it { expect { subject }.to raise_error(TypeError) }
46
46
  end
47
47
 
48
- context "with body 9 octets long" do
49
- let( :body ) { [ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 ] }
50
- it { expect { subject }.to raise_error( ArgumentError ) }
48
+ context 'with body 9 octets long' do
49
+ let(:body) { [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08] }
50
+ it { expect { subject }.to raise_error(ArgumentError) }
51
51
  end
52
52
 
53
- context "when sending a Flow Mod with VendorAction" do
54
- let( :body ) { [ 0x00, 0x08, 0x54, 0x72, 0x65, 0x6d, 0x61, 0x00 ] }
53
+ context 'when sending a Flow Mod with VendorAction' do
54
+ let(:body) { [0x00, 0x08, 0x54, 0x72, 0x65, 0x6d, 0x61, 0x00] }
55
55
 
56
- it "should insert a new flow entry with action (note:54.72.65.6d.61.00)" do
56
+ it 'should insert a new flow entry with action (note:54.72.65.6d.61.00)' do
57
57
  class TestController < Controller; end
58
- network {
58
+ network do
59
59
  vswitch { datapath_id 0xabc }
60
- }.run( TestController ) {
61
- controller( "TestController" ).send_flow_mod_add( 0xabc, :actions => subject )
60
+ end.run(TestController) do
61
+ controller('TestController').send_flow_mod_add(0xabc, :actions => subject)
62
62
  sleep 2
63
- expect( vswitch( "0xabc" ) ).to have( 1 ).flows
64
- expect( vswitch( "0xabc" ).flows[ 0 ].actions ).to eq( "note:54.72.65.6d.61.00" )
65
- }
63
+ expect(vswitch('0xabc')).to have(1).flows
64
+ expect(vswitch('0xabc').flows[ 0].actions).to eq('note:54.72.65.6d.61.00')
65
+ end
66
66
  end
67
67
  end
68
68
  end
@@ -16,55 +16,55 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema'
21
21
 
22
22
 
23
23
  module Trema
24
- describe Vendor, ".new" do
25
- it_should_behave_like "any Openflow message with default transaction ID"
26
- its ( :vendor ) { should == 0 }
27
- its ( :data ) { should be_nil }
24
+ describe Vendor, '.new' do
25
+ it_should_behave_like 'any Openflow message with default transaction ID'
26
+ its ( :vendor) { should == 0 }
27
+ its ( :data) { should be_nil }
28
28
  end
29
29
 
30
30
 
31
- describe Vendor, ".new(nil)" do
32
- it_should_behave_like "any Openflow message with default transaction ID"
33
- its ( :vendor ) { should == 0 }
34
- its ( :data ) { should be_nil }
31
+ describe Vendor, '.new(nil)' do
32
+ it_should_behave_like 'any Openflow message with default transaction ID'
33
+ its ( :vendor) { should == 0 }
34
+ its ( :data) { should be_nil }
35
35
  end
36
36
 
37
37
 
38
- describe Vendor, ".new(:transaction_id => value)" do
39
- subject { Vendor.new( :transaction_id => transaction_id ) }
40
- it_should_behave_like "any Openflow message with transaction ID"
38
+ describe Vendor, '.new(:transaction_id => value)' do
39
+ subject { Vendor.new(:transaction_id => transaction_id) }
40
+ it_should_behave_like 'any Openflow message with transaction ID'
41
41
  end
42
42
 
43
43
 
44
- describe Vendor, ".new(:xid => value)" do
45
- subject { Vendor.new( :xid => xid ) }
46
- it_should_behave_like "any Openflow message with xid"
44
+ describe Vendor, '.new(:xid => value)' do
45
+ subject { Vendor.new(:xid => xid) }
46
+ it_should_behave_like 'any Openflow message with xid'
47
47
  end
48
48
 
49
49
 
50
- describe Vendor, ".new(:vendor_id => value)", :nosudo => true do
51
- subject { Vendor.new( :vendor => vendor ) }
52
- let( :vendor ) { 0xdeadbeef }
53
- its( :vendor ) { should == 0xdeadbeef }
54
- its ( :data ) { should be_nil }
50
+ describe Vendor, '.new(:vendor_id => value)', :nosudo => true do
51
+ subject { Vendor.new(:vendor => vendor) }
52
+ let(:vendor) { 0xdeadbeef }
53
+ its(:vendor) { should == 0xdeadbeef }
54
+ its ( :data) { should be_nil }
55
55
  end
56
56
 
57
57
 
58
- describe Vendor, ".new(:data => value)", :nosudo => true do
59
- subject { Vendor.new( :data => data ) }
60
- let( :data ) { "VENDOR DATA".unpack( "C*" ) }
61
- its( :data ) { should == [86, 69, 78, 68, 79, 82, 32, 68, 65, 84, 65] }
62
- its ( :vendor ) { should == 0 }
58
+ describe Vendor, '.new(:data => value)', :nosudo => true do
59
+ subject { Vendor.new(:data => data) }
60
+ let(:data) { 'VENDOR DATA'.unpack('C*') }
61
+ its(:data) { should == [86, 69, 78, 68, 79, 82, 32, 68, 65, 84, 65] }
62
+ its ( :vendor) { should == 0 }
63
63
  end
64
64
 
65
65
 
66
66
  describe Vendor, '.new("INVALID OPTION")', :nosudo => true do
67
- it { expect { Vendor.new "INVALID OPTION" }.to raise_error( TypeError ) }
67
+ it { expect { Vendor.new 'INVALID OPTION' }.to raise_error(TypeError) }
68
68
  end
69
69
  end
70
70
 
@@ -16,8 +16,8 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "spec_helper" )
20
- require "trema"
19
+ require File.join(File.dirname(__FILE__), 'spec_helper')
20
+ require 'trema'
21
21
 
22
22
 
23
23
  describe Trema do
@@ -19,13 +19,13 @@
19
19
 
20
20
 
21
21
  class CbenchSwitch < Controller
22
- def packet_in datapath_id, message
22
+ def packet_in(datapath_id, message)
23
23
  send_flow_mod_add(
24
24
  datapath_id,
25
25
  :cookie => 0,
26
- :match => ExactMatch.from( message ),
26
+ :match => ExactMatch.from(message),
27
27
  :buffer_id => message.buffer_id,
28
- :actions => ActionOutput.new( :port => message.in_port + 1 )
28
+ :actions => ActionOutput.new(:port => message.in_port + 1)
29
29
  )
30
30
  end
31
31
  end
@@ -20,20 +20,20 @@
20
20
  # Openflow message event dumper.
21
21
  #
22
22
  class Dumper < Controller
23
- def switch_ready datapath_id
24
- info "[switch_ready]"
23
+ def switch_ready(datapath_id)
24
+ info '[switch_ready]'
25
25
  info " datapath_id: #{ datapath_id.to_hex }"
26
26
  end
27
27
 
28
28
 
29
- def switch_disconnected datapath_id
30
- info "[switch_disconnected]"
29
+ def switch_disconnected(datapath_id)
30
+ info '[switch_disconnected]'
31
31
  info " datapath_id: #{ datapath_id.to_hex }"
32
32
  end
33
33
 
34
34
 
35
- def openflow_error datapath_id, message
36
- info "[error]"
35
+ def openflow_error(datapath_id, message)
36
+ info '[error]'
37
37
  info "datapath_id: #{ datapath_id.to_hex }"
38
38
  info "transaction_id: #{ message.transaction_id.to_hex }"
39
39
  info "type: #{ message.type.to_hex }"
@@ -42,17 +42,17 @@ class Dumper < Controller
42
42
  end
43
43
 
44
44
 
45
- def vendor datapath_id, message
46
- info "[vendor]"
45
+ def vendor(datapath_id, message)
46
+ info '[vendor]'
47
47
  info "datapath_id: #{ datapath_id.to_hex }"
48
48
  info "transaction_id: #{ message.transaction_id.to_hex }"
49
- info "data:"
49
+ info 'data:'
50
50
  info "#{ message.buffer.unpack "H*" }"
51
51
  end
52
52
 
53
53
 
54
- def features_reply datapath_id, message
55
- info "[features_reply]"
54
+ def features_reply(datapath_id, message)
55
+ info '[features_reply]'
56
56
  info "datapath_id: #{ datapath_id.to_hex }"
57
57
  info "transaction_id: #{ message.transaction_id.to_hex }"
58
58
  info "n_buffers: #{ message.n_buffers }"
@@ -65,8 +65,8 @@ class Dumper < Controller
65
65
  end
66
66
 
67
67
 
68
- def get_config_reply datapath_id, message
69
- info "[get_config_reply]"
68
+ def get_config_reply(datapath_id, message)
69
+ info '[get_config_reply]'
70
70
  info "datapath_id: #{ datapath_id.to_hex }"
71
71
  info "transaction_id: #{ message.transaction_id.to_hex }"
72
72
  info "flags: #{ message.flags.to_hex }"
@@ -74,8 +74,8 @@ class Dumper < Controller
74
74
  end
75
75
 
76
76
 
77
- def packet_in datapath_id, message
78
- info "[packet_in]"
77
+ def packet_in(datapath_id, message)
78
+ info '[packet_in]'
79
79
  info " datapath_id: #{ datapath_id.to_hex }"
80
80
  info " transaction_id: #{ message.transaction_id.to_hex }"
81
81
  info " buffer_id: #{ message.buffer_id.to_hex }"
@@ -86,12 +86,12 @@ class Dumper < Controller
86
86
  end
87
87
 
88
88
 
89
- def flow_removed datapath_id, message
90
- info "[flow_removed]"
89
+ def flow_removed(datapath_id, message)
90
+ info '[flow_removed]'
91
91
  info "datapath_id: #{ datapath_id.to_hex }"
92
92
  info "transaction_id: #{ message.transaction_id.to_hex }"
93
93
 
94
- info "match:"
94
+ info 'match:'
95
95
  info " wildcards: #{ message.match.wildcards.to_hex }"
96
96
  info " in_port: #{ message.match.in_port }"
97
97
  info " dl_src: #{ message.match.dl_src }"
@@ -117,8 +117,8 @@ class Dumper < Controller
117
117
  end
118
118
 
119
119
 
120
- def port_status datapath_id, message
121
- info "[port_status]"
120
+ def port_status(datapath_id, message)
121
+ info '[port_status]'
122
122
  info "datapath_id: #{ datapath_id.to_hex }"
123
123
  info "transaction_id: #{ message.transaction_id.to_hex }"
124
124
  info "reason: #{ message.reason.to_hex }"
@@ -126,8 +126,8 @@ class Dumper < Controller
126
126
  end
127
127
 
128
128
 
129
- def stats_reply datapath_id, message
130
- info "[stats_reply]"
129
+ def stats_reply(datapath_id, message)
130
+ info '[stats_reply]'
131
131
  info "datapath_id: #{ datapath_id.to_hex }"
132
132
  info "transaction_id: #{ message.transaction_id.to_hex }"
133
133
  info "type: #{ message.type.to_hex }"
@@ -136,19 +136,19 @@ class Dumper < Controller
136
136
  end
137
137
 
138
138
 
139
- def barrier_reply datapath_id, message
140
- info "[barrier_reply]"
139
+ def barrier_reply(datapath_id, message)
140
+ info '[barrier_reply]'
141
141
  info "datapath_id: #{ datapath_id.to_hex }"
142
142
  info "transaction_id: #{ message.transaction_id.to_hex }"
143
143
  end
144
144
 
145
145
 
146
- def queue_get_config_reply datapath_id, message
147
- info "[queue_get_config_reply]"
146
+ def queue_get_config_reply(datapath_id, message)
147
+ info '[queue_get_config_reply]'
148
148
  info "datapath_id: #{ datapath_id.to_hex }"
149
149
  info "transaction_id: #{ message.transaction_id.to_hex }"
150
150
  info "port: #{ message.port }"
151
- info( "queues:" );
151
+ info('queues:');
152
152
  dump_packet_queue message.queues
153
153
  end
154
154
 
@@ -158,7 +158,7 @@ class Dumper < Controller
158
158
  ##############################################################################
159
159
 
160
160
 
161
- def dump_phy_port port
161
+ def dump_phy_port(port)
162
162
  # for testing port-status record the mac address if port.number == 2.
163
163
  @hw_addr = port.hw_addr if port.number == 2
164
164
  info "port_no: #{ port.number }"
@@ -173,15 +173,15 @@ class Dumper < Controller
173
173
  end
174
174
 
175
175
 
176
- def dump_packet_queue queues
176
+ def dump_packet_queue(queues)
177
177
  queues.each do | packet_queue |
178
178
  info "queue_id: #{ packet_queue.queue_id.to_hex }"
179
179
  info " len: #{ packet_queue.len }"
180
- info " properties:"
180
+ info ' properties:'
181
181
  packet_queue.properties.each do | prop |
182
182
  info " property: #{ prop.property.to_hex }"
183
183
  info " len: #{ prop.len.to_hex }"
184
- info " rate: %u" % prop.rate if prop.property == PacketQueue::OFPQT_MIN_RATE
184
+ info ' rate: %u' % prop.rate if prop.property == PacketQueue::OFPQT_MIN_RATE
185
185
  end
186
186
  end
187
187
  end
@@ -17,8 +17,8 @@
17
17
 
18
18
 
19
19
  class HelloTrema < Controller
20
- def switch_ready datapath_id
21
- info "Hello %#x!" % datapath_id
20
+ def switch_ready(datapath_id)
21
+ info 'Hello %#x!' % datapath_id
22
22
  end
23
23
  end
24
24
 
@@ -28,18 +28,18 @@ class ForwardingEntry
28
28
  attr_writer :age_max
29
29
 
30
30
 
31
- def initialize mac, port_no, age_max, dpid
31
+ def initialize(mac, port_no, age_max, dpid)
32
32
  @mac = mac
33
33
  @port_no = port_no
34
34
  @age_max = age_max
35
35
  @dpid = dpid
36
36
  @last_update = Time.now
37
- debug "New entry: MAC address = #{ @mac.to_s }, port number = #{ @port_no }"
37
+ debug "New entry: MAC address = #{ @mac }, port number = #{ @port_no }"
38
38
  end
39
39
 
40
40
 
41
- def update port_no
42
- debug "Update: The port number of #{ @mac.to_s } has been changed #{ @port_no } => #{ port_no }"
41
+ def update(port_no)
42
+ debug "Update: The port number of #{ @mac } has been changed #{ @port_no } => #{ port_no }"
43
43
  @port_no = port_no
44
44
  @last_update = Time.now
45
45
  end
@@ -47,7 +47,7 @@ class ForwardingEntry
47
47
 
48
48
  def aged_out?
49
49
  aged_out = Time.now - @last_update > @age_max
50
- debug "Age out: An entry (MAC address = #{ @mac.to_s }, port number = #{ @port_no }) has been aged-out" if aged_out
50
+ debug "Age out: An entry (MAC address = #{ @mac }, port number = #{ @port_no }) has been aged-out" if aged_out
51
51
  aged_out
52
52
  end
53
53
  end
@@ -65,8 +65,8 @@ class FDB
65
65
  end
66
66
 
67
67
 
68
- def port_no_of mac
69
- dest = @db[ mac ]
68
+ def port_no_of(mac)
69
+ dest = @db[ mac]
70
70
  if dest
71
71
  dest.port_no
72
72
  else
@@ -75,22 +75,22 @@ class FDB
75
75
  end
76
76
 
77
77
 
78
- def lookup mac
79
- if dest = @db[ mac ]
80
- [ dest.dpid, dest.port_no ]
78
+ def lookup(mac)
79
+ if dest = @db[ mac]
80
+ [dest.dpid, dest.port_no]
81
81
  else
82
82
  nil
83
83
  end
84
84
  end
85
85
 
86
86
 
87
- def learn mac, port_no, dpid = nil
88
- entry = @db[ mac ]
87
+ def learn(mac, port_no, dpid = nil)
88
+ entry = @db[ mac]
89
89
  if entry
90
90
  entry.update port_no
91
91
  else
92
- new_entry = ForwardingEntry.new( mac, port_no, DEFAULT_AGE_MAX, dpid )
93
- @db[ new_entry.mac ] = new_entry
92
+ new_entry = ForwardingEntry.new(mac, port_no, DEFAULT_AGE_MAX, dpid)
93
+ @db[ new_entry.mac] = new_entry
94
94
  end
95
95
  end
96
96
 
@@ -18,7 +18,7 @@
18
18
  #
19
19
 
20
20
 
21
- require "fdb"
21
+ require 'fdb'
22
22
 
23
23
 
24
24
  #
@@ -33,11 +33,11 @@ class LearningSwitch < Controller
33
33
  end
34
34
 
35
35
 
36
- def packet_in datapath_id, message
36
+ def packet_in(datapath_id, message)
37
37
  return if message.macda.reserved?
38
38
 
39
39
  @fdb.learn message.macsa, message.in_port
40
- port_no = @fdb.port_no_of( message.macda )
40
+ port_no = @fdb.port_no_of(message.macda)
41
41
  if port_no
42
42
  flow_mod datapath_id, message, port_no
43
43
  packet_out datapath_id, message, port_no
@@ -57,25 +57,27 @@ class LearningSwitch < Controller
57
57
  ##############################################################################
58
58
 
59
59
 
60
- def flow_mod datapath_id, message, port_no
60
+ def flow_mod(datapath_id, message, port_no)
61
61
  send_flow_mod_add(
62
62
  datapath_id,
63
- :match => ExactMatch.from( message ),
64
- :actions => ActionOutput.new( :port => port_no )
63
+ :match => ExactMatch.from(message),
64
+ :actions => ActionOutput.new(:port => port_no)
65
65
  )
66
66
  end
67
67
 
68
68
 
69
- def packet_out datapath_id, message, port_no
69
+ def packet_out(datapath_id, message, port_no)
70
70
  send_packet_out(
71
71
  datapath_id,
72
- :packet_in => message,
73
- :actions => ActionOutput.new( :port => port_no )
72
+ :in_port => message.in_port,
73
+ :buffer_id => 0xffffffff,
74
+ :data => message.data,
75
+ :actions => ActionOutput.new(:port => port_no)
74
76
  )
75
77
  end
76
78
 
77
79
 
78
- def flood datapath_id, message
80
+ def flood(datapath_id, message)
79
81
  packet_out datapath_id, message, OFPP_FLOOD
80
82
  end
81
83
  end