trema 0.4.7 → 0.4.8

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 (718) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +33 -54
  3. data/.hound.yml +3 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +17 -1
  6. data/.travis.yml +14 -18
  7. data/CHANGELOG.md +10 -0
  8. data/Gemfile +1 -26
  9. data/README.md +25 -241
  10. data/Rakefile +4 -1056
  11. data/bin/.gitignore +3 -0
  12. data/bin/trema +163 -237
  13. data/features/cleanup_on_failure.feature +118 -0
  14. data/features/logging.feature +73 -0
  15. data/features/open_flow13.feature +21 -0
  16. data/features/step_definitions/.gitignore +35 -0
  17. data/features/step_definitions/.rubocop.yml +5 -0
  18. data/features/step_definitions/.travis.yml +19 -0
  19. data/features/step_definitions/Gemfile +9 -0
  20. data/features/step_definitions/Guardfile +4 -0
  21. data/features/step_definitions/LICENSE +675 -0
  22. data/features/step_definitions/README.md +7 -0
  23. data/features/step_definitions/Rakefile +10 -0
  24. data/features/step_definitions/show_stats_steps.rb +56 -0
  25. data/features/step_definitions/virtual_link_steps.rb +8 -0
  26. data/features/support/env.rb +0 -73
  27. data/features/support/hooks.rb +6 -50
  28. data/features/trema_delete_link.feature +30 -0
  29. data/features/trema_killall.feature +56 -0
  30. data/features/trema_run.feature +47 -0
  31. data/features/trema_start.feature +73 -0
  32. data/features/trema_stop.feature +50 -0
  33. data/lib/trema.rb +4 -0
  34. data/lib/trema/command.rb +184 -0
  35. data/lib/trema/controller.rb +289 -0
  36. data/lib/trema/dirs.rb +14 -0
  37. data/lib/trema/drb.rb +32 -0
  38. data/lib/trema/logger.rb +63 -0
  39. data/lib/trema/monkey_patch/integer.rb +8 -0
  40. data/lib/trema/monkey_patch/integer/base_conversions.rb +12 -0
  41. data/lib/trema/monkey_patch/integer/durations.rb +12 -0
  42. data/lib/trema/switch.rb +83 -0
  43. data/lib/trema/version.rb +5 -0
  44. data/spec/spec_helper.rb +9 -178
  45. data/spec/trema/controller_spec.rb +4 -53
  46. data/tasks/.gitignore +34 -0
  47. data/tasks/LICENSE +675 -0
  48. data/tasks/README.md +6 -0
  49. data/tasks/cucumber.rake +14 -0
  50. data/tasks/flay.rake +15 -0
  51. data/tasks/flog.rake +25 -0
  52. data/tasks/gem.rake +15 -0
  53. data/tasks/reek.rake +11 -0
  54. data/tasks/relish.rake +8 -0
  55. data/tasks/rspec.rake +8 -0
  56. data/tasks/rubocop.rake +2 -16
  57. data/tasks/yard.rake +11 -0
  58. data/trema.gemspec +24 -23
  59. metadata +180 -720
  60. data/.yardopts +0 -4
  61. data/Doxyfile +0 -1679
  62. data/Guardfile +0 -14
  63. data/bin/quality +0 -31
  64. data/bin/trema-config +0 -59
  65. data/build.rb +0 -32
  66. data/cruise.rb +0 -409
  67. data/features/.nav +0 -50
  68. data/features/README.md +0 -7
  69. data/features/core/get_pid_by_trema_name.feature +0 -137
  70. data/features/core/packetin_filter.feature +0 -55
  71. data/features/core/switch_manager.feature +0 -41
  72. data/features/core/trema-config.feature +0 -55
  73. data/features/dsl/switch_port_specifier.feature +0 -15
  74. data/features/examples/dumper.feature +0 -35
  75. data/features/examples/hello_trema.feature +0 -23
  76. data/features/examples/learning_switch.feature +0 -37
  77. data/features/examples/list_switches.feature +0 -24
  78. data/features/examples/message.set_config.feature +0 -27
  79. data/features/examples/message.vendor-action.feature +0 -25
  80. data/features/examples/message.vendor-stats-request.feature +0 -20
  81. data/features/examples/multi_learning_switch.feature +0 -107
  82. data/features/examples/openflow_message.echo.feature +0 -59
  83. data/features/examples/openflow_message.features_request.feature +0 -35
  84. data/features/examples/openflow_message.hello.feature +0 -59
  85. data/features/examples/packet_in.feature +0 -33
  86. data/features/examples/packetin_filter_config.feature +0 -95
  87. data/features/examples/patch_panel.feature +0 -29
  88. data/features/examples/repeater_hub.feature +0 -52
  89. data/features/examples/switch_info.feature +0 -51
  90. data/features/examples/switch_monitor.feature +0 -35
  91. data/features/examples/transparent_firewall.feature +0 -73
  92. data/features/handlers/switch_ready.feature +0 -40
  93. data/features/step_definitions/misc_steps.rb +0 -85
  94. data/features/step_definitions/send_packets_steps.rb +0 -33
  95. data/features/step_definitions/stats_steps.rb +0 -39
  96. data/features/switch_event/C-add_forward_entry.feature +0 -114
  97. data/features/switch_event/C-delete_forward_entry.feature +0 -85
  98. data/features/switch_event/C-dump_forward_entries.feature +0 -72
  99. data/features/switch_event/C-set_forward_entries.feature +0 -77
  100. data/features/switch_event/README.md +0 -40
  101. data/features/switch_event/add_forward_entry.feature +0 -160
  102. data/features/switch_event/delete_forward_entry.feature +0 -160
  103. data/features/switch_event/dump_forward_entries.feature +0 -103
  104. data/features/switch_event/set_forward_entries.feature +0 -102
  105. data/features/trema_commands/README.md +0 -8
  106. data/features/trema_commands/dump_flows.feature +0 -41
  107. data/features/trema_commands/help.feature +0 -27
  108. data/features/trema_commands/help_option.feature +0 -20
  109. data/features/trema_commands/kill.feature +0 -56
  110. data/features/trema_commands/killall.feature +0 -32
  111. data/features/trema_commands/port_down.feature +0 -71
  112. data/features/trema_commands/port_up.feature +0 -75
  113. data/features/trema_commands/reset_stats.feature +0 -56
  114. data/features/trema_commands/run.feature +0 -56
  115. data/features/trema_commands/send_packets.feature +0 -46
  116. data/features/trema_commands/show_stats.feature +0 -66
  117. data/features/trema_commands/up.feature +0 -34
  118. data/features/trema_commands/version.feature +0 -10
  119. data/features/trema_commands/version_option.feature +0 -8
  120. data/rubocop-todo.yml +0 -159
  121. data/ruby/.gitignore +0 -4
  122. data/ruby/blocker.rb +0 -74
  123. data/ruby/extconf.rb +0 -80
  124. data/ruby/sub-process.rb +0 -289
  125. data/ruby/trema/action-common.c +0 -46
  126. data/ruby/trema/action-common.h +0 -38
  127. data/ruby/trema/action.rb +0 -33
  128. data/ruby/trema/aggregate-stats-reply.rb +0 -68
  129. data/ruby/trema/app.rb +0 -114
  130. data/ruby/trema/barrier-reply.c +0 -98
  131. data/ruby/trema/barrier-reply.h +0 -44
  132. data/ruby/trema/barrier-request.c +0 -135
  133. data/ruby/trema/barrier-request.h +0 -42
  134. data/ruby/trema/cli.rb +0 -267
  135. data/ruby/trema/command.rb +0 -41
  136. data/ruby/trema/command/dump_flows.rb +0 -43
  137. data/ruby/trema/command/kill.rb +0 -75
  138. data/ruby/trema/command/killall.rb +0 -38
  139. data/ruby/trema/command/netns.rb +0 -38
  140. data/ruby/trema/command/port_down.rb +0 -43
  141. data/ruby/trema/command/port_up.rb +0 -43
  142. data/ruby/trema/command/reset_stats.rb +0 -41
  143. data/ruby/trema/command/ruby.rb +0 -38
  144. data/ruby/trema/command/run.rb +0 -110
  145. data/ruby/trema/command/send_packets.rb +0 -46
  146. data/ruby/trema/command/shell.rb +0 -57
  147. data/ruby/trema/command/show_stats.rb +0 -65
  148. data/ruby/trema/command/up.rb +0 -44
  149. data/ruby/trema/command/version.rb +0 -35
  150. data/ruby/trema/compat.h +0 -36
  151. data/ruby/trema/controller.c +0 -691
  152. data/ruby/trema/controller.h +0 -42
  153. data/ruby/trema/controller.rb +0 -255
  154. data/ruby/trema/custom-switch.rb +0 -56
  155. data/ruby/trema/daemon.rb +0 -184
  156. data/ruby/trema/default-logger.c +0 -161
  157. data/ruby/trema/default-logger.h +0 -42
  158. data/ruby/trema/default-logger.rb +0 -29
  159. data/ruby/trema/default_openflow_channel_port.rb +0 -26
  160. data/ruby/trema/desc-stats-reply.rb +0 -75
  161. data/ruby/trema/dsl.rb +0 -32
  162. data/ruby/trema/dsl/configuration.rb +0 -145
  163. data/ruby/trema/dsl/context.rb +0 -69
  164. data/ruby/trema/dsl/custom-switch.rb +0 -44
  165. data/ruby/trema/dsl/link.rb +0 -39
  166. data/ruby/trema/dsl/netns.rb +0 -78
  167. data/ruby/trema/dsl/parser.rb +0 -70
  168. data/ruby/trema/dsl/rswitch.rb +0 -47
  169. data/ruby/trema/dsl/run.rb +0 -47
  170. data/ruby/trema/dsl/runner.rb +0 -178
  171. data/ruby/trema/dsl/stanza.rb +0 -51
  172. data/ruby/trema/dsl/switch.rb +0 -76
  173. data/ruby/trema/dsl/syntax-error.rb +0 -31
  174. data/ruby/trema/dsl/syntax.rb +0 -128
  175. data/ruby/trema/dsl/vhost.rb +0 -106
  176. data/ruby/trema/dsl/vswitch.rb +0 -45
  177. data/ruby/trema/echo-reply.c +0 -122
  178. data/ruby/trema/echo-reply.h +0 -40
  179. data/ruby/trema/echo-request.c +0 -117
  180. data/ruby/trema/echo-request.h +0 -40
  181. data/ruby/trema/echo.c +0 -99
  182. data/ruby/trema/echo.h +0 -39
  183. data/ruby/trema/enqueue.rb +0 -87
  184. data/ruby/trema/error.c +0 -262
  185. data/ruby/trema/error.h +0 -42
  186. data/ruby/trema/exact-match.rb +0 -34
  187. data/ruby/trema/executables.rb +0 -99
  188. data/ruby/trema/features-reply.c +0 -330
  189. data/ruby/trema/features-reply.h +0 -54
  190. data/ruby/trema/features-request.c +0 -134
  191. data/ruby/trema/features-request.h +0 -42
  192. data/ruby/trema/flow-mod.c +0 -150
  193. data/ruby/trema/flow-mod.h +0 -42
  194. data/ruby/trema/flow-removed.c +0 -280
  195. data/ruby/trema/flow-removed.h +0 -44
  196. data/ruby/trema/flow-stats-reply.rb +0 -107
  197. data/ruby/trema/flow.rb +0 -65
  198. data/ruby/trema/get-config-reply.c +0 -158
  199. data/ruby/trema/get-config-reply.h +0 -50
  200. data/ruby/trema/get-config-request.c +0 -136
  201. data/ruby/trema/get-config-request.h +0 -42
  202. data/ruby/trema/hardware-switch.rb +0 -86
  203. data/ruby/trema/hello.c +0 -133
  204. data/ruby/trema/hello.h +0 -42
  205. data/ruby/trema/host.rb +0 -263
  206. data/ruby/trema/link.rb +0 -177
  207. data/ruby/trema/list-switches-reply.c +0 -44
  208. data/ruby/trema/list-switches-reply.h +0 -38
  209. data/ruby/trema/mac.rb +0 -29
  210. data/ruby/trema/match.c +0 -621
  211. data/ruby/trema/match.h +0 -34
  212. data/ruby/trema/monkey-patch/integer.rb +0 -35
  213. data/ruby/trema/monkey-patch/integer/base-conversions.rb +0 -34
  214. data/ruby/trema/monkey-patch/integer/ranges.rb +0 -49
  215. data/ruby/trema/monkey-patch/integer/validators.rb +0 -36
  216. data/ruby/trema/monkey-patch/module.rb +0 -33
  217. data/ruby/trema/monkey-patch/module/class-method.rb +0 -38
  218. data/ruby/trema/monkey-patch/module/deprecation.rb +0 -39
  219. data/ruby/trema/monkey-patch/string.rb +0 -31
  220. data/ruby/trema/monkey-patch/string/inflectors.rb +0 -52
  221. data/ruby/trema/netns.rb +0 -127
  222. data/ruby/trema/network-component.rb +0 -151
  223. data/ruby/trema/ofctl.rb +0 -70
  224. data/ruby/trema/open-vswitch.rb +0 -160
  225. data/ruby/trema/openflow-error.c +0 -193
  226. data/ruby/trema/openflow-error.h +0 -51
  227. data/ruby/trema/openflow-switch.rb +0 -35
  228. data/ruby/trema/ordered-hash.rb +0 -75
  229. data/ruby/trema/packet-in.c +0 -1365
  230. data/ruby/trema/packet-in.h +0 -44
  231. data/ruby/trema/packet-queue.rb +0 -181
  232. data/ruby/trema/packetin-filter.rb +0 -124
  233. data/ruby/trema/path.rb +0 -85
  234. data/ruby/trema/phost.rb +0 -76
  235. data/ruby/trema/port-mod.c +0 -232
  236. data/ruby/trema/port-mod.h +0 -34
  237. data/ruby/trema/port-stats-reply.rb +0 -109
  238. data/ruby/trema/port-status-add.rb +0 -60
  239. data/ruby/trema/port-status-delete.rb +0 -60
  240. data/ruby/trema/port-status-modify.rb +0 -60
  241. data/ruby/trema/port-status.c +0 -192
  242. data/ruby/trema/port-status.h +0 -41
  243. data/ruby/trema/port.c +0 -398
  244. data/ruby/trema/port.h +0 -45
  245. data/ruby/trema/process.rb +0 -103
  246. data/ruby/trema/queue-get-config-reply.c +0 -205
  247. data/ruby/trema/queue-get-config-reply.h +0 -45
  248. data/ruby/trema/queue-get-config-request.c +0 -141
  249. data/ruby/trema/queue-get-config-request.h +0 -42
  250. data/ruby/trema/queue-stats-reply.rb +0 -76
  251. data/ruby/trema/ruby-switch.rb +0 -62
  252. data/ruby/trema/send-out-port.rb +0 -113
  253. data/ruby/trema/set-config.c +0 -174
  254. data/ruby/trema/set-config.h +0 -42
  255. data/ruby/trema/set-eth-addr.rb +0 -54
  256. data/ruby/trema/set-eth-dst-addr.rb +0 -52
  257. data/ruby/trema/set-eth-src-addr.rb +0 -53
  258. data/ruby/trema/set-ip-addr.rb +0 -54
  259. data/ruby/trema/set-ip-dst-addr.rb +0 -53
  260. data/ruby/trema/set-ip-src-addr.rb +0 -52
  261. data/ruby/trema/set-ip-tos.rb +0 -64
  262. data/ruby/trema/set-transport-dst-port.rb +0 -53
  263. data/ruby/trema/set-transport-port.rb +0 -53
  264. data/ruby/trema/set-transport-src-port.rb +0 -54
  265. data/ruby/trema/set-vlan-priority.rb +0 -66
  266. data/ruby/trema/set-vlan-vid.rb +0 -65
  267. data/ruby/trema/shell.rb +0 -37
  268. data/ruby/trema/shell/down.rb +0 -37
  269. data/ruby/trema/shell/killall.rb +0 -38
  270. data/ruby/trema/shell/link.rb +0 -59
  271. data/ruby/trema/shell/reset_stats.rb +0 -49
  272. data/ruby/trema/shell/run.rb +0 -67
  273. data/ruby/trema/shell/send_packets.rb +0 -40
  274. data/ruby/trema/shell/show_stats.rb +0 -47
  275. data/ruby/trema/shell/up.rb +0 -41
  276. data/ruby/trema/shell/vhost.rb +0 -42
  277. data/ruby/trema/shell/vswitch.rb +0 -47
  278. data/ruby/trema/stats-helper.rb +0 -63
  279. data/ruby/trema/stats-reply.c +0 -540
  280. data/ruby/trema/stats-reply.h +0 -51
  281. data/ruby/trema/stats-request.c +0 -715
  282. data/ruby/trema/stats-request.h +0 -40
  283. data/ruby/trema/strip-vlan-header.rb +0 -41
  284. data/ruby/trema/switch-daemon.rb +0 -90
  285. data/ruby/trema/switch-disconnected.c +0 -38
  286. data/ruby/trema/switch-disconnected.h +0 -36
  287. data/ruby/trema/switch-event.c +0 -648
  288. data/ruby/trema/switch-event.h +0 -27
  289. data/ruby/trema/switch-manager.rb +0 -119
  290. data/ruby/trema/switch.c +0 -197
  291. data/ruby/trema/switch.h +0 -40
  292. data/ruby/trema/switch.rb +0 -56
  293. data/ruby/trema/table-stats-reply.rb +0 -85
  294. data/ruby/trema/timers.rb +0 -95
  295. data/ruby/trema/trema-ruby-utils.c +0 -66
  296. data/ruby/trema/trema-ruby-utils.h +0 -42
  297. data/ruby/trema/trema.c +0 -126
  298. data/ruby/trema/tremashark.rb +0 -46
  299. data/ruby/trema/util.rb +0 -116
  300. data/ruby/trema/vendor-action.rb +0 -82
  301. data/ruby/trema/vendor-stats-reply.rb +0 -64
  302. data/ruby/trema/vendor.c +0 -230
  303. data/ruby/trema/vendor.h +0 -48
  304. data/ruby/trema/version.rb +0 -28
  305. data/spec/support/action.rb +0 -49
  306. data/spec/support/mandatory-option.rb +0 -53
  307. data/spec/support/matchers/constant.rb +0 -25
  308. data/spec/support/openflow-message.rb +0 -173
  309. data/spec/support/port-status.rb +0 -35
  310. data/spec/trema/app_spec.rb +0 -88
  311. data/spec/trema/barrier-reply_spec.rb +0 -43
  312. data/spec/trema/barrier-request_spec.rb +0 -92
  313. data/spec/trema/cli_spec.rb +0 -156
  314. data/spec/trema/default-logger_spec.rb +0 -46
  315. data/spec/trema/dsl/configuration_spec.rb +0 -120
  316. data/spec/trema/dsl/link_spec.rb +0 -50
  317. data/spec/trema/dsl/run_spec.rb +0 -72
  318. data/spec/trema/dsl/runner_spec.rb +0 -247
  319. data/spec/trema/dsl/switch_spec.rb +0 -69
  320. data/spec/trema/dsl/syntax_spec.rb +0 -110
  321. data/spec/trema/dsl/vhost_spec.rb +0 -144
  322. data/spec/trema/dsl/vswitch_spec.rb +0 -80
  323. data/spec/trema/echo-reply_spec.rb +0 -84
  324. data/spec/trema/echo-request_spec.rb +0 -128
  325. data/spec/trema/enqueue_spec.rb +0 -76
  326. data/spec/trema/error_spec.rb +0 -81
  327. data/spec/trema/executables_spec.rb +0 -54
  328. data/spec/trema/features-reply_spec.rb +0 -91
  329. data/spec/trema/features-request_spec.rb +0 -93
  330. data/spec/trema/flow-mod_spec.rb +0 -99
  331. data/spec/trema/flow-removed_spec.rb +0 -144
  332. data/spec/trema/get-config-reply_spec.rb +0 -43
  333. data/spec/trema/get-config-request_spec.rb +0 -92
  334. data/spec/trema/hardware-switch_spec.rb +0 -54
  335. data/spec/trema/hello_spec.rb +0 -63
  336. data/spec/trema/host_spec.rb +0 -191
  337. data/spec/trema/link_spec.rb +0 -62
  338. data/spec/trema/list-switches-reply_spec.rb +0 -46
  339. data/spec/trema/match_spec.rb +0 -111
  340. data/spec/trema/open-vswitch_spec.rb +0 -121
  341. data/spec/trema/openflow-error_spec.rb +0 -141
  342. data/spec/trema/packet-in_spec.rb +0 -717
  343. data/spec/trema/packet-out_spec.rb +0 -125
  344. data/spec/trema/packetin-filter_spec.rb +0 -39
  345. data/spec/trema/port-mod_spec.rb +0 -98
  346. data/spec/trema/port-status-add_spec.rb +0 -32
  347. data/spec/trema/port-status-delete_spec.rb +0 -32
  348. data/spec/trema/port-status-modify_spec.rb +0 -71
  349. data/spec/trema/port-status_spec.rb +0 -38
  350. data/spec/trema/port_spec.rb +0 -59
  351. data/spec/trema/process_spec.rb +0 -69
  352. data/spec/trema/queue-get-config-reply_spec.rb +0 -65
  353. data/spec/trema/queue-get-config-request_spec.rb +0 -67
  354. data/spec/trema/send-out-port_spec.rb +0 -106
  355. data/spec/trema/set-config_spec.rb +0 -78
  356. data/spec/trema/set-eth-addr_spec.rb +0 -62
  357. data/spec/trema/set-ip-addr_spec.rb +0 -81
  358. data/spec/trema/set-ip-tos_spec.rb +0 -70
  359. data/spec/trema/set-transport-dst-port_spec.rb +0 -65
  360. data/spec/trema/set-transport-src-port_spec.rb +0 -65
  361. data/spec/trema/set-vlan-priority_spec.rb +0 -65
  362. data/spec/trema/set-vlan-vid_spec.rb +0 -65
  363. data/spec/trema/shell/vhost_spec.rb +0 -58
  364. data/spec/trema/shell/vswitch_spec.rb +0 -87
  365. data/spec/trema/stats-reply_spec.rb +0 -363
  366. data/spec/trema/stats-request_spec.rb +0 -166
  367. data/spec/trema/strip-vlan-header_spec.rb +0 -44
  368. data/spec/trema/switch-daemon_spec.rb +0 -81
  369. data/spec/trema/switch-disconnected_spec.rb +0 -56
  370. data/spec/trema/switch-manager_spec.rb +0 -41
  371. data/spec/trema/tremashark_spec.rb +0 -39
  372. data/spec/trema/util_spec.rb +0 -88
  373. data/spec/trema/vendor-action_spec.rb +0 -75
  374. data/spec/trema/vendor_spec.rb +0 -76
  375. data/spec/trema_spec.rb +0 -94
  376. data/src/examples/cbench_switch/README +0 -21
  377. data/src/examples/cbench_switch/cbench-switch.rb +0 -38
  378. data/src/examples/cbench_switch/cbench_switch.c +0 -66
  379. data/src/examples/dumper/dumper.c +0 -362
  380. data/src/examples/dumper/dumper.conf +0 -7
  381. data/src/examples/dumper/dumper.rb +0 -195
  382. data/src/examples/hello_trema/.gitignore +0 -2
  383. data/src/examples/hello_trema/README.md +0 -2
  384. data/src/examples/hello_trema/hello-trema.rb +0 -30
  385. data/src/examples/hello_trema/hello_trema.c +0 -48
  386. data/src/examples/hello_trema/sample.conf +0 -1
  387. data/src/examples/learning_switch/README +0 -15
  388. data/src/examples/learning_switch/fdb.rb +0 -110
  389. data/src/examples/learning_switch/learning-switch.rb +0 -90
  390. data/src/examples/learning_switch/learning_switch.c +0 -217
  391. data/src/examples/learning_switch/learning_switch.conf +0 -18
  392. data/src/examples/list_switches/README +0 -19
  393. data/src/examples/list_switches/list-switches.rb +0 -43
  394. data/src/examples/list_switches/list_switches.c +0 -79
  395. data/src/examples/list_switches/list_switches.conf +0 -15
  396. data/src/examples/match_compare/match-compare.conf +0 -30
  397. data/src/examples/match_compare/match-compare.rb +0 -97
  398. data/src/examples/multi_learning_switch/README +0 -14
  399. data/src/examples/multi_learning_switch/multi-learning-switch.rb +0 -94
  400. data/src/examples/multi_learning_switch/multi_learning_switch.c +0 -294
  401. data/src/examples/multi_learning_switch/multi_learning_switch.conf +0 -17
  402. data/src/examples/openflow_message/README +0 -11
  403. data/src/examples/openflow_message/echo.c +0 -80
  404. data/src/examples/openflow_message/echo.rb +0 -56
  405. data/src/examples/openflow_message/example.rb +0 -60
  406. data/src/examples/openflow_message/features-request.rb +0 -96
  407. data/src/examples/openflow_message/features_request.c +0 -167
  408. data/src/examples/openflow_message/hello.c +0 -68
  409. data/src/examples/openflow_message/hello.rb +0 -43
  410. data/src/examples/openflow_message/set-config.rb +0 -57
  411. data/src/examples/openflow_message/set_config.c +0 -68
  412. data/src/examples/openflow_message/vendor-action.rb +0 -43
  413. data/src/examples/openflow_message/vendor-stats-request.rb +0 -66
  414. data/src/examples/openflow_message/vendor_action.c +0 -103
  415. data/src/examples/openflow_switch/echo_switch.c +0 -89
  416. data/src/examples/openflow_switch/hello_switch.c +0 -85
  417. data/src/examples/packet_in/README +0 -15
  418. data/src/examples/packet_in/packet-in.rb +0 -37
  419. data/src/examples/packet_in/packet_in.c +0 -53
  420. data/src/examples/packet_in/packet_in.conf +0 -15
  421. data/src/examples/packetin_filter_config/README +0 -12
  422. data/src/examples/packetin_filter_config/add_filter.c +0 -71
  423. data/src/examples/packetin_filter_config/delete_filter.c +0 -63
  424. data/src/examples/packetin_filter_config/delete_filter_strict.c +0 -73
  425. data/src/examples/packetin_filter_config/dump_filter.c +0 -63
  426. data/src/examples/packetin_filter_config/dump_filter_strict.c +0 -73
  427. data/src/examples/packetin_filter_config/packetin_filter_config.c +0 -132
  428. data/src/examples/packetin_filter_config/packetin_filter_config.conf +0 -7
  429. data/src/examples/packetin_filter_config/utils.c +0 -100
  430. data/src/examples/packetin_filter_config/utils.h +0 -40
  431. data/src/examples/patch_panel/network.conf +0 -14
  432. data/src/examples/patch_panel/patch-panel.conf +0 -1
  433. data/src/examples/patch_panel/patch-panel.rb +0 -59
  434. data/src/examples/repeater_hub/README +0 -8
  435. data/src/examples/repeater_hub/repeater-hub.rb +0 -41
  436. data/src/examples/repeater_hub/repeater-hub_spec.rb +0 -154
  437. data/src/examples/repeater_hub/repeater_hub.c +0 -81
  438. data/src/examples/repeater_hub/repeater_hub.conf +0 -28
  439. data/src/examples/simple_router/README +0 -18
  440. data/src/examples/simple_router/arp-table.rb +0 -81
  441. data/src/examples/simple_router/interface.rb +0 -90
  442. data/src/examples/simple_router/routing-table.rb +0 -60
  443. data/src/examples/simple_router/simple-router.rb +0 -191
  444. data/src/examples/simple_router/simple_router.conf +0 -24
  445. data/src/examples/simple_router/simple_router_netns.conf +0 -15
  446. data/src/examples/simple_router/simple_router_network.conf +0 -6
  447. data/src/examples/switch_event_config/.gitignore +0 -6
  448. data/src/examples/switch_event_config/add_forward_entry.c +0 -227
  449. data/src/examples/switch_event_config/delete_forward_entry.c +0 -226
  450. data/src/examples/switch_event_config/dump_forward_entries.c +0 -190
  451. data/src/examples/switch_event_config/network.conf +0 -2
  452. data/src/examples/switch_event_config/set_forward_entries.c +0 -210
  453. data/src/examples/switch_info/README +0 -13
  454. data/src/examples/switch_info/switch-info.rb +0 -44
  455. data/src/examples/switch_info/switch_info.c +0 -78
  456. data/src/examples/switch_info/switch_info.conf +0 -3
  457. data/src/examples/switch_monitor/switch-monitor.conf +0 -3
  458. data/src/examples/switch_monitor/switch-monitor.rb +0 -56
  459. data/src/examples/switch_monitor/switch_monitor.c +0 -152
  460. data/src/examples/traffic_monitor/counter.c +0 -72
  461. data/src/examples/traffic_monitor/counter.h +0 -46
  462. data/src/examples/traffic_monitor/counter.rb +0 -44
  463. data/src/examples/traffic_monitor/fdb.c +0 -74
  464. data/src/examples/traffic_monitor/fdb.h +0 -48
  465. data/src/examples/traffic_monitor/fdb.rb +0 -42
  466. data/src/examples/traffic_monitor/traffic-monitor.rb +0 -98
  467. data/src/examples/traffic_monitor/traffic_monitor.c +0 -161
  468. data/src/examples/traffic_monitor/traffic_monitor.conf +0 -16
  469. data/src/examples/transparent_firewall/README.md +0 -61
  470. data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +0 -713
  471. data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +0 -3440
  472. data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +0 -11342
  473. data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +0 -1937
  474. data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +0 -7329
  475. data/src/examples/transparent_firewall/block-rfc1918.rb +0 -86
  476. data/src/examples/transparent_firewall/pass-delegated.rb +0 -178
  477. data/src/examples/transparent_firewall/regen_aggregated.sh +0 -53
  478. data/src/examples/transparent_firewall/stats-to-cidrs.rb +0 -59
  479. data/src/lib/arp.h +0 -64
  480. data/src/lib/bool.h +0 -47
  481. data/src/lib/buffer.c +0 -304
  482. data/src/lib/buffer.h +0 -54
  483. data/src/lib/byteorder.c +0 -571
  484. data/src/lib/byteorder.h +0 -108
  485. data/src/lib/checks.h +0 -40
  486. data/src/lib/chibach.c +0 -392
  487. data/src/lib/chibach.h +0 -69
  488. data/src/lib/chibach_private.c +0 -168
  489. data/src/lib/chibach_private.h +0 -50
  490. data/src/lib/daemon.c +0 -429
  491. data/src/lib/daemon.h +0 -40
  492. data/src/lib/doubly_linked_list.c +0 -284
  493. data/src/lib/doubly_linked_list.h +0 -86
  494. data/src/lib/ether.c +0 -47
  495. data/src/lib/ether.h +0 -92
  496. data/src/lib/etherip.h +0 -44
  497. data/src/lib/event_forward_interface.c +0 -788
  498. data/src/lib/event_forward_interface.h +0 -138
  499. data/src/lib/event_handler.c +0 -419
  500. data/src/lib/event_handler.h +0 -57
  501. data/src/lib/external_callback.c +0 -126
  502. data/src/lib/external_callback.h +0 -46
  503. data/src/lib/hash_table.c +0 -415
  504. data/src/lib/hash_table.h +0 -136
  505. data/src/lib/icmp.h +0 -72
  506. data/src/lib/igmp.h +0 -48
  507. data/src/lib/ipv4.h +0 -64
  508. data/src/lib/ipv6.h +0 -46
  509. data/src/lib/linked_list.c +0 -244
  510. data/src/lib/linked_list.h +0 -84
  511. data/src/lib/log.c +0 -636
  512. data/src/lib/log.h +0 -77
  513. data/src/lib/management_interface.c +0 -359
  514. data/src/lib/management_interface.h +0 -40
  515. data/src/lib/management_service_interface.c +0 -102
  516. data/src/lib/management_service_interface.h +0 -134
  517. data/src/lib/match.h +0 -82
  518. data/src/lib/match_table.c +0 -606
  519. data/src/lib/match_table.h +0 -49
  520. data/src/lib/message_queue.c +0 -143
  521. data/src/lib/message_queue.h +0 -59
  522. data/src/lib/messenger.c +0 -1821
  523. data/src/lib/messenger.h +0 -145
  524. data/src/lib/openflow_application_interface.c +0 -1800
  525. data/src/lib/openflow_application_interface.h +0 -359
  526. data/src/lib/openflow_message.c +0 -4240
  527. data/src/lib/openflow_message.h +0 -291
  528. data/src/lib/openflow_service_interface.h +0 -58
  529. data/src/lib/openflow_switch_interface.c +0 -1378
  530. data/src/lib/openflow_switch_interface.h +0 -262
  531. data/src/lib/packet_info.c +0 -336
  532. data/src/lib/packet_info.h +0 -233
  533. data/src/lib/packet_parser.c +0 -522
  534. data/src/lib/packetin_filter_interface.c +0 -292
  535. data/src/lib/packetin_filter_interface.h +0 -125
  536. data/src/lib/persistent_storage.c +0 -478
  537. data/src/lib/persistent_storage.h +0 -44
  538. data/src/lib/secure_channel.c +0 -496
  539. data/src/lib/secure_channel.h +0 -43
  540. data/src/lib/stat.c +0 -248
  541. data/src/lib/stat.h +0 -51
  542. data/src/lib/tcp.h +0 -62
  543. data/src/lib/timer.c +0 -349
  544. data/src/lib/timer.h +0 -51
  545. data/src/lib/trema.c +0 -776
  546. data/src/lib/trema.h +0 -80
  547. data/src/lib/trema.hpp +0 -49
  548. data/src/lib/trema_private.c +0 -175
  549. data/src/lib/trema_private.h +0 -64
  550. data/src/lib/trema_wrapper.c +0 -59
  551. data/src/lib/trema_wrapper.h +0 -66
  552. data/src/lib/udp.h +0 -41
  553. data/src/lib/utility.c +0 -625
  554. data/src/lib/utility.h +0 -84
  555. data/src/lib/wrapper.c +0 -121
  556. data/src/lib/wrapper.h +0 -76
  557. data/src/management/application.c +0 -222
  558. data/src/management/echo.c +0 -183
  559. data/src/management/set_logging_level.c +0 -151
  560. data/src/management/show_stats.c +0 -148
  561. data/src/management/trema_manager +0 -184
  562. data/src/packetin_filter/README +0 -17
  563. data/src/packetin_filter/packetin_filter.c +0 -575
  564. data/src/switch_manager/README +0 -20
  565. data/src/switch_manager/cookie_table.c +0 -290
  566. data/src/switch_manager/cookie_table.h +0 -70
  567. data/src/switch_manager/dpid_table.c +0 -108
  568. data/src/switch_manager/dpid_table.h +0 -43
  569. data/src/switch_manager/event_forward_entry_manipulation.c +0 -120
  570. data/src/switch_manager/event_forward_entry_manipulation.h +0 -31
  571. data/src/switch_manager/ofpmsg_recv.c +0 -497
  572. data/src/switch_manager/ofpmsg_recv.h +0 -39
  573. data/src/switch_manager/ofpmsg_send.c +0 -274
  574. data/src/switch_manager/ofpmsg_send.h +0 -51
  575. data/src/switch_manager/secure_channel_listener.c +0 -296
  576. data/src/switch_manager/secure_channel_listener.h +0 -40
  577. data/src/switch_manager/secure_channel_receiver.c +0 -129
  578. data/src/switch_manager/secure_channel_receiver.h +0 -40
  579. data/src/switch_manager/secure_channel_sender.c +0 -131
  580. data/src/switch_manager/secure_channel_sender.h +0 -41
  581. data/src/switch_manager/service_interface.c +0 -180
  582. data/src/switch_manager/service_interface.h +0 -44
  583. data/src/switch_manager/switch.c +0 -988
  584. data/src/switch_manager/switch.h +0 -50
  585. data/src/switch_manager/switch_manager.c +0 -643
  586. data/src/switch_manager/switch_manager.h +0 -65
  587. data/src/switch_manager/switch_option.c +0 -30
  588. data/src/switch_manager/switch_option.h +0 -41
  589. data/src/switch_manager/switchinfo.h +0 -81
  590. data/src/switch_manager/xid_table.c +0 -182
  591. data/src/switch_manager/xid_table.h +0 -53
  592. data/src/tremashark/README +0 -79
  593. data/src/tremashark/packet_capture.c +0 -358
  594. data/src/tremashark/pcap_private.h +0 -45
  595. data/src/tremashark/pcap_queue.c +0 -195
  596. data/src/tremashark/pcap_queue.h +0 -56
  597. data/src/tremashark/plugin/.gitignore +0 -6
  598. data/src/tremashark/plugin/packet-trema/.gitignore +0 -5
  599. data/src/tremashark/plugin/packet-trema/Makefile +0 -77
  600. data/src/tremashark/plugin/packet-trema/Makefile.am +0 -110
  601. data/src/tremashark/plugin/packet-trema/Makefile.common +0 -29
  602. data/src/tremashark/plugin/packet-trema/moduleinfo.h +0 -39
  603. data/src/tremashark/plugin/packet-trema/packet-trema.c +0 -1671
  604. data/src/tremashark/plugin/packet-trema/plugin.c +0 -31
  605. data/src/tremashark/plugin/user_dlts +0 -2
  606. data/src/tremashark/queue.c +0 -167
  607. data/src/tremashark/queue.h +0 -58
  608. data/src/tremashark/stdin_relay.c +0 -257
  609. data/src/tremashark/syslog_relay.c +0 -247
  610. data/src/tremashark/tremashark.c +0 -554
  611. data/trema +0 -11
  612. data/trema-config +0 -11
  613. data/unittests/buffer_stubs.c +0 -72
  614. data/unittests/cmockery_trema.c +0 -121
  615. data/unittests/cmockery_trema.h +0 -95
  616. data/unittests/lib/buffer_test.c +0 -368
  617. data/unittests/lib/byteorder_test.c +0 -1798
  618. data/unittests/lib/daemon_test.c +0 -804
  619. data/unittests/lib/doubly_linked_list_test.c +0 -348
  620. data/unittests/lib/ether_test.c +0 -125
  621. data/unittests/lib/event_forward_interface_test.c +0 -1676
  622. data/unittests/lib/external_callback_test.c +0 -282
  623. data/unittests/lib/hash_table_test.c +0 -278
  624. data/unittests/lib/linked_list_test.c +0 -434
  625. data/unittests/lib/log_test.c +0 -672
  626. data/unittests/lib/management_interface_test.c +0 -238
  627. data/unittests/lib/management_service_interface_test.c +0 -317
  628. data/unittests/lib/match_table_test.c +0 -1507
  629. data/unittests/lib/message_queue_test.c +0 -381
  630. data/unittests/lib/messenger_test.c +0 -623
  631. data/unittests/lib/openflow_application_interface_test.c +0 -3713
  632. data/unittests/lib/openflow_message_test.c +0 -8047
  633. data/unittests/lib/packet_info_test.c +0 -558
  634. data/unittests/lib/packet_parser_test.c +0 -784
  635. data/unittests/lib/packetin_filter_interface_test.c +0 -721
  636. data/unittests/lib/persistent_storage_test.c +0 -800
  637. data/unittests/lib/stat_test.c +0 -433
  638. data/unittests/lib/test_packets/arp_rep.cap +0 -0
  639. data/unittests/lib/test_packets/arp_req.cap +0 -0
  640. data/unittests/lib/test_packets/icmp6_echo_rep.cap +0 -0
  641. data/unittests/lib/test_packets/icmp6_echo_req.cap +0 -0
  642. data/unittests/lib/test_packets/icmp_echo_rep.cap +0 -0
  643. data/unittests/lib/test_packets/icmp_echo_req.cap +0 -0
  644. data/unittests/lib/test_packets/igmp_query_v2.cap +0 -0
  645. data/unittests/lib/test_packets/ipx.cap +0 -0
  646. data/unittests/lib/test_packets/lldp.cap +0 -0
  647. data/unittests/lib/test_packets/lldp_over_ip.cap +0 -0
  648. data/unittests/lib/test_packets/rarp_req.cap +0 -0
  649. data/unittests/lib/test_packets/tcp.cap +0 -0
  650. data/unittests/lib/test_packets/tcp_syn.cap +0 -0
  651. data/unittests/lib/test_packets/udp.cap +0 -0
  652. data/unittests/lib/test_packets/udp_frag_head.cap +0 -0
  653. data/unittests/lib/test_packets/udp_frag_next.cap +0 -0
  654. data/unittests/lib/test_packets/vtag_icmp_echo_rep.cap +0 -0
  655. data/unittests/lib/test_packets/vtag_icmp_echo_req.cap +0 -0
  656. data/unittests/lib/timer_test.c +0 -246
  657. data/unittests/lib/trema_private_test.c +0 -321
  658. data/unittests/lib/trema_test.c +0 -1030
  659. data/unittests/lib/utility_test.c +0 -711
  660. data/unittests/lib/wrapper_test.c +0 -228
  661. data/unittests/packetin_filter/packetin_filter_test.c +0 -476
  662. data/unittests/switch_manager/switch_manager_test.c +0 -1183
  663. data/unittests/wrapper_stubs.c +0 -37
  664. data/vendor/.gitignore +0 -6
  665. data/vendor/README.md +0 -29
  666. data/vendor/cmockery-20110428.tar.gz +0 -0
  667. data/vendor/oflops-0.03.trema1.tar.gz +0 -0
  668. data/vendor/oflops_no_snmp+1.0.0.diff +0 -340
  669. data/vendor/openflow-1.0.0.tar.gz +0 -0
  670. data/vendor/openflow.git.tar.gz +0 -0
  671. data/vendor/openvswitch-1.2.2.trema1.tar.gz +0 -0
  672. data/vendor/openvswitch-1.2.2_librt-check.diff +0 -21
  673. data/vendor/packet-openflow.diff +0 -13
  674. data/vendor/ruby-ifconfig-1.2/COPYING +0 -340
  675. data/vendor/ruby-ifconfig-1.2/Changelog +0 -16
  676. data/vendor/ruby-ifconfig-1.2/INSTALL +0 -239
  677. data/vendor/ruby-ifconfig-1.2/README +0 -38
  678. data/vendor/ruby-ifconfig-1.2/Rakefile +0 -14
  679. data/vendor/ruby-ifconfig-1.2/TODO +0 -8
  680. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/darwin.txt +0 -17
  681. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd.txt +0 -10
  682. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd_netstat.txt +0 -14
  683. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd.txt +0 -17
  684. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd_netstat.txt +0 -24
  685. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux.txt +0 -60
  686. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux_ethernet.txt +0 -20
  687. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/netbsd.txt +0 -10
  688. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/openbsd.txt +0 -36
  689. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/sunos.txt +0 -10
  690. data/vendor/ruby-ifconfig-1.2/lib/ifconfig.rb +0 -71
  691. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/ifconfig.rb +0 -72
  692. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/interface_types.rb +0 -69
  693. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/network_types.rb +0 -3
  694. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/ifconfig.rb +0 -84
  695. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/interface_types.rb +0 -130
  696. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/network_types.rb +0 -49
  697. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/ifconfig.rb +0 -43
  698. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/interface_types.rb +0 -112
  699. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/network_types.rb +0 -55
  700. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/ifconfig.rb +0 -38
  701. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/interface_types.rb +0 -77
  702. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/network_types.rb +0 -4
  703. data/vendor/ruby-ifconfig-1.2/setup.rb +0 -1306
  704. data/vendor/ruby-ifconfig-1.2/test/test_bsd.rb +0 -35
  705. data/vendor/ruby-ifconfig-1.2/test/test_darwin.rb +0 -33
  706. data/vendor/ruby-ifconfig-1.2/test/test_dragonflybsd.rb +0 -35
  707. data/vendor/ruby-ifconfig-1.2/test/test_helper.rb +0 -4
  708. data/vendor/ruby-ifconfig-1.2/test/test_linux.rb +0 -31
  709. data/vendor/ruby-ifconfig-1.2/test/test_netbsd.rb +0 -33
  710. data/vendor/ruby-ifconfig-1.2/test/test_openbsd.rb +0 -33
  711. data/vendor/ruby-ifconfig-1.2/test/test_sunos.rb +0 -35
  712. data/vendor/ruby-ifconfig-1.2/test/unit/tc_darwin.rb +0 -40
  713. data/vendor/ruby-ifconfig-1.2/test/unit/tc_dragonflybsd.rb +0 -39
  714. data/vendor/ruby-ifconfig-1.2/test/unit/tc_freebsd.rb +0 -40
  715. data/vendor/ruby-ifconfig-1.2/test/unit/tc_linux.rb +0 -49
  716. data/vendor/ruby-ifconfig-1.2/test/unit/tc_netbsd.rb +0 -39
  717. data/vendor/ruby-ifconfig-1.2/test/unit/tc_openbsd.rb +0 -39
  718. data/vendor/ruby-ifconfig-1.2/test/unit/tc_sunos.rb +0 -44
@@ -1,46 +0,0 @@
1
- #
2
- # Copyright (C) 2008-2013 NEC Corporation
3
- #
4
- # This program is free software; you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License, version 2, as
6
- # published by the Free Software Foundation.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
- #
17
-
18
-
19
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
- require 'trema'
21
-
22
-
23
- describe Controller do
24
- context 'when #list_switches_request is sent' do
25
- it 'should receive #list_switches_reply' do
26
- class ListSwitchesController < Controller; end
27
- network do
28
- vswitch { datapath_id 0x1 }
29
- vswitch { datapath_id 0x2 }
30
- vswitch { datapath_id 0x3 }
31
- end.run(ListSwitchesController) do
32
- controller('ListSwitchesController').should_receive(:list_switches_reply) do | dpids |
33
- expect(dpids).to eq([0x1, 0x2, 0x3])
34
- end
35
- controller('ListSwitchesController').send_list_switches_request
36
- end
37
- end
38
- end
39
- end
40
-
41
-
42
- ### Local variables:
43
- ### mode: Ruby
44
- ### coding: utf-8-unix
45
- ### indent-tabs-mode: nil
46
- ### End:
@@ -1,111 +0,0 @@
1
- #
2
- # Copyright (C) 2008-2011 NEC Corporation
3
- #
4
- # This program is free software; you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License, version 2, as
6
- # published by the Free Software Foundation.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
- #
17
-
18
-
19
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
- require 'trema'
21
-
22
-
23
- describe Match, '.new' do
24
- subject do
25
- Match.new(
26
- :in_port => 1,
27
- :dl_src => '00:00:00:00:00:01',
28
- :dl_dst => '00:00:00:00:00:02',
29
- :dl_vlan => 65535,
30
- :dl_vlan_pcp => 0,
31
- :dl_type => 0x800,
32
- :nw_tos => 0,
33
- :nw_proto => 17,
34
- :nw_src => '192.168.0.1',
35
- :nw_dst => '192.168.0.0/24',
36
- :tp_src => 10,
37
- :tp_dst => 20
38
- )
39
- end
40
- its(:in_port) { should == 1 }
41
- its('dl_src.to_s') { should == '00:00:00:00:00:01' }
42
- its('dl_dst.to_s') { should == '00:00:00:00:00:02' }
43
- its(:dl_vlan) { should == 65535 }
44
- its(:dl_vlan_pcp) { should == 0 }
45
- its(:dl_type) { should == 0x800 }
46
- its(:nw_tos) { should == 0 }
47
- its(:nw_proto) { should == 17 }
48
- its('nw_src.to_s') { should == '192.168.0.1' }
49
- its('nw_src.prefixlen') { should == 32 }
50
- its('nw_dst.to_s') { should == '192.168.0.0' }
51
- its('nw_dst.prefixlen') { should == 24 }
52
- its(:tp_src) { should == 10 }
53
- its(:tp_dst) { should == 20 }
54
- its(:to_s) { should == 'wildcards = 0x20000(nw_dst(8)), in_port = 1, dl_src = 00:00:00:00:00:01, dl_dst = 00:00:00:00:00:02, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 17, nw_src = 192.168.0.1/32, nw_dst = 192.168.0.0/24, tp_src = 10, tp_dst = 20' }
55
- end
56
-
57
-
58
- describe Match, '.compare' do
59
- it 'Should match' do
60
- tester = Match.new(
61
- :in_port => 1,
62
- :dl_src => '00:00:00:00:00:01',
63
- :dl_dst => '00:00:00:00:00:02',
64
- :dl_vlan => 65535,
65
- :dl_vlan_pcp => 0,
66
- :dl_type => 0x800,
67
- :nw_tos => 0,
68
- :nw_proto => 17,
69
- :nw_src => '192.168.0.1',
70
- :nw_dst => '192.168.0.2',
71
- :tp_src => 10,
72
- :tp_dst => 20
73
- )
74
- pattern = Match.new(
75
- :in_port => 1,
76
- :nw_src => '192.168.0.0/24',
77
- :nw_dst => '192.168.0.0/24'
78
- )
79
- expect(pattern.compare(tester)).to be_true
80
- end
81
-
82
- it 'Should not match' do
83
- tester = Match.new(
84
- :in_port => 1,
85
- :dl_src => '00:00:00:00:00:01',
86
- :dl_dst => '00:00:00:00:00:02',
87
- :dl_vlan => 65535,
88
- :dl_vlan_pcp => 0,
89
- :dl_type => 0x800,
90
- :nw_tos => 0,
91
- :nw_proto => 17,
92
- :nw_src => '192.168.0.1',
93
- :nw_dst => '192.168.0.2',
94
- :tp_src => 10,
95
- :tp_dst => 20
96
- )
97
- pattern = Match.new(
98
- :in_port => 1,
99
- :nw_src => '10.0.0.0/8',
100
- :nw_dst => '10.0.0.0/8'
101
- )
102
- expect(pattern.compare(tester)).to be_false
103
- end
104
- end
105
-
106
-
107
- ### Local variables:
108
- ### mode: Ruby
109
- ### coding: utf-8-unix
110
- ### indent-tabs-mode: nil
111
- ### End:
@@ -1,121 +0,0 @@
1
- #
2
- # Copyright (C) 2008-2013 NEC Corporation
3
- #
4
- # This program is free software; you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License, version 2, as
6
- # published by the Free Software Foundation.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
- #
17
-
18
-
19
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
- require 'trema/open-vswitch'
21
-
22
-
23
- module Trema
24
- describe OpenflowSwitch do
25
- around do | example |
26
- begin
27
- OpenflowSwitch.clear
28
- example.run
29
- ensure
30
- OpenflowSwitch.clear
31
- end
32
- end
33
-
34
- it 'should keep a list of vswitches' do
35
- OpenVswitch.new mock('stanza 0', :name => 'vswitch 0', :validate => true)
36
- OpenVswitch.new mock('stanza 1', :name => 'vswitch 1', :validate => true)
37
- OpenVswitch.new mock('stanza 2', :name => 'vswitch 2', :validate => true)
38
-
39
- expect(OpenflowSwitch).to have(3).vswitches
40
- expect(OpenflowSwitch[ 'vswitch 0']).not_to be_nil
41
- expect(OpenflowSwitch[ 'vswitch 1']).not_to be_nil
42
- expect(OpenflowSwitch[ 'vswitch 2']).not_to be_nil
43
- end
44
- end
45
-
46
-
47
- describe OpenVswitch, 'dpid = 0xabc' do
48
- subject do
49
- stanza = { :dpid_short => '0xabc', :dpid_long => '0000000000000abc', :ip => '127.0.0.1' }
50
- stanza.stub!(:validate)
51
- stanza.stub!(:name).and_return(name)
52
- OpenVswitch.new stanza
53
- end
54
-
55
-
56
- context 'when its name is not set' do
57
- let(:name) { '0xabc' }
58
-
59
- its(:name) { should == '0xabc' }
60
- its(:dpid_short) { should == '0xabc' }
61
- its(:dpid_long) { should == '0000000000000abc' }
62
- its(:network_device) { should == 'vsw_0xabc' }
63
- end
64
-
65
-
66
- context 'when its name is set' do
67
- let(:name) { 'Otosan Switch' }
68
-
69
- its(:name) { should == 'Otosan Switch' }
70
- its(:dpid_short) { should == '0xabc' }
71
- its(:dpid_long) { should == '0000000000000abc' }
72
- its(:network_device) { should == 'vsw_0xabc' }
73
- end
74
-
75
-
76
- context 'when getting its flows' do
77
- let(:name) { '0xabc' }
78
-
79
- it 'should execute ofctl to get the flows' do
80
- ofctl = mock('ofctl')
81
- Ofctl.stub!(:new).and_return(ofctl)
82
-
83
- ofctl.should_receive(:users_flows).with(subject).once
84
-
85
- subject.flows
86
- end
87
- end
88
-
89
-
90
- context 'when running it' do
91
- let(:name) { '0xabc' }
92
-
93
- it 'should execute ovs openflowd' do
94
- subject.should_receive(:sh).with do | command |
95
- expect(command).to include(Executables.ovs_openflowd)
96
- end
97
-
98
- subject.run!
99
- end
100
-
101
- it 'should be connected to virtual ports' do
102
- subject << 'VirtualInterface0'
103
- subject << 'VirtualInterface1'
104
- subject << 'VirtualInterface2'
105
-
106
- subject.should_receive(:sh).with do | command |
107
- expect(command).to include('--ports=VirtualInterface0,VirtualInterface1,VirtualInterface2')
108
- end
109
-
110
- subject.run!
111
- end
112
- end
113
- end
114
- end
115
-
116
-
117
- ### Local variables:
118
- ### mode: Ruby
119
- ### coding: utf-8-unix
120
- ### indent-tabs-mode: nil
121
- ### End:
@@ -1,141 +0,0 @@
1
- #
2
- # Copyright (C) 2008-2013 NEC Corporation
3
- #
4
- # This program is free software; you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License, version 2, as
6
- # published by the Free Software Foundation.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
- #
17
-
18
-
19
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
- require 'trema'
21
-
22
-
23
- describe Trema::OpenflowError, 'new' do
24
- context 'when #port_mod with an invalid(port_no) is sent' do
25
- it 'should receive #error(type=Error::OFPET_PORT_MOD_FAILED,code=Error::OFPPMFC_BAD_PORT)' do
26
- class OpenflowErrorController < Controller; end
27
- network do
28
- vswitch('error-port') { datapath_id 0xabc }
29
- end.run(OpenflowErrorController) do
30
- port_mod = Trema::PortMod.new(
31
- :port_no => 2,
32
- :hw_addr => Trema::Mac.new('11:22:33:44:55:66'),
33
- :config => 1,
34
- :mask => 1,
35
- :advertise => 0
36
- )
37
- controller('OpenflowErrorController').should_receive(:openflow_error) do | datapath_id, message |
38
- expect(datapath_id).to eq(0xabc)
39
- expect(message.type).to eq(Error::OFPET_PORT_MOD_FAILED)
40
- expect(message.code).to eq(Error::OFPPMFC_BAD_PORT)
41
- end
42
- controller('OpenflowErrorController').send_message(0xabc, port_mod)
43
- sleep 2 # FIXME: wait to send_message
44
- end
45
- end
46
- end
47
-
48
-
49
- context 'when #port_mod with an invalid(hw_addr) is sent' do
50
- it 'should receive #error(type=Error::OFPET_PORT_MOD_FAILED,code=Error::OFPPMFC_BAD_HW_ADDR)' do
51
- class OpenflowErrorController < Controller; end
52
- network do
53
- vswitch('error-hw-addr') { datapath_id 0xabc }
54
- vhost 'host1'
55
- vhost 'host2'
56
- link 'host1', 'error-hw-addr'
57
- link 'host2', 'error-hw-addr'
58
- end.run(OpenflowErrorController) do
59
- port_mod = Trema::PortMod.new(
60
- :port_no => 1,
61
- :hw_addr => Trema::Mac.new('11:22:33:44:55:66'),
62
- :config => 1,
63
- :mask => 1,
64
- :advertise => 0
65
- )
66
- controller('OpenflowErrorController').should_receive(:openflow_error) do | datapath_id, message |
67
- expect(datapath_id).to eq(0xabc)
68
- expect(message.type).to eq(Error::OFPET_PORT_MOD_FAILED)
69
- expect(message.code).to eq(Error::OFPPMFC_BAD_HW_ADDR)
70
- end
71
- controller('OpenflowErrorController').send_message(0xabc, port_mod)
72
- sleep 2 # FIXME: wait to send_message
73
- end
74
- end
75
- end
76
-
77
-
78
- context 'when #flow_mod(add) message with an invalid(action_port) is sent' do
79
- it 'should receive #error(type=Error::OFPET_BAD_ACTION,code=Error::OFPBAC_BAD_OUT_PORT)' do
80
- class OpenflowErrorController < Controller; end
81
- network do
82
- vswitch('error-out-port') { datapath_id 0xabc }
83
- vhost 'host1'
84
- vhost 'host2'
85
- link 'host1', 'error-port'
86
- link 'host2', 'error-port'
87
- end.run(OpenflowErrorController) do
88
- controller('OpenflowErrorController').should_receive(:openflow_error) do | datapath_id, message |
89
- expect(datapath_id).to eq(0xabc)
90
- expect(message.type).to eq(Error::OFPET_BAD_ACTION)
91
- expect(message.code).to eq(Error::OFPBAC_BAD_OUT_PORT)
92
- end
93
- controller('OpenflowErrorController').send_flow_mod_add(0xabc, :actions => ActionOutput.new(:port => 0x5555))
94
- sleep 2 # FIXME: wait to send_flow_mod_add
95
- end
96
- end
97
- end
98
-
99
-
100
- context 'when an unsupported message is sent' do
101
- it 'should receive an openflow error with valid attributes' do
102
- class OpenflowController < Controller; end
103
- network do
104
- vswitch('error-request') { datapath_id 0xabc }
105
- end.run(OpenflowController) do
106
- queue_get_config_request = Trema::QueueGetConfigRequest.new(:port => 1)
107
- controller('OpenflowController').should_receive(:openflow_error) do | datapath_id, message |
108
- expect(message.datapath_id).to eq(0xabc)
109
- expect(message.type).to satisfy { | n |
110
- n >= 0 && n <= 5
111
- }
112
- case message.type
113
- when 0, 4
114
- expect(message.code).to include(0, 1)
115
- when 1, 2
116
- expect(message.code).to satisfy { | n |
117
- n >= 0 && n <= 8
118
- }
119
- when 3
120
- expect(message.code).to satisfy { | n |
121
- n >= 0 && n <= 5
122
- }
123
- when 5
124
- expect(message.code).to satisfy { |n|
125
- n >= 0 && n <= 3
126
- }
127
- end
128
- end
129
- controller('OpenflowController').send_message(0xabc, queue_get_config_request)
130
- sleep 2 # FIXME: wait to send_message
131
- end
132
- end
133
- end
134
- end
135
-
136
-
137
- ### Local variables:
138
- ### mode: Ruby
139
- ### coding: utf-8-unix
140
- ### indent-tabs-mode: nil
141
- ### End:
@@ -1,717 +0,0 @@
1
- # Copyright (C) 2008-2013 NEC Corporation
2
- #
3
- # This program is free software; you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License, version 2, as
5
- # published by the Free Software Foundation.
6
- #
7
- # This program is distributed in the hope that it will be useful,
8
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
- # GNU General Public License for more details.
11
- #
12
- # You should have received a copy of the GNU General Public License along
13
- # with this program; if not, write to the Free Software Foundation, Inc.,
14
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
15
- #
16
-
17
-
18
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
19
- require 'trema'
20
-
21
-
22
- describe Trema::PacketIn do
23
- def send_and_wait
24
- send_packets 'host1', 'host2'
25
- sleep 2
26
- end
27
-
28
-
29
- class PacketInController < Controller; end
30
-
31
- class PacketInSendController < Controller
32
- def packet_in(datapath_id, message)
33
- send_flow_mod_add(
34
- datapath_id,
35
- :match => Match.from(message),
36
- :actions => Trema::ActionOutput.new(:port => 2)
37
- )
38
- send_packet_out(
39
- datapath_id,
40
- :packet_in => message,
41
- :actions => Trema::ActionOutput.new(:port => 2)
42
- )
43
- end
44
- end
45
-
46
- context 'when instance is created' do
47
- it 'should have valid datapath_id and in_port' do
48
- network do
49
- vswitch('test') { datapath_id 0xabc }
50
- vhost 'host1'
51
- vhost 'host2'
52
- link 'test', 'host1'
53
- link 'test', 'host2'
54
- end.run(PacketInController) do
55
- controller('PacketInController').should_receive(:packet_in) do | datapath_id, message |
56
- expect(datapath_id).to eq(0xabc)
57
- expect(message.datapath_id).to eq(0xabc)
58
- expect(message.in_port).to be > 0
59
- end
60
- send_and_wait
61
- end
62
- end
63
-
64
-
65
- it 'should have vaild user data' do
66
- network do
67
- vswitch('test') { datapath_id 0xabc }
68
- vhost('host1') do
69
- mac '00:00:00:00:00:01'
70
- ip '192.168.1.1'
71
- end
72
- vhost('host2') do
73
- mac '00:00:00:00:00:02'
74
- ip '192.168.1.2'
75
- end
76
- link 'test', 'host1'
77
- link 'test', 'host2'
78
- end.run(PacketInController) do
79
- controller('PacketInController').should_receive(:packet_in) do | datapath_id, message |
80
- # packet_in expected to have data portion.
81
- expect(message.total_len).to be > 20
82
- expect(message.data).to be_instance_of(String)
83
- expect(message.buffered?).to be_false
84
-
85
- expect(message.macsa).to be_instance_of(Pio::Mac)
86
- expect(message.macsa.to_s).to eq('00:00:00:00:00:01')
87
- expect(message.macda).to be_instance_of(Pio::Mac)
88
- expect(message.macda.to_s).to eq('00:00:00:00:00:02')
89
-
90
- expect(message.eth_type).to eq(0x0800)
91
- expect(message.ipv4?).to be_true
92
- expect(message.ipv4_version).to eq(4)
93
- expect(message.ipv4_saddr).to be_instance_of(Pio::IPv4Address)
94
- expect(message.ipv4_saddr.to_s).to eq('192.168.1.1')
95
- expect(message.ipv4_daddr).to be_instance_of(Pio::IPv4Address)
96
- expect(message.ipv4_daddr.to_s).to eq('192.168.1.2')
97
- end
98
- send_and_wait
99
- end
100
- end
101
- end
102
-
103
- context 'when reading packet content' do
104
- it 'should have correct ARP packet fields' do
105
- network do
106
- vswitch('packet-in') { datapath_id 0xabc }
107
- vhost 'host1'
108
- vhost ( 'host2') { mac '00:00:00:00:00:02' }
109
- link 'host1', 'packet-in'
110
- link 'host2', 'packet-in'
111
- end.run(PacketInSendController) do
112
- data = [
113
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # dst
114
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
115
- 0x08, 0x06, # ether type
116
- # arp
117
- 0x00, 0x01, # hardware type
118
- 0x08, 0x00, # protocol type
119
- 0x06, # hardware address length
120
- 0x04, # protocol address length
121
- 0x00, 0x02, # operation
122
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # sender hardware address
123
- 0xc0, 0xa8, 0x00, 0x01, # sender protocol address
124
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # target hardware address
125
- 0xc0, 0xa8, 0x00, 0x02, # target protocol address
126
- # padding to 64 bytes
127
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
128
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
129
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
130
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
131
- 0x00, 0x00
132
- ].pack('C*')
133
- controller('PacketInSendController').should_receive(:packet_in) do | datapath_id, message |
134
- expect(message.in_port).to be > 0
135
- expect(message.vtag?).to be_false
136
- expect(message.arp?).to be_true
137
- expect(message.rarp?).to be_false
138
- expect(message.ipv4?).to be_false
139
- expect(message.lldp?).to be_false
140
- expect(message.tcp?).to be_false
141
- expect(message.udp?).to be_false
142
- expect(message.icmpv4?).to be_false
143
- expect(message.igmp?).to be_false
144
-
145
- expect(message.arp_oper).to eq(2)
146
- expect(message.arp_sha.to_s).to eq('00:00:00:00:00:01')
147
- expect(message.arp_spa.to_s).to eq('192.168.0.1')
148
- expect(message.arp_tha.to_s).to eq('00:00:00:00:00:02')
149
- expect(message.arp_tpa.to_s).to eq('192.168.0.2')
150
- expect(message.arp_request?).to be_false
151
- expect(message.arp_reply?).to be_true
152
-
153
- expect(message.rarp_oper).to be_nil
154
- expect(message.rarp_sha).to be_nil
155
- expect(message.rarp_spa).to be_nil
156
- expect(message.rarp_tha).to be_nil
157
- expect(message.rarp_tpa).to be_nil
158
- expect(message.rarp_request?).to be_false
159
- expect(message.rarp_reply?).to be_false
160
-
161
- expect(message.vlan_tpid).to be_nil
162
- expect(message.vlan_tci).to be_nil
163
- expect(message.vlan_prio).to be_nil
164
- expect(message.vlan_cfi).to be_nil
165
- expect(message.vlan_vid).to be_nil
166
-
167
- expect(message.ipv4_version).to be_nil
168
- expect(message.ipv4_ihl).to be_nil
169
- expect(message.ipv4_tos).to be_nil
170
- expect(message.ipv4_tot_len).to be_nil
171
- expect(message.ipv4_id).to be_nil
172
- expect(message.ipv4_frag_off).to be_nil
173
- expect(message.ipv4_ttl).to be_nil
174
- expect(message.ipv4_protocol).to be_nil
175
- expect(message.ipv4_checksum).to be_nil
176
- expect(message.ipv4_saddr).to be_nil
177
- expect(message.ipv4_daddr).to be_nil
178
-
179
- expect(message.icmpv4_type).to be_nil
180
- expect(message.icmpv4_code).to be_nil
181
- expect(message.icmpv4_checksum).to be_nil
182
- expect(message.icmpv4_id).to be_nil
183
- expect(message.icmpv4_seq).to be_nil
184
- expect(message.icmpv4_gateway).to be_nil
185
-
186
- expect(message.igmp_type).to be_nil
187
- expect(message.igmp_checksum).to be_nil
188
- expect(message.igmp_group).to be_nil
189
-
190
- expect(message.tcp_src_port).to be_nil
191
- expect(message.tcp_dst_port).to be_nil
192
- expect(message.tcp_seq_no).to be_nil
193
- expect(message.tcp_ack_no).to be_nil
194
- expect(message.tcp_offset).to be_nil
195
- expect(message.tcp_flags).to be_nil
196
- expect(message.tcp_window).to be_nil
197
- expect(message.tcp_checksum).to be_nil
198
- expect(message.tcp_urgent).to be_nil
199
-
200
- expect(message.udp_src_port).to be_nil
201
- expect(message.udp_dst_port).to be_nil
202
- expect(message.udp_checksum).to be_nil
203
- expect(message.udp_len).to be_nil
204
- end
205
-
206
- controller('PacketInSendController').send_packet_out(
207
- 0xabc,
208
- :data => data,
209
- :actions => Trema::ActionOutput.new(:port => Controller::OFPP_CONTROLLER)
210
- )
211
- sleep 2
212
- end
213
- end
214
-
215
- it 'should have correct RARP packet fields' do
216
- network do
217
- vswitch('packet-in') { datapath_id 0xabc }
218
- vhost 'host1'
219
- vhost ( 'host2') { mac '00:00:00:00:00:02' }
220
- link 'host1', 'packet-in'
221
- link 'host2', 'packet-in'
222
- end.run(PacketInSendController) do
223
- data = [
224
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, # dst
225
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
226
- 0x80, 0x35, # ether type
227
- # rarp
228
- 0x00, 0x01, # hardware type
229
- 0x08, 0x00, # protocol type
230
- 0x06, # hardware address length
231
- 0x04, # protocol address length
232
- 0x00, 0x03, # operation
233
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # sender hardware address
234
- 0xc0, 0xa8, 0x00, 0x01, # sender protocol address
235
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # target hardware address
236
- 0x00, 0x00, 0x00, 0x00, # target protocol address
237
- # padding to 64 bytes
238
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
242
- 0x00, 0x00
243
- ].pack('C*')
244
- controller('PacketInSendController').should_receive(:packet_in) do | datapath_id, message |
245
- expect(message.in_port).to be > 0
246
- expect(message.vtag?).to be_false
247
- expect(message.arp?).to be_false
248
- expect(message.rarp?).to be_true
249
- expect(message.ipv4?).to be_false
250
- expect(message.lldp?).to be_false
251
- expect(message.tcp?).to be_false
252
- expect(message.udp?).to be_false
253
- expect(message.icmpv4?).to be_false
254
- expect(message.igmp?).to be_false
255
-
256
- expect(message.arp_oper).to be_nil
257
- expect(message.arp_sha).to be_nil
258
- expect(message.arp_spa).to be_nil
259
- expect(message.arp_tha).to be_nil
260
- expect(message.arp_tpa).to be_nil
261
- expect(message.arp_request?).to be_false
262
- expect(message.arp_reply?).to be_false
263
-
264
- expect(message.rarp_oper).to eq(3)
265
- expect(message.rarp_sha.to_s).to eq('00:00:00:00:00:01')
266
- expect(message.rarp_spa.to_s).to eq('192.168.0.1')
267
- expect(message.rarp_tha.to_s).to eq('00:00:00:00:00:02')
268
- expect(message.rarp_tpa.to_s).to eq('0.0.0.0')
269
- expect(message.rarp_request?).to be_true
270
- expect(message.rarp_reply?).to be_false
271
-
272
- expect(message.vlan_tpid).to be_nil
273
- expect(message.vlan_tci).to be_nil
274
- expect(message.vlan_prio).to be_nil
275
- expect(message.vlan_cfi).to be_nil
276
- expect(message.vlan_vid).to be_nil
277
-
278
- expect(message.ipv4_version).to be_nil
279
- expect(message.ipv4_ihl).to be_nil
280
- expect(message.ipv4_tos).to be_nil
281
- expect(message.ipv4_tot_len).to be_nil
282
- expect(message.ipv4_id).to be_nil
283
- expect(message.ipv4_frag_off).to be_nil
284
- expect(message.ipv4_ttl).to be_nil
285
- expect(message.ipv4_protocol).to be_nil
286
- expect(message.ipv4_checksum).to be_nil
287
- expect(message.ipv4_saddr).to be_nil
288
- expect(message.ipv4_daddr).to be_nil
289
-
290
- expect(message.icmpv4_type).to be_nil
291
- expect(message.icmpv4_code).to be_nil
292
- expect(message.icmpv4_checksum).to be_nil
293
- expect(message.icmpv4_id).to be_nil
294
- expect(message.icmpv4_seq).to be_nil
295
- expect(message.icmpv4_gateway).to be_nil
296
-
297
- expect(message.igmp_type).to be_nil
298
- expect(message.igmp_checksum).to be_nil
299
- expect(message.igmp_group).to be_nil
300
-
301
- expect(message.tcp_src_port).to be_nil
302
- expect(message.tcp_dst_port).to be_nil
303
- expect(message.tcp_seq_no).to be_nil
304
- expect(message.tcp_ack_no).to be_nil
305
- expect(message.tcp_offset).to be_nil
306
- expect(message.tcp_flags).to be_nil
307
- expect(message.tcp_window).to be_nil
308
- expect(message.tcp_checksum).to be_nil
309
- expect(message.tcp_urgent).to be_nil
310
-
311
- expect(message.udp_src_port).to be_nil
312
- expect(message.udp_dst_port).to be_nil
313
- expect(message.udp_checksum).to be_nil
314
- expect(message.udp_len).to be_nil
315
- end
316
-
317
- controller('PacketInSendController').send_packet_out(
318
- 0xabc,
319
- :data => data,
320
- :actions => Trema::ActionOutput.new(:port => Controller::OFPP_CONTROLLER)
321
- )
322
- sleep 2
323
- end
324
- end
325
-
326
- it 'should have correct TCP packet fields' do
327
- network do
328
- vswitch('packet-in') { datapath_id 0xabc }
329
- vhost 'host1'
330
- vhost ( 'host2') do
331
- ip '192.168.0.2'
332
- netmask '255.255.0.0'
333
- mac '00:00:00:00:00:02'
334
- end
335
- link 'host1', 'packet-in'
336
- link 'host2', 'packet-in'
337
- end.run(PacketInSendController) do
338
- data = [
339
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # dst
340
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
341
- 0x08, 0x00, # ether type
342
- # ipv4
343
- 0x45, 0x00, # version
344
- 0x00, 0x28, # length
345
- 0x00, 0x00,
346
- 0x00, 0x00,
347
- 0x00, # ttl
348
- 0x06, # protocol
349
- 0x39, 0x7d, # checksum
350
- 0xc0, 0xa8, 0x00, 0x01, # src
351
- 0xc0, 0xa8, 0x00, 0x02, # dst
352
- # tcp
353
- 0x00, 0x01, # src port
354
- 0x00, 0x02, # dst port
355
- 0x00, 0x00, 0x00, 0x00, # sequence number
356
- 0x00, 0x00, 0x00, 0x00, # acknowledgement number
357
- 0x50, # data offset,
358
- 0x00, # flags
359
- 0x00, 0x00, # window size
360
- 0x2e, 0x86, # checksum
361
- 0x00, 0x00, # urgent pointer
362
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
363
- ].pack('C*')
364
- controller('PacketInSendController').should_receive(:packet_in) do | datapath_id, message |
365
- expect(message.in_port).to be > 0
366
- expect(message.vtag?).to be_false
367
- expect(message.arp?).to be_false
368
- expect(message.rarp?).to be_false
369
- expect(message.ipv4?).to be_true
370
- expect(message.lldp?).to be_false
371
- expect(message.udp?).to be_false
372
- expect(message.tcp?).to be_true
373
- expect(message.icmpv4?).to be_false
374
- expect(message.igmp?).to be_false
375
-
376
- expect(message.ipv4_version).to eq(4)
377
- expect(message.ipv4_ihl).to eq(5)
378
- expect(message.ipv4_tos).to eq(0)
379
- expect(message.ipv4_tot_len).to eq(0x28)
380
- expect(message.ipv4_id).to eq(0)
381
- expect(message.ipv4_frag_off).to eq(0)
382
- expect(message.ipv4_ttl).to eq(0)
383
- expect(message.ipv4_protocol).to eq(6)
384
- expect(message.ipv4_checksum).to eq(0x397d)
385
- expect(message.ipv4_saddr.to_s).to eq('192.168.0.1')
386
- expect(message.ipv4_daddr.to_s).to eq('192.168.0.2')
387
-
388
- expect(message.tcp_src_port).to eq(1)
389
- expect(message.tcp_dst_port).to eq(2)
390
- expect(message.tcp_seq_no).to eq(0)
391
- expect(message.tcp_ack_no).to eq(0)
392
- expect(message.tcp_offset).to eq(5)
393
- expect(message.tcp_flags).to eq(0)
394
- expect(message.tcp_window).to eq(0)
395
- expect(message.tcp_checksum).to eq(11910) # 0x2e86
396
- expect(message.tcp_urgent).to eq(0)
397
-
398
- expect(message.arp_oper).to be_nil
399
- expect(message.arp_sha).to be_nil
400
- expect(message.arp_spa).to be_nil
401
- expect(message.arp_tha).to be_nil
402
- expect(message.arp_tpa).to be_nil
403
-
404
- expect(message.rarp_oper).to be_nil
405
- expect(message.rarp_sha).to be_nil
406
- expect(message.rarp_spa).to be_nil
407
- expect(message.rarp_tha).to be_nil
408
- expect(message.rarp_tpa).to be_nil
409
- end
410
-
411
- controller('PacketInSendController').send_packet_out(
412
- 0xabc,
413
- :data => data,
414
- :actions => Trema::ActionOutput.new(:port => Controller::OFPP_CONTROLLER)
415
- )
416
- sleep 2
417
- end
418
- end
419
-
420
- it 'should have correct UDP packet fields' do
421
- network do
422
- vswitch('packet-in') { datapath_id 0xabc }
423
- vhost 'host1'
424
- vhost ( 'host2') do
425
- ip '192.168.0.2'
426
- netmask '255.255.0.0'
427
- mac '00:00:00:00:00:02'
428
- end
429
- link 'host1', 'packet-in'
430
- link 'host2', 'packet-in'
431
- end.run(PacketInSendController) do
432
- data = [
433
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # dst
434
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
435
- 0x08, 0x00, # ether type
436
- # ipv4
437
- 0x45, 0x00, # version
438
- 0x00, 0x32, # length
439
- 0x00, 0x00,
440
- 0x00, 0x00,
441
- 0x40, # ttl
442
- 0x11, # protocol
443
- 0xf9, 0x68, # checksum
444
- 0xc0, 0xa8, 0x00, 0x01, # src
445
- 0xc0, 0xa8, 0x00, 0x02, # dst
446
- # udp
447
- 0x00, 0x01, # src port
448
- 0x00, 0x02, # dst port
449
- 0x00, 0x1e, # length
450
- 0x00, 0x00, # checksum
451
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
452
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
453
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
454
- ].pack('C*')
455
- controller('PacketInSendController').should_receive(:packet_in) do | datapath_id, message |
456
- expect(message.in_port).to be > 0
457
- expect(message.vtag?).to be_false
458
- expect(message.arp?).to be_false
459
- expect(message.rarp?).to be_false
460
- expect(message.ipv4?).to be_true
461
- expect(message.lldp?).to be_false
462
- expect(message.tcp?).to be_false
463
- expect(message.udp?).to be_true
464
- expect(message.icmpv4?).to be_false
465
- expect(message.igmp?).to be_false
466
-
467
-
468
- expect(message.ipv4_version).to eq(4)
469
- expect(message.ipv4_ihl).to eq(5)
470
- expect(message.ipv4_tos).to eq(0)
471
- expect(message.ipv4_tot_len).to eq(0x32)
472
- expect(message.ipv4_id).to eq(0)
473
- expect(message.ipv4_frag_off).to eq(0)
474
- expect(message.ipv4_ttl).to eq(0x40)
475
- expect(message.ipv4_protocol).to eq(17)
476
- expect(message.ipv4_checksum).to eq(0xf968)
477
- expect(message.ipv4_saddr.to_s).to eq('192.168.0.1')
478
- expect(message.ipv4_daddr.to_s).to eq('192.168.0.2')
479
-
480
- expect(message.udp_src_port).to eq(1)
481
- expect(message.udp_dst_port).to eq(2)
482
- expect(message.udp_checksum).to eq(0)
483
- expect(message.udp_len).to eq(0x1e)
484
- end
485
-
486
- controller('PacketInSendController').send_packet_out(
487
- 0xabc,
488
- :data => data,
489
- :actions => Trema::ActionOutput.new(:port => Controller::OFPP_CONTROLLER)
490
- )
491
- sleep 2
492
- end
493
- end
494
-
495
- it 'should have correct VLAN and ICMPv4 packet fields' do
496
- network do
497
- vswitch('packet-in') { datapath_id 0xabc }
498
- vhost 'host1'
499
- vhost ( 'host2') do
500
- ip '192.168.32.1'
501
- netmask '255.255.255.0'
502
- mac '00:00:00:00:00:02'
503
- end
504
- link 'host1', 'packet-in'
505
- link 'host2', 'packet-in'
506
- end.run(PacketInSendController) do
507
- data = [
508
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # dst
509
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
510
- # vlan tag
511
-
512
-
513
- 0x81, 0x00, # tpid
514
- 0x0f, 0x9f, # tci
515
- 0x08, 0x00, # ether type
516
- # ipv4
517
- 0x45, 0x00, # version
518
- 0x00, 0x3c, # length
519
- 0x8c, 0x1b,
520
- 0x00, 0x00,
521
- 0x80, # ttl
522
- 0x01, # protocol
523
- 0xed, 0x09, # checksum
524
- 0xc0, 0xa8, 0x20, 0x4a, # src
525
- 0xc0, 0xa8, 0x20, 0x01, # dst
526
- # icmp
527
- 0x08, # type
528
- 0x00, # code
529
- 0xe9, 0x5b, # checksum
530
- 0x04, 0x00, # id
531
- 0x60, 0x00, # seq
532
- 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
533
- 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
534
- 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x61,
535
- 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69
536
- ].pack('C*')
537
- controller('PacketInSendController').should_receive(:packet_in) do | datapath_id, message |
538
- expect(message.in_port).to be > 0
539
- expect(message.vtag?).to be_true
540
- expect(message.arp?).to be_false
541
- expect(message.rarp?).to be_false
542
- expect(message.ipv4?).to be_true
543
- expect(message.lldp?).to be_false
544
- expect(message.udp?).to be_false
545
- expect(message.tcp?).to be_false
546
- expect(message.icmpv4?).to be_true
547
- expect(message.igmp?).to be_false
548
-
549
- expect(message.vlan_tpid).to eq(0x8100)
550
- expect(message.vlan_tci).to eq(0x0f9f)
551
- expect(message.vlan_prio).to eq(0)
552
- expect(message.vlan_cfi).to eq(0)
553
- expect(message.vlan_vid).to eq(0xf9f)
554
- expect(message.eth_type).to eq(0x0800)
555
-
556
- expect(message.ipv4_version).to eq(4)
557
- expect(message.ipv4_ihl).to eq(5)
558
- expect(message.ipv4_tos).to eq(0)
559
- expect(message.ipv4_tot_len).to eq(0x003c)
560
- expect(message.ipv4_id).to eq(0x8c1b)
561
- expect(message.ipv4_frag_off).to eq(0)
562
- expect(message.ipv4_ttl).to eq(0x80)
563
- expect(message.ipv4_protocol).to eq(1)
564
- expect(message.ipv4_checksum).to eq(0xed09)
565
- expect(message.ipv4_saddr.to_s).to eq('192.168.32.74')
566
- expect(message.ipv4_daddr.to_s).to eq('192.168.32.1')
567
-
568
- expect(message.icmpv4_type).to eq(8)
569
- expect(message.icmpv4_code).to eq(0)
570
- expect(message.icmpv4_checksum).to eq(0xe95b)
571
- expect(message.icmpv4_id).to eq(0x0400)
572
- expect(message.icmpv4_seq).to eq(0x6000)
573
-
574
- expect(message.icmpv4_echo_reply?).to be_false
575
- expect(message.icmpv4_dst_unreach?).to be_false
576
- expect(message.icmpv4_redirect?).to be_false
577
- expect(message.icmpv4_echo_request?).to be_true
578
- end
579
-
580
- controller('PacketInSendController').send_packet_out(
581
- 0xabc,
582
- :data => data,
583
- :actions => Trema::ActionOutput.new(:port => Controller::OFPP_CONTROLLER)
584
- )
585
- sleep 2
586
- end
587
- end
588
-
589
- it 'should have correct IGMP packet fields' do
590
- network do
591
- vswitch('packet-in') { datapath_id 0xabc }
592
- vhost 'host1'
593
- vhost 'host2'
594
- link 'host1', 'packet-in'
595
- link 'host2', 'packet-in'
596
- end.run(PacketInSendController) do
597
- data = [
598
- 0x01, 0x00, 0x5e, 0x00, 0x00, 0x01, # dst
599
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, # src
600
- 0x08, 0x00, # ether type
601
- # ipv4
602
- 0x46, 0xc0, # version
603
- 0x00, 0x20, # length
604
- 0x3a, 0xea,
605
- 0x00, 0x00,
606
- 0x01, # ttl
607
- 0x02, # protocol
608
- 0xe4, 0x58, # checksum
609
- 0xc0, 0xa8, 0x64, 0x2b, # src
610
- 0xe0, 0x00, 0x00, 0x01, # dst
611
- 0x94, 0x04, 0x00, 0x00,
612
- # igmp
613
- 0x11, # type
614
- 0x64, # code
615
- 0xee, 0x9b, # checksum
616
- 0x00, 0x00, 0x00, 0x00,
617
- 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
618
- 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
619
- 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x61,
620
- 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69
621
- ].pack('C*')
622
- controller('PacketInSendController').should_receive(:packet_in) do | datapath_id, message |
623
- expect(message.in_port).to be > 0
624
- expect(message.vtag?).to be_false
625
- expect(message.arp?).to be_false
626
- expect(message.rarp?).to be_false
627
- expect(message.ipv4?).to be_true
628
- expect(message.lldp?).to be_false
629
- expect(message.udp?).to be_false
630
- expect(message.tcp?).to be_false
631
- expect(message.icmpv4?).to be_false
632
- expect(message.igmp?).to be_true
633
-
634
- expect(message.igmp_membership_query?).to be_true
635
- expect(message.igmp_v1_membership_report?).to be_false
636
- expect(message.igmp_v2_membership_report?).to be_false
637
- expect(message.igmp_v2_leave_group?).to be_false
638
- expect(message.igmp_v3_membership_report?).to be_false
639
-
640
- expect(message.ipv4_version).to eq(4)
641
- expect(message.ipv4_ihl).to eq(6)
642
- expect(message.ipv4_tos).to eq(0xc0)
643
- expect(message.ipv4_tot_len).to eq(0x0020)
644
- expect(message.ipv4_id).to eq(0x3aea)
645
- expect(message.ipv4_frag_off).to eq(0)
646
- expect(message.ipv4_ttl).to eq(1)
647
- expect(message.ipv4_protocol).to eq(2)
648
- expect(message.ipv4_checksum).to eq(0xe458)
649
- expect(message.ipv4_saddr.to_s).to eq('192.168.100.43')
650
- expect(message.ipv4_daddr.to_s).to eq('224.0.0.1')
651
-
652
- expect(message.igmp_type).to eq(0x11)
653
- expect(message.igmp_checksum).to eq(0xee9b)
654
- end
655
-
656
- controller('PacketInSendController').send_packet_out(
657
- 0xabc,
658
- :data => data,
659
- :actions => Trema::ActionOutput.new(:port => Controller::OFPP_CONTROLLER)
660
- )
661
- sleep 2
662
- end
663
- end
664
-
665
- it 'should have correct LLDP packet fields' do
666
- network do
667
- vswitch('packet-in') { datapath_id 0xabc }
668
- vhost 'host1'
669
- vhost 'host2'
670
- link 'host1', 'packet-in'
671
- link 'host2', 'packet-in'
672
- end.run(PacketInSendController) do
673
- data = [
674
- 0x01, 0x80, 0xC2, 0x00, 0x00, 0x0E, # dst
675
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, # src
676
- 0x88, 0xcc, # ether type
677
- 0x02, 0x05, 0x07, 0x30, 0x78, 0x65, 0x31, # Chasis ID
678
- 0x04, 0x02, 0x07, 0x31, # Port ID
679
- 0x06, 0x02, 0x00, 0xb4, # TTL
680
- 0x00, 0x00, # EOF
681
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
682
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
683
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
684
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
685
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
686
- 0xa5, 0xa5, 0xa5, 0xa5, 0xa5
687
- ].pack('C*')
688
- controller('PacketInSendController').should_receive(:packet_in) do | datapath_id, message |
689
- expect(message.in_port).to be > 0
690
- expect(message.vtag?).to be_false
691
- expect(message.arp?).to be_false
692
- expect(message.rarp?).to be_false
693
- expect(message.ipv4?).to be_false
694
- expect(message.lldp?).to be_true
695
- expect(message.udp?).to be_false
696
- expect(message.tcp?).to be_false
697
- expect(message.icmpv4?).to be_false
698
- expect(message.igmp?).to be_false
699
- end
700
-
701
- controller('PacketInSendController').send_packet_out(
702
- 0xabc,
703
- :data => data,
704
- :actions => Trema::ActionOutput.new(:port => Controller::OFPP_CONTROLLER)
705
- )
706
- sleep 2
707
- end
708
- end
709
- end
710
- end
711
-
712
-
713
- ### Local variables:
714
- ### mode: Ruby
715
- ### coding: utf-8-unix
716
- ### indent-tabs-mode: nil
717
- ### End: