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,184 +0,0 @@
1
- #! /usr/bin/env bash
2
- #
3
- # Copyright (C) 2013 NEC Corporation
4
- #
5
- # This program is free software; you can redistribute it and/or modify
6
- # it under the terms of the GNU General Public License, version 2, as
7
- # published by the Free Software Foundation.
8
- #
9
- # This program is distributed in the hope that it will be useful,
10
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- # GNU General Public License for more details.
13
- #
14
- # You should have received a copy of the GNU General Public License along
15
- # with this program; if not, write to the Free Software Foundation, Inc.,
16
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
- #
18
-
19
- EXECUTABLES_DIR="$TREMA_HOME/objects/management"
20
- ECHO="$EXECUTABLES_DIR/echo"
21
- SET_LOGGING_LEVEL="$EXECUTABLES_DIR/set_logging_level"
22
- SHOW_STATS="$EXECUTABLES_DIR/show_stats"
23
- APPLICATION="$EXECUTABLES_DIR/application"
24
- SOCK_DIR="$TREMA_HOME/tmp/sock"
25
- BASENAME="/usr/bin/basename"
26
- SED="/bin/sed"
27
- SCRIPT_NAME=`$BASENAME $0`
28
-
29
-
30
- list_services() {
31
- shopt -s nullglob
32
- for file in $SOCK_DIR/*.m.sock
33
- do echo `$BASENAME $file .m.sock | $SED 's/^trema\.//'`
34
- done
35
- }
36
-
37
-
38
- ping() {
39
- local service_name="$1"
40
-
41
- if [ -z "$service_name" ]; then
42
- echo "Service name must be specified."
43
- print_ping_usage
44
- exit 1
45
- fi
46
-
47
- $ECHO $service_name
48
- }
49
-
50
-
51
- set_logging_level() {
52
- local service_name="$1"
53
- local logging_level="$2"
54
-
55
- if [ -z "$service_name" ]; then
56
- echo "Service name must be specified."
57
- print_set_logging_level_usage
58
- exit 1
59
- fi
60
- if [ -z "$logging_level" ]; then
61
- echo "Logging level must be specified."
62
- print_set_logging_level_usage
63
- exit 1
64
- fi
65
-
66
- $SET_LOGGING_LEVEL $service_name $logging_level
67
- }
68
-
69
-
70
- show_stats() {
71
- local service_name="$1"
72
-
73
- if [ -z "$service_name" ]; then
74
- echo "Service name must be specified."
75
- print_show_stats_usage
76
- exit 1
77
- fi
78
-
79
- $SHOW_STATS $service_name
80
- }
81
-
82
-
83
- application() {
84
- local service_name="$1"
85
- local application_id="$2"
86
- local data="$3"
87
-
88
- if [ -z "$service_name" ]; then
89
- echo "Service name must be specified."
90
- print_application_usage
91
- exit 1
92
- fi
93
- if [ -z "$application_id" ]; then
94
- echo "Application specific identifier must be specified."
95
- print_application_usage
96
- exit 1
97
- fi
98
-
99
- $APPLICATION $service_name $application_id $data
100
- }
101
-
102
-
103
- check_variables() {
104
- if [ -z "$TREMA_HOME" ]; then
105
- echo "TREMA_HOME environment variable must be set."
106
- exit 1
107
- fi
108
-
109
- if [ ! -d "$TREMA_HOME" ]; then
110
- echo "$TREMA_HOME does not exist."
111
- exit 1
112
- fi
113
-
114
- if [ ! -d "$SOCK_DIR" ]; then
115
- echo "$SOCK_DIR does not exist."
116
- exit 1
117
- fi
118
-
119
- if [ ! -d "$EXECUTABLES_DIR" ]; then
120
- echo "$EXECUTABLES_DIR does not exist."
121
- exit 1
122
- fi
123
- }
124
-
125
-
126
- print_list_services_usage() {
127
- echo "Usage: $SCRIPT_NAME services"
128
- }
129
-
130
-
131
- print_usage() {
132
- echo "Usage: $SCRIPT_NAME {services|ping|set_logging_level|show_stats|application} [OPTIONS...]"
133
- }
134
-
135
-
136
- print_ping_usage() {
137
- echo "Usage: $SCRIPT_NAME ping SERVICE_NAME"
138
- }
139
-
140
-
141
- print_set_logging_level_usage() {
142
- echo "Usage: $SCRIPT_NAME set_logging_level SERVICE_NAME LOGGING_LEVEL"
143
- }
144
-
145
-
146
- print_show_stats_usage() {
147
- echo "Usage: $SCRIPT_NAME show_stats SERVICE_NAME"
148
- }
149
-
150
-
151
- print_application_usage() {
152
- echo "Usage: $SCRIPT_NAME application SERVICE_NAME APPLICATION_ID DATA_IN_HEX"
153
- }
154
-
155
-
156
- check_variables
157
-
158
- case "$1" in
159
- services)
160
- list_services
161
- ;;
162
-
163
- ping)
164
- ping $2
165
- ;;
166
-
167
- set_logging_level)
168
- set_logging_level $2 $3
169
- ;;
170
-
171
- show_stats)
172
- show_stats $2
173
- ;;
174
-
175
- application)
176
- application $2 $3 $4
177
- ;;
178
-
179
- *)
180
- print_usage
181
- exit 1
182
- esac
183
-
184
- exit 0
@@ -1,17 +0,0 @@
1
- This directory includes packet-in filter component.
2
-
3
- packet out
4
- .---------------------------------------.
5
- v |
6
- +----------+ +-----------+ +-------+
7
- | switch | * 1 | packet in | 1 * | trema |
8
- | daemon | --------> | filter | --------> | apps |
9
- +----------+ packet in +-----------+ packet in +-------+
10
- ^ 1
11
- |
12
- |
13
- v 1
14
- +----------+
15
- | openflow |
16
- | switch |
17
- +----------+
@@ -1,575 +0,0 @@
1
- /*
2
- * OpenFlow Packet_in message filter
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
- #include <arpa/inet.h>
22
- #include <assert.h>
23
- #include <getopt.h>
24
- #include <inttypes.h>
25
- #include <stdio.h>
26
- #include <string.h>
27
- #include <unistd.h>
28
- #include "trema.h"
29
-
30
-
31
- #ifdef UNIT_TESTING
32
-
33
- #define static
34
- #define main packetin_filter_main
35
-
36
- #ifdef printf
37
- #undef printf
38
- #endif
39
- #define printf( fmt, args... ) mock_printf2( fmt, ##args )
40
- int mock_printf2( const char *format, ... );
41
-
42
- #ifdef error
43
- #undef error
44
- #endif
45
- #define error( fmt, args... ) mock_error( fmt, ##args )
46
- void mock_error( const char *format, ... );
47
-
48
- #ifdef set_match_from_packet
49
- #undef set_match_from_packet
50
- #endif
51
- #define set_match_from_packet mock_set_match_from_packet
52
- void mock_set_match_from_packet( struct ofp_match *match, const uint16_t in_port,
53
- const uint32_t wildcards, const buffer *packet );
54
-
55
- #ifdef create_packet_in
56
- #undef create_packet_in
57
- #endif
58
- #define create_packet_in mock_create_packet_in
59
- buffer *mock_create_packet_in( const uint32_t transaction_id, const uint32_t buffer_id,
60
- const uint16_t total_len, uint16_t in_port,
61
- const uint8_t reason, const buffer *data );
62
-
63
- #ifdef insert_match_entry
64
- #undef insert_match_entry
65
- #endif
66
- #define insert_match_entry mock_insert_match_entry
67
- void mock_insert_match_entry( struct ofp_match *ofp_match, uint16_t priority,
68
- const char *service_name );
69
-
70
- #ifdef lookup_match_entry
71
- #undef lookup_match_entry
72
- #endif
73
- #define lookup_match_entry mock_lookup_match_entry
74
- match_entry *mock_lookup_match_entry( struct ofp_match *match );
75
-
76
- #ifdef send_message
77
- #undef send_message
78
- #endif
79
- #define send_message mock_send_message
80
- bool mock_send_message( const char *service_name, const uint16_t tag, const void *data,
81
- size_t len );
82
-
83
- #ifdef init_trema
84
- #undef init_trema
85
- #endif
86
- #define init_trema mock_init_trema
87
- void mock_init_trema( int *argc, char ***argv );
88
-
89
- #ifdef set_packet_in_handler
90
- #undef set_packet_in_handler
91
- #endif
92
- #define set_packet_in_handler mock_set_packet_in_handler
93
- bool mock_set_packet_in_handler( packet_in_handler callback, void *user_data );
94
-
95
- #ifdef start_trema
96
- #undef start_trema
97
- #endif
98
- #define start_trema mock_start_trema
99
- void mock_start_trema( void );
100
-
101
- #ifdef get_executable_name
102
- #undef get_executable_name
103
- #endif
104
- #define get_executable_name mock_get_executable_name
105
- const char *mock_get_executable_name( void );
106
-
107
- #endif // UNIT_TESTING
108
-
109
-
110
- void
111
- usage() {
112
- printf(
113
- "OpenFlow Packet in Filter.\n"
114
- "Usage: %s [OPTION]... [PACKETIN-FILTER-RULE]...\n"
115
- "\n"
116
- " -n, --name=SERVICE_NAME service name\n"
117
- " -d, --daemonize run in the background\n"
118
- " -l, --logging_level=LEVEL set logging level\n"
119
- " -g, --syslog output log messages to syslog\n"
120
- " -f, --logging_facility=FACILITY set syslog facility\n"
121
- " -h, --help display this help and exit\n"
122
- "\n"
123
- "PACKETIN-FILTER-RULE:\n"
124
- " match-type::destination-service-name\n"
125
- "\n"
126
- "match-type:\n"
127
- " lldp LLDP ethernet frame type and priority is 0x8000\n"
128
- " packet_in any packet and priority is zero\n"
129
- "\n"
130
- "destination-service-name destination service name\n"
131
- , get_executable_name()
132
- );
133
- }
134
-
135
-
136
- static buffer *
137
- parse_etherip( const buffer *data ) {
138
- packet_info *packet_info = data->user_data;
139
- if ( packet_info->etherip_version != ETHERIP_VERSION ) {
140
- error( "invalid etherip version 0x%04x.", packet_info->etherip_version );
141
- return NULL;
142
- }
143
- if ( packet_info->etherip_offset == 0 ) {
144
- debug( "too short etherip message" );
145
- return NULL;
146
- }
147
-
148
- buffer *copy = duplicate_buffer( data );
149
- if ( copy == NULL ) {
150
- error( "duplicate_buffer failed." );
151
- return NULL;
152
- }
153
- copy->user_data = NULL;
154
- remove_front_buffer( copy, packet_info->etherip_offset );
155
-
156
- if ( !parse_packet( copy ) ) {
157
- error( "parse_packet failed." );
158
- free_buffer( copy );
159
- return NULL;
160
- }
161
-
162
- debug( "Receive EtherIP packet." );
163
-
164
- return copy;
165
- }
166
-
167
-
168
- static void
169
- handle_packet_in( uint64_t datapath_id, uint32_t transaction_id,
170
- uint32_t buffer_id, uint16_t total_len,
171
- uint16_t in_port, uint8_t reason, const buffer *data,
172
- void *user_data ) {
173
- UNUSED( user_data );
174
-
175
- char match_str[ 1024 ];
176
- struct ofp_match ofp_match; // host order
177
-
178
- buffer *copy = NULL;
179
- packet_info *packet_info = data->user_data;
180
- debug( "Receive packet. ethertype=0x%04x, ipproto=0x%x", packet_info->eth_type, packet_info->ipv4_protocol );
181
- if ( packet_type_ipv4_etherip( data ) ) {
182
- copy = parse_etherip( data );
183
- }
184
- set_match_from_packet( &ofp_match, in_port, 0, copy != NULL ? copy : data );
185
- if ( copy != NULL ) {
186
- free_buffer( copy );
187
- copy = NULL;
188
- }
189
- match_to_string( &ofp_match, match_str, sizeof( match_str ) );
190
-
191
- list_element *services = lookup_match_entry( ofp_match );
192
- if ( services == NULL ) {
193
- debug( "match entry not found" );
194
- return;
195
- }
196
-
197
- buffer *buf = create_packet_in( transaction_id, buffer_id, total_len, in_port,
198
- reason, data );
199
-
200
- openflow_service_header_t *message;
201
- message = append_front_buffer( buf, sizeof( openflow_service_header_t ) );
202
- message->datapath_id = htonll( datapath_id );
203
- message->service_name_length = htons( 0 );
204
- list_element *element;
205
- for ( element = services; element != NULL; element = element->next ) {
206
- const char *service_name = element->data;
207
- if ( !send_message( service_name, MESSENGER_OPENFLOW_MESSAGE,
208
- buf->data, buf->length ) ) {
209
- error( "Failed to send a message to %s ( match = %s ).", service_name, match_str );
210
- free_buffer( buf );
211
- return;
212
- }
213
-
214
- debug( "Sending a message to %s ( match = %s ).", service_name, match_str );
215
- }
216
-
217
- free_buffer( buf );
218
- }
219
-
220
-
221
- static void
222
- init_packetin_match_table( void ) {
223
- init_match_table();
224
- }
225
-
226
-
227
- static void
228
- free_user_data_entry( struct ofp_match match, uint16_t priority, void *services, void *user_data ) {
229
- UNUSED( match );
230
- UNUSED( priority );
231
- UNUSED( user_data );
232
-
233
- list_element *element;
234
- for ( element = services; element != NULL; element = element->next ) {
235
- xfree( element->data );
236
- element->data = NULL;
237
- }
238
- delete_list( services );
239
- }
240
-
241
-
242
- static void
243
- finalize_packetin_match_table( void ) {
244
- foreach_match_table( free_user_data_entry, NULL );
245
- finalize_match_table();
246
- }
247
-
248
-
249
- static bool
250
- add_packetin_match_entry( struct ofp_match match, uint16_t priority, const char *service_name ) {
251
- bool ( *insert_or_update_match_entry )( struct ofp_match, uint16_t, void * ) = update_match_entry;
252
- list_element *services = lookup_match_strict_entry( match, priority );
253
- if ( services == NULL ) {
254
- insert_or_update_match_entry = insert_match_entry;
255
- create_list( &services );
256
- }
257
- else {
258
- list_element *element;
259
- for ( element = services; element != NULL; element = element->next ) {
260
- if ( strcmp( element->data, service_name ) == 0 ) {
261
- char match_string[ 256 ];
262
- match_to_string( &match, match_string, sizeof( match_string ) );
263
- warn( "match entry already exists ( match = [%s], service_name = [%s] )", match_string, service_name );
264
- return false;
265
- }
266
- }
267
- }
268
- append_to_tail( &services, xstrdup( service_name ) );
269
- insert_or_update_match_entry( match, priority, services );
270
-
271
- return true;
272
- }
273
-
274
-
275
- static int
276
- delete_packetin_match_entry( struct ofp_match match, uint16_t priority, const char *service_name ) {
277
- list_element *head = delete_match_strict_entry( match, priority );
278
- if ( head == NULL ) {
279
- return 0;
280
- }
281
-
282
- int n_deleted = 0;
283
- int n_remaining_services = 0;
284
- list_element *services = head;
285
- while ( services != NULL ) {
286
- char *service = services->data;
287
- services = services->next;
288
- if ( strcmp( service, service_name ) == 0 ) {
289
- delete_element( &head, service );
290
- xfree( service );
291
- n_deleted++;
292
- }
293
- else {
294
- n_remaining_services++;
295
- }
296
- }
297
-
298
- if ( n_remaining_services == 0 ) {
299
- if ( head != NULL ) {
300
- delete_list( head );
301
- }
302
- }
303
- else {
304
- insert_match_entry( match, priority, head );
305
- }
306
-
307
- return n_deleted;
308
- }
309
-
310
-
311
- static void
312
- register_dl_type_filter( uint16_t dl_type, uint16_t priority, const char *service_name ) {
313
- struct ofp_match match;
314
- memset( &match, 0, sizeof( struct ofp_match ) );
315
- match.wildcards = OFPFW_ALL & ~OFPFW_DL_TYPE;
316
- match.dl_type = dl_type;
317
-
318
- add_packetin_match_entry( match, priority, service_name );
319
- }
320
-
321
-
322
- static void
323
- register_any_filter( uint16_t priority, const char *service_name ) {
324
- struct ofp_match match;
325
- memset( &match, 0, sizeof( struct ofp_match ) );
326
- match.wildcards = OFPFW_ALL;
327
-
328
- add_packetin_match_entry( match, priority, service_name );
329
- }
330
-
331
-
332
- static const char *
333
- match_type( const char *type, char *name ) {
334
- size_t len = strlen( type );
335
- if ( strncmp( name, type, len ) != 0 ) {
336
- return NULL;
337
- }
338
-
339
- return name + len;
340
- }
341
-
342
-
343
- // built-in packetin-filter-rule
344
- static const char LLDP_PACKET_IN[] = "lldp::";
345
- static const char ANY_PACKET_IN[] = "packet_in::";
346
-
347
- static bool
348
- set_match_type( int argc, char *argv[] ) {
349
- int i;
350
- const char *service_name;
351
- for ( i = 1; i < argc; i++ ) {
352
- if ( ( service_name = match_type( LLDP_PACKET_IN, argv[ i ] ) ) != NULL ) {
353
- register_dl_type_filter( ETH_ETHTYPE_LLDP, OFP_DEFAULT_PRIORITY, service_name );
354
- }
355
- else if ( ( service_name = match_type( ANY_PACKET_IN, argv[ i ] ) ) != NULL ) {
356
- register_any_filter( 0, service_name );
357
- }
358
- else {
359
- return false;
360
- }
361
- }
362
-
363
- return true;
364
- }
365
-
366
-
367
- static void
368
- handle_add_filter_request( const messenger_context_handle *handle, add_packetin_filter_request *request ) {
369
- assert( handle != NULL );
370
- assert( request != NULL );
371
-
372
- request->entry.service_name[ MESSENGER_SERVICE_NAME_LENGTH - 1 ] = '\0';
373
- if ( strlen( request->entry.service_name ) == 0 ) {
374
- error( "Service name must be specified." );
375
- return;
376
- }
377
- struct ofp_match match;
378
- ntoh_match( &match, &request->entry.match );
379
- bool ret = add_packetin_match_entry( match, ntohs( request->entry.priority ), request->entry.service_name );
380
-
381
- add_packetin_filter_reply reply;
382
- memset( &reply, 0, sizeof( add_packetin_filter_reply ) );
383
- reply.status = ( uint8_t ) ( ret ? PACKETIN_FILTER_OPERATION_SUCCEEDED : PACKETIN_FILTER_OPERATION_FAILED );
384
- ret = send_reply_message( handle, MESSENGER_ADD_PACKETIN_FILTER_REPLY,
385
- &reply, sizeof( add_packetin_filter_reply ) );
386
- if ( ret == false ) {
387
- error( "Failed to send an add filter reply." );
388
- }
389
- }
390
-
391
-
392
- static void
393
- delete_filter_walker( struct ofp_match match, uint16_t priority, void *data, void *user_data ) {
394
- UNUSED( data );
395
- buffer *reply_buffer = user_data;
396
- assert( reply_buffer != NULL );
397
-
398
- delete_packetin_filter_reply *reply = reply_buffer->data;
399
- list_element *head = delete_match_strict_entry( match, priority );
400
- for ( list_element *services = head; services != NULL; services = services->next ) {
401
- xfree( services->data );
402
- reply->n_deleted++;
403
- }
404
- if ( head != NULL ) {
405
- delete_list( head );
406
- }
407
- }
408
-
409
-
410
- static void
411
- handle_delete_filter_request( const messenger_context_handle *handle, delete_packetin_filter_request *request ) {
412
- assert( handle != NULL );
413
- assert( request != NULL );
414
-
415
- buffer *buf = alloc_buffer_with_length( sizeof( delete_packetin_filter_reply ) );
416
- delete_packetin_filter_reply *reply = append_back_buffer( buf, sizeof( delete_packetin_filter_reply ) );
417
- reply->status = PACKETIN_FILTER_OPERATION_SUCCEEDED;
418
- reply->n_deleted = 0;
419
-
420
- struct ofp_match match;
421
- ntoh_match( &match, &request->criteria.match );
422
- uint16_t priority = ntohs( request->criteria.priority );
423
- if ( request->flags & PACKETIN_FILTER_FLAG_MATCH_STRICT ) {
424
- int n_deleted = delete_packetin_match_entry( match, priority, request->criteria.service_name );
425
- reply->n_deleted += ( uint32_t ) n_deleted;
426
- }
427
- else {
428
- map_match_table( match, delete_filter_walker, buf );
429
- }
430
- reply->n_deleted = htonl( reply->n_deleted );
431
-
432
- bool ret = send_reply_message( handle, MESSENGER_DELETE_PACKETIN_FILTER_REPLY, buf->data, buf->length );
433
- free_buffer( buf );
434
- if ( ret == false ) {
435
- error( "Failed to send a dump filter reply." );
436
- }
437
- }
438
-
439
-
440
- static void
441
- dump_filter_walker( struct ofp_match match, uint16_t priority, void *data, void *user_data ) {
442
- buffer *reply_buffer = user_data;
443
- assert( reply_buffer != NULL );
444
-
445
- dump_packetin_filter_reply *reply = reply_buffer->data;
446
- list_element *services = data;
447
- while ( services != NULL ) {
448
- reply->n_entries++;
449
- packetin_filter_entry *entry = append_back_buffer( reply_buffer, sizeof( packetin_filter_entry ) );
450
- hton_match( &entry->match, &match );
451
- entry->priority = htons( priority );
452
- strncpy( entry->service_name, services->data, sizeof( entry->service_name ) );
453
- entry->service_name[ sizeof( entry->service_name ) - 1 ] = '\0';
454
- services = services->next;
455
- }
456
- }
457
-
458
-
459
- static void
460
- handle_dump_filter_request( const messenger_context_handle *handle, dump_packetin_filter_request *request ) {
461
- assert( handle != NULL );
462
- assert( request != NULL );
463
-
464
- buffer *buf = alloc_buffer_with_length( 2048 );
465
- dump_packetin_filter_reply *reply = append_back_buffer( buf, offsetof( dump_packetin_filter_reply, entries ) );
466
- reply->status = PACKETIN_FILTER_OPERATION_SUCCEEDED;
467
- reply->n_entries = 0;
468
-
469
- struct ofp_match match;
470
- ntoh_match( &match, &request->criteria.match );
471
- uint16_t priority = ntohs( request->criteria.priority );
472
- if ( request->flags & PACKETIN_FILTER_FLAG_MATCH_STRICT ) {
473
- list_element *services = lookup_match_strict_entry( match, priority );
474
- while ( services != NULL ) {
475
- if ( strcmp( services->data, request->criteria.service_name ) == 0 ) {
476
- packetin_filter_entry *entry = append_back_buffer( buf, sizeof( packetin_filter_entry ) );
477
- reply->n_entries++;
478
- entry->match = request->criteria.match;
479
- entry->priority = request->criteria.priority;
480
- strncpy( entry->service_name, services->data, sizeof( entry->service_name ) );
481
- entry->service_name[ sizeof( entry->service_name ) - 1 ] = '\0';
482
- }
483
- services = services->next;
484
- }
485
- }
486
- else {
487
- map_match_table( match, dump_filter_walker, buf );
488
- }
489
- reply->n_entries = htonl( reply->n_entries );
490
-
491
- bool ret = send_reply_message( handle, MESSENGER_DUMP_PACKETIN_FILTER_REPLY, buf->data, buf->length );
492
- free_buffer( buf );
493
- if ( ret == false ) {
494
- error( "Failed to send a dump packetin filter reply." );
495
- }
496
- }
497
-
498
-
499
- static void
500
- handle_request( const messenger_context_handle *handle, uint16_t tag, void *data, size_t length ) {
501
- assert( handle != NULL );
502
-
503
- debug( "Handling a request ( handle = %p, tag = %#x, data = %p, length = %zu ).",
504
- handle, tag, data, length );
505
-
506
- switch ( tag ) {
507
- case MESSENGER_ADD_PACKETIN_FILTER_REQUEST:
508
- {
509
- if ( length != sizeof( add_packetin_filter_request ) ) {
510
- error( "Invalid add packetin filter request ( length = %zu ).", length );
511
- return;
512
- }
513
-
514
- handle_add_filter_request( handle, data );
515
- }
516
- break;
517
- case MESSENGER_DELETE_PACKETIN_FILTER_REQUEST:
518
- {
519
- if ( length != sizeof( delete_packetin_filter_request ) ) {
520
- error( "Invalid delete packetin filter request ( length = %zu ).", length );
521
- return;
522
- }
523
-
524
- handle_delete_filter_request( handle, data );
525
- }
526
- break;
527
- case MESSENGER_DUMP_PACKETIN_FILTER_REQUEST:
528
- {
529
- if ( length != sizeof( dump_packetin_filter_request ) ) {
530
- error( "Invalid dump packetin filter request ( length = %zu ).", length );
531
- return;
532
- }
533
-
534
- handle_dump_filter_request( handle, data );
535
- }
536
- break;
537
- default:
538
- {
539
- warn( "Undefined request tag ( tag = %#x ).", tag );
540
- }
541
- break;
542
- }
543
- }
544
-
545
-
546
- int
547
- main( int argc, char *argv[] ) {
548
- init_trema( &argc, &argv );
549
-
550
- init_packetin_match_table();
551
-
552
- // built-in packetin-filter-rule
553
- if ( !set_match_type( argc, argv ) ) {
554
- usage();
555
- finalize_packetin_match_table();
556
- exit( EXIT_FAILURE );
557
- }
558
-
559
- set_packet_in_handler( handle_packet_in, NULL );
560
- add_message_requested_callback( PACKETIN_FILTER_MANAGEMENT_SERVICE, handle_request );
561
-
562
- start_trema();
563
-
564
- finalize_packetin_match_table();
565
-
566
- return 0;
567
- }
568
-
569
-
570
- /*
571
- * Local variables:
572
- * c-basic-offset: 2
573
- * indent-tabs-mode: nil
574
- * End:
575
- */