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,51 +0,0 @@
1
- /*
2
- * Timer events and callbacks.
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 TIMER_H
22
- #define TIMER_H
23
-
24
-
25
- #include <stdbool.h>
26
- #include <time.h>
27
-
28
-
29
- typedef void ( *timer_callback )( void *user_data );
30
-
31
-
32
- extern bool ( *init_timer )( void );
33
- extern bool ( *finalize_timer )( void );
34
-
35
- extern bool ( *add_timer_event_callback )( struct itimerspec *interval, timer_callback callback, void *user_data );
36
- extern bool ( *add_periodic_event_callback )( const time_t seconds, timer_callback callback, void *user_data );
37
-
38
- extern bool ( *delete_timer_event )( timer_callback callback, void *user_data );
39
-
40
- extern void ( *execute_timer_events )( int *next_timeout_usec );
41
-
42
-
43
- #endif // TIMER_H
44
-
45
-
46
- /*
47
- * Local variables:
48
- * c-basic-offset: 2
49
- * indent-tabs-mode: nil
50
- * End:
51
- */
@@ -1,776 +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 <assert.h>
20
- #include <errno.h>
21
- #include <getopt.h>
22
- #include <libgen.h>
23
- #include <limits.h>
24
- #include <pthread.h>
25
- #include <signal.h>
26
- #include <stdio.h>
27
- #include <stdlib.h>
28
- #include <string.h>
29
- #include <sys/stat.h>
30
- #include <sys/types.h>
31
- #include <unistd.h>
32
- #include "trema.h"
33
- #include "daemon.h"
34
- #include "doubly_linked_list.h"
35
- #include "log.h"
36
- #include "management_interface.h"
37
- #include "messenger.h"
38
- #include "openflow_application_interface.h"
39
- #include "packetin_filter_interface.h"
40
- #include "timer.h"
41
- #include "trema_private.h"
42
- #include "utility.h"
43
- #include "wrapper.h"
44
-
45
-
46
- #ifdef UNIT_TESTING
47
-
48
- #ifdef init_log
49
- #undef init_log
50
- #endif
51
- #define init_log mock_init_log
52
- bool mock_init_log( const char *ident, const char *log_directory, logging_type type );
53
-
54
- #ifdef error
55
- #undef error
56
- #endif
57
- #define error mock_error
58
- void mock_error( const char *format, ... );
59
-
60
- #ifdef set_logging_level
61
- #undef set_logging_level
62
- #endif
63
- #define set_logging_level mock_set_logging_level
64
- bool mock_set_logging_level( const char *level );
65
-
66
- #ifdef daemonize
67
- #undef daemonize
68
- #endif
69
- #define daemonize mock_daemonize
70
- void mock_daemonize( const char *home );
71
-
72
- #ifdef write_pid
73
- #undef write_pid
74
- #endif
75
- #define write_pid mock_write_pid
76
- void mock_write_pid( const char *directory, const char *name );
77
-
78
- #ifdef unlink_pid
79
- #undef unlink_pid
80
- #endif
81
- #define unlink_pid mock_unlink_pid
82
- void mock_unlink_pid( const char *directory, const char *name );
83
-
84
- #ifdef rename_pid
85
- #undef rename_pid
86
- #endif
87
- #define rename_pid mock_rename_pid
88
- void mock_rename_pid( const char *directory, const char *old, const char *new );
89
-
90
- #ifdef read_pid
91
- #undef read_pid
92
- #endif
93
- #define read_pid mock_read_pid
94
- pid_t mock_read_pid( const char *directory, const char *name );
95
-
96
- #ifdef kill
97
- #undef kill
98
- #endif
99
- #define kill mock_kill
100
- int mock_kill( pid_t pid, int sig );
101
-
102
- #ifdef clock_nanosleep
103
- #undef clock_nanosleep
104
- #endif
105
- #define clock_nanosleep mock_clock_nanosleep
106
- unsigned int mock_clock_nanosleep( clockid_t clock_id, int flags, const struct timespec *request, struct timespec *remain);
107
-
108
- #ifdef init_event_handler
109
- #undef init_event_handler
110
- #endif
111
- #define init_event_handler mock_init_event_handler
112
- void mock_init_event_handler( void );
113
-
114
- #ifdef start_event_handler
115
- #undef start_event_handler
116
- #endif
117
- #define start_event_handler mock_start_event_handler
118
- void mock_start_event_handler( void );
119
-
120
- #ifdef stop_event_handler
121
- #undef stop_event_handler
122
- #endif
123
- #define stop_event_handler mock_stop_event_handler
124
- void mock_stop_event_handler( void );
125
-
126
- #ifdef init_messenger
127
- #undef init_messenger
128
- #endif
129
- #define init_messenger mock_init_messenger
130
- void mock_init_messenger( const char *working_directory );
131
-
132
- #ifdef start_messenger
133
- #undef start_messenger
134
- #endif
135
- #define start_messenger mock_start_messenger
136
- void mock_start_messenger( void );
137
-
138
- #ifdef flush_messenger
139
- #undef flush_messenger
140
- #endif
141
- #define flush_messenger mock_flush_messenger
142
- void mock_flush_messenger( void );
143
-
144
- #ifdef stop_messenger
145
- #undef stop_messenger
146
- #endif
147
- #define stop_messenger mock_stop_messenger
148
- void mock_stop_messenger( void );
149
-
150
- #ifdef finalize_messenger
151
- #undef finalize_messenger
152
- #endif
153
- #define finalize_messenger mock_finalize_messenger
154
- void mock_finalize_messenger( void );
155
-
156
- #ifdef start_messenger_dump
157
- #undef start_messenger_dump
158
- #endif
159
- #define start_messenger_dump mock_start_messenger_dump
160
- void mock_start_messenger_dump( const char *dump_app_name, const char *dump_service_name );
161
-
162
- #ifdef stop_messenger_dump
163
- #undef stop_messenger_dump
164
- #endif
165
- #define stop_messenger_dump mock_stop_messenger_dump
166
- void mock_stop_messenger_dump();
167
-
168
- #ifdef messenger_dump_enabled
169
- #undef messenger_dump_enabled
170
- #endif
171
- #define messenger_dump_enabled mock_messenger_dump_enabled
172
- bool mock_messenger_dump_enabled();
173
-
174
- #ifdef die
175
- #undef die
176
- #endif
177
- #define die mock_die
178
- void mock_die( const char *format, ... );
179
-
180
- #ifdef exit
181
- #undef exit
182
- #endif
183
- #define exit mock_exit
184
- void mock_exit( int status );
185
-
186
- #ifdef openflow_application_interface_is_initialized
187
- #undef openflow_application_interface_is_initialized
188
- #endif
189
- #define openflow_application_interface_is_initialized mock_openflow_application_interface_is_initialized
190
- bool mock_openflow_application_interface_is_initialized( void );
191
-
192
- #ifdef finalize_openflow_application_interface
193
- #undef finalize_openflow_application_interface
194
- #endif
195
- #define finalize_openflow_application_interface mock_finalize_openflow_application_interface
196
- bool mock_finalize_openflow_application_interface( void );
197
-
198
- #ifdef printf
199
- #undef printf
200
- #endif
201
- #define printf mock_printf
202
- int mock_printf( const char *format, ...);
203
-
204
- typedef struct stat _stat;
205
- #ifdef stat
206
- #undef stat
207
- #endif
208
- #define stat mock_stat
209
- int mock_stat( const char *path, _stat *buf );
210
-
211
- #ifdef debug
212
- #undef debug
213
- #endif
214
- #define debug mock_debug
215
- void mock_debug( const char *format, ... );
216
-
217
- #ifdef init_stat
218
- #undef init_stat
219
- #endif
220
- #define init_stat mock_init_stat
221
- bool mock_init_stat();
222
-
223
- #ifdef finalize_stat
224
- #undef finalize_stat
225
- #endif
226
- #define finalize_stat mock_finalize_stat
227
- bool mock_finalize_stat();
228
-
229
- #ifdef init_timer
230
- #undef init_timer
231
- #endif
232
- #define init_timer mock_init_timer
233
- bool mock_init_timer();
234
-
235
- #ifdef finalize_timer
236
- #undef finalize_timer
237
- #endif
238
- #define finalize_timer mock_finalize_timer
239
- bool mock_finalize_timer();
240
-
241
- #ifdef push_external_callback
242
- #undef push_external_callback
243
- #endif
244
- #define push_external_callback mock_push_external_callback
245
- bool mock_push_external_callback( void ( *callback )( void ) );
246
-
247
- #ifdef dump_stats
248
- #undef dump_stats
249
- #endif
250
- #define dump_stats mock_dump_stats
251
- void mock_dump_stats();
252
-
253
- #ifdef finalize_packetin_filter_interface
254
- #undef finalize_packetin_filter_interface
255
- #endif
256
- #define finalize_packetin_filter_interface mock_finalize_packetin_filter_interface
257
- bool mock_finalize_packetin_filter_interface();
258
-
259
- #ifdef init_management_interface
260
- #undef init_management_interface
261
- #endif
262
- #define init_management_interface mock_init_management_interface
263
- bool mock_init_management_interface();
264
-
265
- #ifdef finalize_management_interface
266
- #undef finalize_management_interface
267
- #endif
268
- #define finalize_management_interface mock_finalize_management_interface
269
- bool mock_finalize_management_interface();
270
-
271
- #define static
272
-
273
- #endif // UNIT_TESTING
274
-
275
-
276
- #ifndef UNIT_TESTING
277
- #define _stat struct stat
278
- #endif // not UNIT_TESTING
279
-
280
-
281
- static bool initialized = false;
282
- static bool trema_started = false;
283
- static bool run_as_daemon = false;
284
- static char *trema_name = NULL;
285
- static char *executable_name = NULL;
286
- static char *trema_log = NULL;
287
- static char *trema_pid = NULL;
288
- static char *trema_sock = NULL;
289
- static logging_type log_output_type = LOGGING_TYPE_FILE;
290
- static pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
291
-
292
-
293
- static struct option long_options[] = {
294
- { "name", 1, NULL, 'n' },
295
- { "daemonize", 0, NULL, 'd' },
296
- { "logging_level", 1, NULL, 'l' },
297
- { "syslog", 0, NULL, 'g' },
298
- { "logging_facility", 1, NULL, 'f' },
299
- { "help", 0, NULL, 'h' },
300
- { NULL, 0, NULL, 0 },
301
- };
302
- static char short_options[] = "n:dl:gf:h";
303
-
304
-
305
- /**
306
- * Default usage function shown on <tt>-h</tt> or <tt>--help</tt>.
307
- *
308
- * This can be overridden by defining your own <tt>void usage( void )</tt>
309
- * in your Trema application.
310
- */
311
- void
312
- usage() {
313
- printf(
314
- "Usage: %s [OPTION]...\n"
315
- "\n"
316
- " -n, --name=SERVICE_NAME service name\n"
317
- " -d, --daemonize run in the background\n"
318
- " -l, --logging_level=LEVEL set logging level\n"
319
- " -g, --syslog output log messages to syslog\n"
320
- " -f, --logging_facility=FACILITY set syslog facility\n"
321
- " -h, --help display this help and exit\n",
322
- executable_name
323
- );
324
- }
325
-
326
-
327
- static const char *
328
- get_trema_log() {
329
- if ( trema_log == NULL ) {
330
- char path[ PATH_MAX ];
331
- sprintf( path, "%s/log", get_trema_tmp() );
332
- trema_log = xstrdup( path );
333
- }
334
- return trema_log;
335
- }
336
-
337
-
338
- static const char *
339
- get_trema_pid() {
340
- if ( trema_pid == NULL ) {
341
- char path[ PATH_MAX ];
342
- sprintf( path, "%s/pid", get_trema_tmp() );
343
- trema_pid = xstrdup( path );
344
- }
345
- return trema_pid;
346
- }
347
-
348
-
349
- static const char *
350
- get_trema_sock() {
351
- if ( trema_sock == NULL ) {
352
- char path[ PATH_MAX ];
353
- sprintf( path, "%s/sock", get_trema_tmp() );
354
- trema_sock = xstrdup( path );
355
- }
356
- return trema_sock;
357
- }
358
-
359
-
360
- static void
361
- maybe_finalize_openflow_application_interface() {
362
- if ( openflow_application_interface_is_initialized() ) {
363
- finalize_openflow_application_interface();
364
- }
365
- }
366
-
367
-
368
- static void
369
- die_unless_initialized() {
370
- if ( !initialized ) {
371
- die( "Trema is not initialized. Call init_trema() first." );
372
- }
373
- }
374
-
375
-
376
- void
377
- finalize_trema() {
378
- die_unless_initialized();
379
-
380
- debug( "Terminating %s...", get_trema_name() );
381
-
382
- maybe_finalize_openflow_application_interface();
383
- finalize_management_interface();
384
- finalize_packetin_filter_interface();
385
- finalize_messenger();
386
- finalize_stat();
387
- finalize_timer();
388
- trema_started = false;
389
- unlink_pid( get_trema_pid(), get_trema_name() );
390
- xfree( trema_name );
391
- trema_name = NULL;
392
- xfree( executable_name );
393
- executable_name = NULL;
394
-
395
- unset_trema_home();
396
- unset_trema_tmp();
397
-
398
- xfree( trema_log );
399
- trema_log = NULL;
400
-
401
- initialized = false;
402
- }
403
-
404
-
405
- static void
406
- check_trema_tmp() {
407
- _stat st;
408
- int ret = stat( get_trema_tmp(), &st );
409
- if ( ( ret != 0 ) && ( errno == ENOENT ) ) {
410
- die( "Trema temporary directory does not exist: %s", get_trema_tmp() );
411
- }
412
- }
413
-
414
-
415
- static void
416
- reset_getopt() {
417
- optind = 0;
418
- opterr = 1;
419
- }
420
-
421
-
422
- static void
423
- parse_argv( int *argc, char ***argv ) {
424
- assert( argc != NULL );
425
- assert( argv != NULL );
426
-
427
- int argc_tmp = *argc;
428
- char *new_argv[ *argc ];
429
-
430
- run_as_daemon = false;
431
-
432
- set_trema_name( basename( ( *argv )[ 0 ] ) );
433
- executable_name = xstrdup( get_trema_name() );
434
-
435
- for ( int i = 0; i < *argc; ++i ) {
436
- new_argv[ i ] = ( *argv )[ i ];
437
- }
438
-
439
- for ( ;; ) {
440
- opterr = 0;
441
- int c = getopt_long( *argc, *argv, short_options, long_options, NULL );
442
-
443
- if ( c == -1 ) {
444
- break;
445
- }
446
-
447
- switch ( c ) {
448
- case 'n':
449
- set_trema_name( optarg );
450
- break;
451
- case 'd':
452
- run_as_daemon = true;
453
- break;
454
- case 'l':
455
- set_logging_level( optarg );
456
- break;
457
- case 'g':
458
- log_output_type = LOGGING_TYPE_SYSLOG;
459
- break;
460
- case 'f':
461
- set_syslog_facility( optarg );
462
- break;
463
- case 'h':
464
- usage();
465
- xfree( trema_name );
466
- xfree( executable_name );
467
- exit( EXIT_SUCCESS );
468
- break;
469
- default:
470
- continue;
471
- }
472
-
473
- if ( optarg == NULL || strchr( new_argv[ optind - 1 ], '=' ) != NULL ) {
474
- argc_tmp -= 1;
475
- new_argv[ optind - 1 ] = NULL;
476
- }
477
- else {
478
- argc_tmp -= 2;
479
- new_argv[ optind - 1 ] = NULL;
480
- new_argv[ optind - 2 ] = NULL;
481
- }
482
- }
483
-
484
- for ( int i = 0, j = 0; i < *argc; ++i ) {
485
- if ( new_argv[ i ] != NULL ) {
486
- ( *argv )[ j ] = new_argv[ i ];
487
- j++;
488
- }
489
- }
490
- if ( argc_tmp < *argc ) {
491
- ( *argv )[ argc_tmp ] = NULL;
492
- }
493
- *argc = argc_tmp;
494
-
495
- reset_getopt();
496
- }
497
-
498
-
499
- static void
500
- ignore_sigpipe() {
501
- struct sigaction sigpipe_ignore;
502
-
503
- memset( &sigpipe_ignore, 0, sizeof( struct sigaction ) );
504
- sigpipe_ignore.sa_handler = SIG_IGN;
505
- sigaction( SIGPIPE, &sigpipe_ignore, NULL );
506
- }
507
-
508
-
509
- static void
510
- set_do_stop_trema_as_external_callback() {
511
- push_external_callback( stop_trema );
512
- }
513
-
514
-
515
- static void
516
- set_exit_handler() {
517
- struct sigaction signal_exit;
518
-
519
- memset( &signal_exit, 0, sizeof( struct sigaction ) );
520
- signal_exit.sa_handler = ( void * ) set_do_stop_trema_as_external_callback;
521
- sigaction( SIGINT, &signal_exit, NULL );
522
- sigaction( SIGTERM, &signal_exit, NULL );
523
- }
524
-
525
-
526
- static void
527
- do_restart_log() {
528
- restart_log( NULL );
529
- }
530
-
531
-
532
- static void
533
- set_do_restart_log_as_external_callback() {
534
- push_external_callback( do_restart_log );
535
- }
536
-
537
-
538
- static void
539
- set_hup_handler() {
540
- struct sigaction signal_hup;
541
-
542
- memset( &signal_hup, 0, sizeof( struct sigaction ) );
543
- signal_hup.sa_handler = ( void * ) set_do_restart_log_as_external_callback;
544
- sigaction( SIGHUP, &signal_hup, NULL );
545
- }
546
-
547
-
548
- static void
549
- set_dump_stats_as_external_callback() {
550
- push_external_callback( dump_stats );
551
- }
552
-
553
-
554
- static void
555
- set_usr1_handler() {
556
- struct sigaction signal_usr1;
557
-
558
- memset( &signal_usr1, 0, sizeof( struct sigaction ) );
559
- signal_usr1.sa_handler = ( void * ) set_dump_stats_as_external_callback;
560
- sigaction( SIGUSR1, &signal_usr1, NULL );
561
- }
562
-
563
-
564
- static void
565
- toggle_messenger_dump() {
566
- if ( messenger_dump_enabled() ) {
567
- stop_messenger_dump();
568
- }
569
- else {
570
- start_messenger_dump( get_trema_name(), DEFAULT_DUMP_SERVICE_NAME );
571
- }
572
- }
573
-
574
-
575
- static void
576
- set_usr2_handler() {
577
- struct sigaction signal_usr2;
578
-
579
- memset( &signal_usr2, 0, sizeof( struct sigaction ) );
580
- signal_usr2.sa_handler = ( void * ) toggle_messenger_dump;
581
- sigaction( SIGUSR2, &signal_usr2, NULL );
582
- }
583
-
584
-
585
- static void
586
- maybe_daemonize() {
587
- if ( run_as_daemon ) {
588
- daemonize( get_trema_home() );
589
- }
590
- }
591
-
592
-
593
- /**
594
- * Call this function before using any other Trema functions in your
595
- * applications.
596
- *
597
- * It will initialize everything needed to handle OpenFlow events and
598
- * parses some standard command line options. <tt>argc</tt> and
599
- * <tt>argv</tt> are adjusted accordingly so your own code will never
600
- * see those standard arguments.
601
- */
602
- void
603
- init_trema( int *argc, char ***argv ) {
604
- assert( argc != NULL );
605
- assert( argv != NULL );
606
-
607
- pthread_mutex_lock( &mutex );
608
-
609
- trema_name = NULL;
610
- trema_log = NULL;
611
- executable_name = NULL;
612
- initialized = false;
613
- trema_started = false;
614
- run_as_daemon = false;
615
- log_output_type = LOGGING_TYPE_FILE;
616
-
617
- parse_argv( argc, argv );
618
- set_trema_home();
619
- set_trema_tmp();
620
- check_trema_tmp();
621
- if ( !run_as_daemon ) {
622
- log_output_type |= LOGGING_TYPE_STDOUT;
623
- }
624
- init_log( get_trema_name(), get_trema_log(), log_output_type );
625
- ignore_sigpipe();
626
- set_exit_handler();
627
- set_hup_handler();
628
- set_usr1_handler();
629
- set_usr2_handler();
630
- init_messenger( get_trema_sock() );
631
- init_stat();
632
- init_timer();
633
- init_management_interface();
634
-
635
- initialized = true;
636
-
637
- pthread_mutex_unlock( &mutex );
638
- }
639
-
640
-
641
- static void
642
- create_pid_file() {
643
- write_pid( get_trema_pid(), get_trema_name() );
644
- }
645
-
646
-
647
- /**
648
- * Runs the main loop.
649
- */
650
- void
651
- start_trema() {
652
- pthread_mutex_lock( &mutex );
653
-
654
- die_unless_initialized();
655
- debug( "Starting %s ... (TREMA_HOME = %s)", get_trema_name(), get_trema_home() );
656
-
657
- maybe_daemonize();
658
- create_pid_file();
659
- trema_started = true;
660
- start_messenger();
661
- start_event_handler();
662
-
663
- finalize_trema();
664
-
665
- pthread_mutex_unlock( &mutex );
666
- }
667
-
668
-
669
- void
670
- flush() {
671
- flush_messenger();
672
- }
673
-
674
-
675
- /**
676
- * Exits from the main loop.
677
- */
678
- void
679
- stop_trema() {
680
- stop_event_handler();
681
- stop_messenger();
682
- }
683
-
684
-
685
- void
686
- set_trema_name( const char *name ) {
687
- assert( name != NULL );
688
- if ( trema_name != NULL ) {
689
- if ( trema_started ) {
690
- rename_pid( get_trema_pid(), trema_name, name );
691
- rename_log( name );
692
- }
693
- xfree( trema_name );
694
- }
695
- trema_name = xstrdup( name );
696
-
697
- if ( initialized ) {
698
- restart_log( trema_name );
699
- }
700
- }
701
-
702
-
703
- /**
704
- * Returns the ID of your Trema application.
705
- */
706
- const char *
707
- get_trema_name() {
708
- assert( trema_name != NULL );
709
- return trema_name;
710
- }
711
-
712
-
713
- /**
714
- * Returns the basename of <tt>argv[ 0 ]</tt>. This function is useful
715
- * for your application's <tt>usage()</tt> function.
716
- */
717
- const char *
718
- get_executable_name() {
719
- assert( executable_name != NULL );
720
- return executable_name;
721
- }
722
-
723
-
724
- pid_t
725
- get_pid_by_trema_name( const char *name ) {
726
- return read_pid( get_trema_pid(), name );
727
- }
728
-
729
-
730
- pid_t
731
- get_trema_process_from_name( const char *name ) {
732
- return get_pid_by_trema_name( name );
733
- }
734
-
735
-
736
- bool
737
- terminate_trema_process( pid_t pid ) {
738
- assert( pid > 0 );
739
- int res = kill( pid, SIGTERM );
740
- if ( res < 0 ) {
741
- if ( errno == ESRCH ) {
742
- return true;
743
- }
744
- error( "Failed to kill %d ( %s [%d] ).", pid, strerror( errno ), errno );
745
- return false;
746
- }
747
-
748
- int try = 0;
749
- const int max_try = 10;
750
- struct timespec tv = { 0, 500000000 };
751
- while ( kill( pid, 0 ) == 0 && ++try <= max_try ) {
752
- clock_nanosleep( CLOCK_MONOTONIC, 0, &tv, NULL );
753
- }
754
- if ( try > max_try ) {
755
- error( "Failed to terminate %d.", pid );
756
- return false;
757
- }
758
- return true;
759
- }
760
-
761
-
762
- void
763
- _free_trema_name() {
764
- if ( trema_name != NULL ) {
765
- xfree( trema_name );
766
- trema_name = NULL;
767
- }
768
- }
769
-
770
-
771
- /*
772
- * Local variables:
773
- * c-basic-offset: 2
774
- * indent-tabs-mode: nil
775
- * End:
776
- */