trema 0.4.6 → 0.4.7

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.
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