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,50 +0,0 @@
1
- /*
2
- * OpenFlow Switch Manager
3
- *
4
- * Copyright (C) 2008-2013 NEC Corporation
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License, version 2, as
8
- * published by the Free Software Foundation.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License along
16
- * with this program; if not, write to the Free Software Foundation, Inc.,
17
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- */
19
-
20
-
21
- #ifndef SWITCH_MANAGER_H
22
- #define SWITCH_MANAGER_H
23
-
24
-
25
- #include "switchinfo.h"
26
- #include "trema.h"
27
-
28
-
29
- #define MESSENGER_SERVICE_TYPE_STATE 1
30
- #define MESSENGER_SERVICE_TYPE_SUBSCRIBE 2
31
- #define MESSENGER_SERVICE_TYPE_NOTIFY 3
32
-
33
- #define SWITCH_STATE_TIMEOUT_HELLO 5 // in seconds
34
- #define SWITCH_STATE_TIMEOUT_FEATURES_REPLY 5 // in seconds
35
-
36
- #define SWITCH_MANAGER_PREFIX "switch."
37
- #define SWITCH_MANAGER_PREFIX_STR_LEN sizeof( SWITCH_MANAGER_PREFIX )
38
- #define SWITCH_MANAGER_DPID_STR_LEN sizeof( "1234567812345678" )
39
-
40
- int switch_event_connected( struct switch_info *switch_info );
41
- int switch_event_disconnected( struct switch_info *switch_info );
42
- int switch_event_recv_hello( struct switch_info *switch_info );
43
- int switch_event_recv_echoreply( struct switch_info *switch_info, buffer *buf );
44
- int switch_event_recv_featuresreply( struct switch_info *switch_info, uint64_t *datapath_id );
45
- int switch_event_recv_from_application( uint64_t *datapath_id, char *application_service_name, buffer *buf );
46
- int switch_event_disconnect_request( uint64_t *datapath_id );
47
- int switch_event_recv_error( struct switch_info *sw_info );
48
-
49
-
50
- #endif // SWITCH_MANAGER_H
@@ -1,643 +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
- #include <errno.h>
20
- #include <getopt.h>
21
- #include <inttypes.h>
22
- #include <limits.h>
23
- #include <openflow.h>
24
- #include <signal.h>
25
- #include <stdio.h>
26
- #include <stdlib.h>
27
- #include <string.h>
28
- #include <sys/wait.h>
29
- #include <unistd.h>
30
- #include <assert.h>
31
- #include "trema.h"
32
- #include "secure_channel_listener.h"
33
- #include "switch_manager.h"
34
- #include "dpid_table.h"
35
- #include "switch_option.h"
36
- #include "event_forward_entry_manipulation.h"
37
-
38
-
39
- #define DEFAULT_TCP_PORT 6653
40
-
41
-
42
- #ifdef UNIT_TESTING
43
- #define static
44
-
45
- #define main switch_manager_main
46
-
47
- #ifdef printf
48
- #undef printf
49
- #endif
50
- #define printf( fmt, args... ) mock_printf2( fmt, ##args )
51
- int mock_printf2( const char *format, ... );
52
-
53
- #ifdef die
54
- #undef die
55
- #endif
56
- #define die( fmt, ... ) \
57
- do { \
58
- } \
59
- while ( 0 )
60
-
61
- #ifdef exit
62
- #undef exit
63
- #endif
64
- #define exit mock_exit
65
- void mock_exit( int status );
66
-
67
- #ifdef wait3
68
- #undef wait3
69
- #endif
70
- #define wait3 mock_wait3
71
- pid_t mock_wait3( int *status, int options, struct rusage *rusage );
72
-
73
- #ifdef secure_channel_accept
74
- #undef secure_channel_accept
75
- #endif
76
- #define secure_channel_accept mock_secure_channel_accept
77
- void mock_secure_channel_accept( struct listener_info *listener_info );
78
-
79
- #ifdef access
80
- #undef access
81
- #endif
82
- #define access mock_access
83
- int mock_access( const char *pathname, int mode );
84
-
85
- #ifdef get_current_dir_name
86
- #undef get_current_dir_name
87
- #endif
88
- #define get_current_dir_name mock_get_current_dir_name
89
- char *mock_get_current_dir_name( void );
90
-
91
- #ifdef init_trema
92
- #undef init_trema
93
- #endif
94
- #define init_trema mock_init_trema
95
- void mock_init_trema( int *argc, char ***argv );
96
-
97
- #ifdef set_fd_set_callback
98
- #undef set_fd_set_callback
99
- #endif
100
- #define set_fd_set_callback mock_set_fd_set_callback
101
- void mock_set_fd_set_callback( void ( *callback )( fd_set *read_set, fd_set *write_set ) );
102
-
103
- #ifdef set_check_fd_isset_callback
104
- #undef set_check_fd_isset_callback
105
- #endif
106
- #define set_check_fd_isset_callback mock_set_check_fd_isset_callback
107
- void mock_set_check_fd_isset_callback( void ( *callback )( fd_set *read_set, fd_set *write_set ) );
108
-
109
- #ifdef secure_channel_accept
110
- #undef secure_channel_accept
111
- #endif
112
- #define secure_channel_accept mock_secure_channel_accept
113
- void mock_secure_channel_accept( struct listener_info *listener_info );
114
-
115
- #ifdef secure_channel_listen_start
116
- #undef secure_channel_listen_start
117
- #endif
118
- #define secure_channel_listen_start mock_secure_channel_listen_start
119
- bool mock_secure_channel_listen_start( struct listener_info *listener_info );
120
-
121
- #ifdef get_trema_home
122
- #undef get_trema_home
123
- #endif
124
- #define get_trema_home mock_get_trema_home
125
- char *mock_get_trema_home( void );
126
-
127
- #ifdef start_trema
128
- #undef start_trema
129
- #endif
130
- #define start_trema mock_start_trema
131
- void mock_start_trema( void );
132
-
133
- #ifdef get_executable_name
134
- #undef get_executable_name
135
- #endif
136
- #define get_executable_name mock_get_executable_name
137
- const char *mock_get_executable_name( void );
138
-
139
- #ifdef push_external_callback
140
- #undef push_external_callback
141
- #endif
142
- #define push_external_callback mock_push_external_callback
143
- void mock_push_external_callback( void ( *callback )( void ) );
144
-
145
- #endif // UNIT_TESTING
146
-
147
-
148
- struct listener_info listener_info;
149
-
150
-
151
- static struct option long_options[] = {
152
- { "port", 1, NULL, 'p' },
153
- { "switch", 1, NULL, 's' },
154
- { NULL, 0, NULL, 0 },
155
- };
156
-
157
- static char short_options[] = "p:s:";
158
-
159
-
160
- void
161
- usage() {
162
- printf(
163
- "OpenFlow Switch Manager.\n"
164
- "Usage: %s [OPTION]... [-- SWITCH_DAEMON_OPTION]...\n"
165
- "\n"
166
- " -s, --switch=PATH the command path of switch\n"
167
- " -n, --name=SERVICE_NAME service name\n"
168
- " -p, --port=PORT server listen port (default %u)\n"
169
- " -d, --daemonize run in the background\n"
170
- " -l, --logging_level=LEVEL set logging level\n"
171
- " -g, --syslog output log messages to syslog\n"
172
- " -f, --logging_facility=FACILITY set syslog facility\n"
173
- " -h, --help display this help and exit\n"
174
- , get_executable_name(), DEFAULT_TCP_PORT
175
- );
176
- }
177
-
178
-
179
- static void
180
- wait_child( void ) {
181
- int status;
182
- pid_t pid;
183
-
184
- while ( 1 ) {
185
- pid = wait3( &status, WNOHANG, NULL );
186
- if ( pid <= 0 ) {
187
- break;
188
- }
189
- if ( WIFEXITED( status ) ) {
190
- debug( "Child process is exited. pid:%d, status:%d", pid, WEXITSTATUS( status ) );
191
- }
192
- else if ( WIFSIGNALED( status ) ) {
193
- if ( WCOREDUMP( status ) ) {
194
- debug( "Child process dumped core. pid:%d, signal:%d", pid, WTERMSIG( status ) );
195
- }
196
- else {
197
- debug( "Child process is terminated. pid:%d, signal:%d", pid, WTERMSIG( status ) );
198
- }
199
- }
200
- }
201
- }
202
-
203
-
204
- static void
205
- handle_sigchld( int signum ) {
206
- UNUSED( signum );
207
-
208
- // because wait_child() is not signal safe, we call it later.
209
- if ( push_external_callback != NULL ) {
210
- push_external_callback( wait_child );
211
- }
212
- }
213
-
214
-
215
- static char *
216
- xconcatenate_path( const char *dir, const char *file ) {
217
- size_t len;
218
- const char *sp = "/";
219
- char *p;
220
-
221
- len = strlen( dir ) + strlen( file ) + 2;
222
- if ( dir[ strlen( dir ) - 1 ] == '/' ) {
223
- sp = "";
224
- }
225
- p = xmalloc( len );
226
- snprintf( p, len, "%s%s%s", dir, sp, file );
227
-
228
- return p;
229
- }
230
-
231
-
232
- static char *
233
- absolute_path( const char *dir, const char *file ) {
234
- char *p;
235
- int ret;
236
-
237
- if ( *file == '/' ) {
238
- p = xstrdup( file );
239
- }
240
- else {
241
- p = xconcatenate_path( dir, file );
242
- }
243
-
244
- // x bit check
245
- ret = access( p, X_OK );
246
- if ( ret != 0 ) {
247
- die( "%s: %s", p, strerror( errno ) );
248
- xfree( p );
249
- return NULL;
250
- }
251
-
252
- return p;
253
- }
254
-
255
-
256
- static void
257
- init_listener_info( struct listener_info *listener_info ) {
258
- memset( listener_info, 0, sizeof( struct listener_info ) );
259
- listener_info->switch_daemon = xconcatenate_path( get_trema_home(), SWITCH_MANAGER_PATH );
260
- listener_info->listen_port = DEFAULT_TCP_PORT;
261
- listener_info->listen_fd = -1;
262
- create_list( &listener_info->vendor_service_name_list );
263
- create_list( &listener_info->packetin_service_name_list );
264
- create_list( &listener_info->portstatus_service_name_list );
265
- create_list( &listener_info->state_service_name_list );
266
- }
267
-
268
-
269
- static void
270
- finalize_listener_info( struct listener_info *listener_info ) {
271
- if ( listener_info->switch_daemon != NULL ) {
272
- xfree( ( void * ) ( uintptr_t ) listener_info->switch_daemon );
273
- listener_info->switch_daemon = NULL;
274
- }
275
- if ( listener_info->listen_fd >= 0 ) {
276
- set_readable( listener_info->listen_fd, false );
277
- delete_fd_handler( listener_info->listen_fd );
278
-
279
- close( listener_info->listen_fd );
280
- listener_info->listen_fd = -1;
281
- }
282
- for ( int i = 0; i < listener_info->switch_daemon_argc; ++i ) {
283
- xfree( listener_info->switch_daemon_argv[ i ] );
284
- listener_info->switch_daemon_argv[ i ] = NULL;
285
- }
286
- xfree( listener_info->switch_daemon_argv );
287
- listener_info->switch_daemon_argv = NULL;
288
-
289
- iterate_list( listener_info->vendor_service_name_list, xfree_data, NULL );
290
- delete_list( listener_info->vendor_service_name_list );
291
- listener_info->vendor_service_name_list = NULL;
292
- iterate_list( listener_info->packetin_service_name_list, xfree_data, NULL );
293
- delete_list( listener_info->packetin_service_name_list );
294
- listener_info->packetin_service_name_list = NULL;
295
- iterate_list( listener_info->portstatus_service_name_list, xfree_data, NULL );
296
- delete_list( listener_info->portstatus_service_name_list );
297
- listener_info->portstatus_service_name_list = NULL;
298
- iterate_list( listener_info->state_service_name_list, xfree_data, NULL );
299
- delete_list( listener_info->state_service_name_list );
300
- listener_info->state_service_name_list = NULL;
301
- }
302
-
303
-
304
- static uint16_t
305
- strtoport( const char *str ) {
306
- char *ep;
307
- long l;
308
-
309
- l = strtol( str, &ep, 0 );
310
- if ( l <= 0 || l > USHRT_MAX || *ep != '\0' ) {
311
- die( "Invalid port. %s", str );
312
- return 0;
313
- }
314
- return ( uint16_t ) l;
315
- }
316
-
317
-
318
- static bool
319
- parse_argument( struct listener_info *listener_info, int argc, char *argv[] ) {
320
- int c;
321
-
322
- while ( ( c = getopt_long( argc, argv, short_options, long_options, NULL ) ) != -1 ) {
323
- switch ( c ) {
324
- case 'p':
325
- listener_info->listen_port = strtoport( optarg );
326
- if ( listener_info->listen_port == 0 ) {
327
- return false;
328
- }
329
- break;
330
- case 's':
331
- xfree( ( void * ) ( uintptr_t ) listener_info->switch_daemon );
332
- listener_info->switch_daemon = xstrdup( optarg );
333
- break;
334
- default:
335
- usage();
336
- exit( EXIT_SUCCESS );
337
- return false;
338
- break;
339
- }
340
- }
341
-
342
- debug( "Start parsing switch daemon arguments." );
343
- // index of first switch daemon arguments in argv
344
- const int switch_arg_begin = optind;
345
-
346
- // reorder switch daemon arguments
347
- opterr = 0; // disable error messages of trema common options
348
- while ( getopt_long( argc, argv, switch_short_options, switch_long_options, NULL ) != -1 );
349
-
350
- // index of first packet_in::..., etc. in argv
351
- const int switch_arg_option_begin = optind;
352
-
353
- // deep copy switch daemon arguments excluding packet_in::..., etc.
354
- listener_info->switch_daemon_argc = switch_arg_option_begin - switch_arg_begin;
355
- listener_info->switch_daemon_argv = xcalloc( ( size_t ) listener_info->switch_daemon_argc + 1,
356
- sizeof( char * ) );
357
- for ( int i = 0; i < listener_info->switch_daemon_argc; ++i ) {
358
- debug( "switch daemon option: %s\n", argv[switch_arg_begin + i] );
359
- listener_info->switch_daemon_argv[ i ] = xstrdup( argv[ switch_arg_begin + i ] );
360
- }
361
-
362
- // set service lists for each event type
363
- for ( int i = switch_arg_option_begin; i < argc; i++ ) {
364
- if ( strncmp( argv[ i ], VENDOR_PREFIX, strlen( VENDOR_PREFIX ) ) == 0 ) {
365
- char *service_name = xstrdup( argv[ i ] + strlen( VENDOR_PREFIX ) );
366
- debug( "event: " VENDOR_PREFIX "%s", service_name );
367
- insert_in_front( &listener_info->vendor_service_name_list, service_name );
368
- }
369
- else if ( strncmp( argv[ i ], PACKET_IN_PREFIX, strlen( PACKET_IN_PREFIX ) ) == 0 ) {
370
- char *service_name = xstrdup( argv[ i ] + strlen( PACKET_IN_PREFIX ) );
371
- debug( "event: " PACKET_IN_PREFIX "%s", service_name );
372
- insert_in_front( &listener_info->packetin_service_name_list, service_name );
373
- }
374
- else if ( strncmp( argv[ i ], PORTSTATUS_PREFIX, strlen( PORTSTATUS_PREFIX ) ) == 0 ) {
375
- char *service_name = xstrdup( argv[ i ] + strlen( PORTSTATUS_PREFIX ) );
376
- debug( "event: " PORTSTATUS_PREFIX "%s", service_name );
377
- insert_in_front( &listener_info->portstatus_service_name_list, service_name );
378
- }
379
- else if ( strncmp( argv[ i ], STATE_PREFIX, strlen( STATE_PREFIX ) ) == 0 ) {
380
- char *service_name = xstrdup( argv[ i ] + strlen( STATE_PREFIX ) );
381
- debug( "event: " STATE_PREFIX "%s", service_name );
382
- insert_in_front( &listener_info->state_service_name_list, service_name );
383
- }
384
- }
385
-
386
- return true;
387
- }
388
-
389
-
390
- static void
391
- catch_sigchild( void ) {
392
- struct sigaction sigchld_handler;
393
-
394
- memset( &sigchld_handler, 0, sizeof( struct sigaction ) );
395
- sigchld_handler.sa_handler = ( void * ) handle_sigchld;
396
- sigchld_handler.sa_flags = SA_RESTART;
397
- sigaction( SIGCHLD, &sigchld_handler, NULL );
398
- }
399
-
400
-
401
- static void
402
- handle_switch_ready( uint64_t datapath_id, void *user_data ) {
403
- UNUSED( user_data );
404
-
405
- debug( "Switch (dpid = %#" PRIx64 ") is connected.", datapath_id );
406
- insert_dpid_entry( &datapath_id );
407
- }
408
-
409
-
410
- static void
411
- handle_switch_disconnected( uint64_t datapath_id, void *user_data ) {
412
- UNUSED( user_data );
413
-
414
- debug( "Switch (dpid = %#" PRIx64 ") is disconnected.", datapath_id );
415
- delete_dpid_entry( &datapath_id );
416
- }
417
-
418
-
419
- static void
420
- recv_request( const messenger_context_handle *handle,
421
- uint16_t tag, void *data, size_t len ) {
422
- UNUSED( tag );
423
- UNUSED( data );
424
- UNUSED( len );
425
-
426
- buffer *reply = get_switches();
427
- send_reply_message( handle, 0, reply->data, reply->length );
428
- free_buffer( reply );
429
- }
430
-
431
-
432
- static void
433
- management_event_forward_entry_operation( const messenger_context_handle *handle, uint32_t command, event_forward_operation_request *req, size_t data_len ) {
434
-
435
- debug( "management efi command:%#x, type:%#x, n_services:%d", command, req->type, req->n_services );
436
-
437
- list_element **subject = NULL;
438
- switch ( req->type ) {
439
- case EVENT_FORWARD_TYPE_VENDOR:
440
- info( "Managing vendor event." );
441
- subject = &listener_info.vendor_service_name_list;
442
- break;
443
-
444
- case EVENT_FORWARD_TYPE_PACKET_IN:
445
- info( "Managing packet_in event." );
446
- subject = &listener_info.packetin_service_name_list;
447
- break;
448
-
449
- case EVENT_FORWARD_TYPE_PORT_STATUS:
450
- info( "Managing port_status event." );
451
- subject = &listener_info.portstatus_service_name_list;
452
- break;
453
-
454
- case EVENT_FORWARD_TYPE_STATE_NOTIFY:
455
- info( "Managing state_notify event." );
456
- subject = &listener_info.state_service_name_list;
457
- break;
458
-
459
- default:
460
- error( "Invalid EVENT_FWD_TYPE ( %#x )", req->type );
461
- event_forward_operation_reply res;
462
- memset( &res, 0, sizeof( event_forward_operation_reply ) );
463
- res.type = req->type;
464
- res.result = EFI_OPERATION_FAILED;
465
- management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_FAILED, command, &res, sizeof( event_forward_operation_reply ) );
466
- send_management_application_reply( handle, reply );
467
- xfree( reply );
468
- return;
469
- }
470
- assert( subject != NULL );
471
-
472
- switch ( command ) {
473
- case EVENT_FORWARD_ENTRY_ADD:
474
- management_event_forward_entry_add( subject, req, data_len );
475
- break;
476
-
477
- case EVENT_FORWARD_ENTRY_DELETE:
478
- management_event_forward_entry_delete( subject, req, data_len );
479
- break;
480
-
481
- case EVENT_FORWARD_ENTRY_DUMP:
482
- info( "Dumping current event filter." );
483
- // do nothing
484
- break;
485
-
486
- case EVENT_FORWARD_ENTRY_SET:
487
- management_event_forward_entries_set( subject, req, data_len );
488
- break;
489
- }
490
-
491
- buffer *buf = create_event_forward_operation_reply( req->type, EFI_OPERATION_SUCCEEDED, *subject );
492
- management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_SUCCEEDED, command, buf->data, buf->length );
493
- free_buffer( buf );
494
- send_management_application_reply( handle, reply );
495
- xfree( reply );
496
- }
497
-
498
-
499
- static void
500
- management_recv( const messenger_context_handle *handle, uint32_t command, void *data, size_t data_len, void *user_data ) {
501
- UNUSED( user_data );
502
-
503
- switch ( command ) {
504
- case EVENT_FORWARD_ENTRY_ADD:
505
- case EVENT_FORWARD_ENTRY_DELETE:
506
- case EVENT_FORWARD_ENTRY_DUMP:
507
- case EVENT_FORWARD_ENTRY_SET:
508
- {
509
- event_forward_operation_request *req = data;
510
- req->n_services = ntohl( req->n_services );
511
- management_event_forward_entry_operation( handle, command, req, data_len );
512
- return;
513
- }
514
- break;
515
-
516
- case EFI_GET_SWLIST:
517
- {
518
- buffer *buf = get_switches();
519
- management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_SUCCEEDED, command, buf->data, buf->length );
520
- free_buffer( buf );
521
- send_management_application_reply( handle, reply );
522
- xfree( reply );
523
- }
524
- break;
525
-
526
- default:
527
- {
528
- error( "Undefined management command ( %#x )", command );
529
- management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_FAILED, command, NULL, 0 );
530
- send_management_application_reply( handle, reply );
531
- xfree( reply );
532
- return;
533
- }
534
- }
535
- }
536
-
537
-
538
- static bool
539
- start_service_management( void ) {
540
- return add_message_requested_callback( get_trema_name(), recv_request );
541
- }
542
-
543
-
544
- static void
545
- stop_service_management( void ) {
546
- }
547
-
548
-
549
- static bool
550
- start_switch_management( void ) {
551
- init_openflow_application_interface( get_trema_name() );
552
- set_switch_ready_handler( handle_switch_ready, NULL );
553
- set_switch_disconnected_handler( handle_switch_disconnected, NULL );
554
-
555
- return true;
556
- }
557
-
558
-
559
- static void
560
- stop_switch_management( void ) {
561
- if ( listener_info.listen_fd > -1 ) {
562
- set_readable( listener_info.listen_fd, false );
563
- delete_fd_handler( listener_info.listen_fd );
564
- listener_info.listen_fd = -1;
565
- }
566
- stop_trema();
567
- }
568
-
569
-
570
- static void
571
- handle_sigterm( int signum ) {
572
- UNUSED( signum );
573
-
574
- push_external_callback( stop_switch_management );
575
- }
576
-
577
-
578
- int
579
- main( int argc, char *argv[] ) {
580
- bool ret;
581
- const char *switch_daemon = NULL;
582
- char *startup_dir;
583
-
584
- // get startup directory using absolute_path()
585
- startup_dir = get_current_dir_name();
586
- if ( startup_dir == NULL ) {
587
- die( "Failed to get_current_dir_name." );
588
- }
589
-
590
- init_trema( &argc, &argv ); // changes the current working directory
591
-
592
- init_listener_info( &listener_info );
593
- ret = parse_argument( &listener_info, argc, argv );
594
- if ( !ret ) {
595
- finalize_listener_info( &listener_info );
596
- exit( EXIT_FAILURE );
597
- }
598
- set_management_application_request_handler( management_recv, NULL );
599
-
600
- init_dpid_table();
601
- start_service_management();
602
- start_switch_management();
603
-
604
- switch_daemon = listener_info.switch_daemon;
605
- listener_info.switch_daemon = absolute_path( startup_dir, switch_daemon );
606
- xfree( ( void * ) ( uintptr_t ) switch_daemon );
607
- // free returned buffer of get_current_dir_name()
608
- free( startup_dir );
609
-
610
- struct sigaction signal_exit;
611
- memset( &signal_exit, 0, sizeof( struct sigaction ) );
612
- signal_exit.sa_handler = handle_sigterm;
613
- sigaction( SIGINT, &signal_exit, NULL );
614
- sigaction( SIGTERM, &signal_exit, NULL );
615
-
616
- catch_sigchild();
617
-
618
- // listener start (listen socket binding and listen)
619
- ret = secure_channel_listen_start( &listener_info );
620
- if ( !ret ) {
621
- finalize_listener_info( &listener_info );
622
- exit( EXIT_FAILURE );
623
- }
624
-
625
- set_fd_handler( listener_info.listen_fd, secure_channel_accept, &listener_info, NULL, NULL );
626
- set_readable( listener_info.listen_fd, true );
627
-
628
- start_trema();
629
-
630
- finalize_listener_info( &listener_info );
631
- stop_service_management();
632
- finalize_dpid_table();
633
-
634
- return 0;
635
- }
636
-
637
-
638
- /*
639
- * Local variables:
640
- * c-basic-offset: 2
641
- * indent-tabs-mode: nil
642
- * End:
643
- */