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,247 +0,0 @@
1
- /*
2
- * syslog_relay: An application that relays syslog messages to tremashark
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 <errno.h>
22
- #include <getopt.h>
23
- #include <inttypes.h>
24
- #include <string.h>
25
- #include <sys/socket.h>
26
- #include <sys/types.h>
27
- #include <unistd.h>
28
- #include "trema.h"
29
-
30
-
31
- static char *dump_service_name = NULL;
32
- static uint16_t listen_port = 514;
33
- static int syslog_fd = -1;
34
-
35
-
36
- static void
37
- relay_syslog_message( buffer *message ) {
38
- // retrieve current time
39
- struct timespec now;
40
- if ( clock_gettime( CLOCK_REALTIME, &now ) == -1 ) {
41
- error( "Failed to retrieve system-wide real-time clock ( %s [%d] ).", strerror( errno ), errno );
42
- return;
43
- }
44
-
45
- // allocate buffer
46
- char *service_name = xstrdup( get_trema_name() );
47
- uint16_t service_name_length = ( uint16_t ) ( strlen( service_name ) + 1 );
48
- size_t buffer_length = sizeof( message_dump_header ) + service_name_length + sizeof( syslog_dump_header ) + message->length;
49
- buffer *buf = alloc_buffer_with_length( buffer_length );
50
-
51
- // syslog_dump_header + service_name
52
- message_dump_header *mdh = append_back_buffer( buf, sizeof( message_dump_header ) );
53
- mdh->sent_time.sec = htonl( ( uint32_t ) now.tv_sec );
54
- mdh->sent_time.nsec = htonl( ( uint32_t ) now.tv_nsec );
55
- mdh->app_name_length = htons( 0 );
56
- mdh->service_name_length = htons( service_name_length );
57
- mdh->data_length = htonl( ( uint32_t ) ( sizeof( syslog_dump_header ) + message->length ) );
58
- void *svn = append_back_buffer( buf, service_name_length );
59
- memcpy( svn, service_name, service_name_length );
60
- xfree( service_name );
61
-
62
- // syslog_dump_header
63
- syslog_dump_header *sdh = append_back_buffer( buf, sizeof( syslog_dump_header ) );
64
- sdh->sent_time.sec = htonl( ( uint32_t ) now.tv_sec );
65
- sdh->sent_time.nsec = htonl( ( uint32_t ) now.tv_nsec );
66
-
67
- // message
68
- void *p = append_back_buffer( buf, message->length );
69
- memcpy( p, message->data, message->length );
70
-
71
- bool ret = send_message( dump_service_name, MESSENGER_DUMP_SYSLOG, buf->data, buf->length );
72
- if ( !ret ) {
73
- error( "Failed to relay syslog message." );
74
- }
75
- free_buffer( buf );
76
- }
77
-
78
-
79
- static void
80
- recv_syslog_message( int fd, void *data ) {
81
- UNUSED( data );
82
-
83
- char buf[ 1024 ];
84
- ssize_t ret = read( fd, buf, sizeof( buf ) );
85
-
86
- if ( ret < 0 ) {
87
- if ( errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK ) {
88
- return;
89
- }
90
-
91
- error( "Receive error ( errno = %s [%d] ).", strerror( errno ), errno );
92
-
93
- set_readable( fd, false );
94
- delete_fd_handler( fd );
95
- return;
96
- }
97
-
98
- buffer *message = alloc_buffer_with_length( ( size_t ) ret );
99
- void *p = append_back_buffer( message, ( size_t ) ret );
100
- memcpy( p, buf, ( size_t ) ret );
101
-
102
- relay_syslog_message( message );
103
-
104
- free_buffer( message );
105
- }
106
-
107
-
108
- void
109
- usage( void ) {
110
- printf(
111
- "Usage: syslog_relay [OPTION]...\n"
112
- "\n"
113
- " -p LISTEN_PORT listen port for receiving syslog messages\n"
114
- " -s DUMP_SERVICE_NAME dump service name\n"
115
- " -n, --name=SERVICE_NAME service name\n"
116
- " -d, --daemonize run in the background\n"
117
- " -l, --logging_level=LEVEL set logging level\n"
118
- " -g, --syslog output log messages to syslog\n"
119
- " -f, --logging_facility=FACILITY set syslog facility\n"
120
- " -h, --help display this help and exit\n"
121
- );
122
- }
123
-
124
-
125
- static void
126
- print_usage_and_exit( void ) {
127
- usage();
128
- exit( EXIT_FAILURE );
129
- }
130
-
131
-
132
- static void
133
- parse_options( int *argc, char **argv[] ) {
134
- int opt;
135
-
136
- while ( 1 ) {
137
- opt = getopt( *argc, *argv, "p:s:" );
138
-
139
- if ( opt < 0 ) {
140
- break;
141
- }
142
-
143
- switch ( opt ) {
144
- case 'p':
145
- if ( ( optarg != NULL ) && ( atoi( optarg ) <= UINT16_MAX ) && ( atoi ( optarg ) >= 0 ) ) {
146
- listen_port = ( uint16_t ) atoi( optarg );
147
- }
148
- else {
149
- print_usage_and_exit();
150
- }
151
- break;
152
-
153
- case 's':
154
- if ( optarg && dump_service_name == NULL ) {
155
- dump_service_name = xstrdup( optarg );
156
- }
157
- else {
158
- print_usage_and_exit();
159
- }
160
- break;
161
-
162
- default:
163
- print_usage_and_exit();
164
- }
165
- }
166
-
167
- if ( dump_service_name == NULL ) {
168
- dump_service_name = xstrdup( DEFAULT_DUMP_SERVICE_NAME );
169
- }
170
- }
171
-
172
-
173
- static bool
174
- init_syslog_relay( int *argc, char **argv[] ) {
175
- parse_options( argc, argv );
176
-
177
- if ( syslog_fd >= 0 ) {
178
- close( syslog_fd );
179
- syslog_fd = -1;
180
- }
181
-
182
- syslog_fd = socket( PF_INET, SOCK_DGRAM, 0 );
183
- if ( syslog_fd < 0 ) {
184
- error( "Failed to create socket ( errno = %s [%d] ).", strerror( errno ), errno );
185
- return false;
186
- }
187
-
188
- struct sockaddr_in addr;
189
- memset( &addr, 0, sizeof( struct sockaddr_in ) );
190
- addr.sin_family = AF_INET;
191
- addr.sin_port = htons( listen_port );
192
- addr.sin_addr.s_addr = htonl( INADDR_ANY );
193
-
194
- int ret = bind( syslog_fd, ( struct sockaddr * ) &addr, sizeof( struct sockaddr_in ) );
195
- if ( ret < 0 ) {
196
- error( "Failed to bind socket ( errno = %s [%d] ).", strerror( errno ), errno );
197
- close( syslog_fd );
198
- syslog_fd = -1;
199
- return false;
200
- }
201
-
202
- set_fd_handler( syslog_fd, recv_syslog_message, NULL, NULL, NULL );
203
- set_readable( syslog_fd, true );
204
-
205
- return true;
206
- }
207
-
208
-
209
- static bool
210
- finalize_syslog_relay( void ) {
211
- if ( syslog_fd >= 0 ) {
212
- set_readable( syslog_fd, false );
213
- delete_fd_handler( syslog_fd );
214
-
215
- close( syslog_fd );
216
- syslog_fd = -1;
217
- }
218
-
219
- xfree( dump_service_name );
220
- dump_service_name = NULL;
221
-
222
- return true;
223
- }
224
-
225
-
226
- int
227
- main( int argc, char *argv[] ) {
228
- // Initialize the Trema world
229
- init_trema( &argc, &argv );
230
- init_syslog_relay( &argc, &argv );
231
-
232
- // Main loop
233
- start_trema();
234
-
235
- // Cleanup
236
- finalize_syslog_relay();
237
-
238
- return 0;
239
- }
240
-
241
-
242
- /*
243
- * Local variables:
244
- * c-basic-offset: 2
245
- * indent-tabs-mode: nil
246
- * End:
247
- */
@@ -1,554 +0,0 @@
1
- /*
2
- * tremashark: A bridge for printing various events on Wireshark
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 <assert.h>
22
- #include <errno.h>
23
- #include <fcntl.h>
24
- #include <getopt.h>
25
- #include <inttypes.h>
26
- #include <linux/limits.h>
27
- #include <pcap.h>
28
- #include <signal.h>
29
- #include <stdarg.h>
30
- #include <stdio.h>
31
- #include <string.h>
32
- #include <sys/select.h>
33
- #include <sys/stat.h>
34
- #include <sys/time.h>
35
- #include <sys/types.h>
36
- #include <unistd.h>
37
- #include "trema.h"
38
- #include "pcap_private.h"
39
- #include "pcap_queue.h"
40
-
41
-
42
- #define FIFO_NAME "tremashark"
43
- #define WIRESHARK "wireshark"
44
- #define TSHARK "tshark"
45
- #define FLUSH_INTERVAL 250000000 // nanoseconds
46
- #define MESSAGE_BUFFER_LENGTH 100000 // microseconds
47
-
48
- #define WRITE_SUCCESS 0
49
- #define WRITE_BUSY 1
50
- #define WRITE_ERROR -1
51
-
52
-
53
- static char fifo_pathname[ PATH_MAX ];
54
- static char pcap_file_pathname[ PATH_MAX ];
55
- static bool output_to_pcap_file = false;
56
- static bool launch_wireshark = true;
57
- static bool launch_tshark = false;
58
- static bool trust_remote_clocks = true;
59
- static bool use_circular_buffer = false;
60
- static int circular_buffer_length = 1024;
61
- static int outfile_fd = -1;
62
- static uint64_t total = 0;
63
- static uint64_t lost = 0;
64
-
65
-
66
- // Special purpose header for telling extra information to wireshark
67
- typedef struct {
68
- uint16_t dump_type;
69
- struct {
70
- uint32_t sec;
71
- uint32_t nsec;
72
- } sent_time;
73
- uint16_t app_name_len;
74
- uint16_t service_name_len;
75
- uint32_t data_len;
76
- } __attribute__( ( packed ) ) message_pcap_dump_header;
77
-
78
-
79
- static void
80
- init_fifo_pathname() {
81
- assert( strlen( get_trema_tmp() ) + strlen( FIFO_NAME ) + 1 <= PATH_MAX );
82
-
83
- snprintf( fifo_pathname, PATH_MAX, "%s/%s", get_trema_tmp(), FIFO_NAME );
84
- }
85
-
86
-
87
- static int
88
- write_to_file( buffer *packet ) {
89
- assert( packet != NULL && packet->data != NULL && packet->length > 0 );
90
- assert( outfile_fd >= 0 );
91
-
92
- ssize_t ret = write( outfile_fd, packet->data, packet->length );
93
- if ( ret < 0 ) {
94
- int err = errno;
95
- if ( err == EAGAIN || err == EWOULDBLOCK ) {
96
- return WRITE_BUSY;
97
- }
98
- error( "write error ( errno = %s [%d] ).", strerror( err ), err );
99
- return WRITE_ERROR;
100
- }
101
-
102
- if ( ret != ( ssize_t ) packet->length ) {
103
- packet->data = ( char * ) packet->data + ret;
104
- packet->length = packet->length - ( unsigned int ) ret;
105
- return WRITE_BUSY;
106
- }
107
-
108
- return WRITE_SUCCESS;
109
- }
110
-
111
-
112
- static void
113
- dump_message( uint16_t tag, void *data, size_t len ) {
114
- char *app_name, *service_name;
115
- const char *type_str[] = { "sent", "received", "recv-connected", "recv-overflow", "recv-closed",
116
- "send-connected", "send-refused", "send-overflow", "send-closed",
117
- "logger", "pcap", "syslog", "text" };
118
- size_t pcap_dump_header_length;
119
- struct pcap_pkthdr_private pcap_header;
120
- message_dump_header *dump_hdr;
121
- message_pcap_dump_header *pcap_dump_hdr;
122
- message_header *hdr;
123
- buffer *packet;
124
- queue_status status;
125
-
126
- dump_hdr = data;
127
-
128
- app_name = ( char * ) ( dump_hdr + 1 );
129
- service_name = app_name + ntohs( dump_hdr->app_name_length );
130
- hdr = ( message_header * ) ( service_name + ntohs( dump_hdr->service_name_length ) );
131
-
132
- debug( "app: %s type: %s service_name: %s", app_name, type_str[ tag ], service_name );
133
-
134
- if ( ntohl( dump_hdr->data_length ) > 0 ) {
135
- debug( "message type: %d, length: %u", tag, ntohl( dump_hdr->data_length ) );
136
- }
137
-
138
- size_t dump_header_length = ( sizeof( message_dump_header ) +
139
- ntohs( dump_hdr->app_name_length ) +
140
- ntohs( dump_hdr->service_name_length ) );
141
-
142
- pcap_dump_header_length = ( sizeof( message_pcap_dump_header ) +
143
- ntohs( dump_hdr->app_name_length ) +
144
- ntohs( dump_hdr->service_name_length ) );
145
-
146
- pcap_dump_hdr = xmalloc( pcap_dump_header_length );
147
-
148
- pcap_dump_hdr->dump_type = htons( tag );
149
- pcap_dump_hdr->sent_time.sec = dump_hdr->sent_time.sec;
150
- pcap_dump_hdr->sent_time.nsec = dump_hdr->sent_time.nsec;
151
- pcap_dump_hdr->app_name_len = dump_hdr->app_name_length;
152
- pcap_dump_hdr->service_name_len = dump_hdr->service_name_length;
153
- pcap_dump_hdr->data_len = dump_hdr->data_length;
154
-
155
- char *pcap_dump_app_name = ( char * ) ( pcap_dump_hdr + 1 );
156
- memcpy( pcap_dump_app_name, app_name, ntohs( pcap_dump_hdr->app_name_len ) );
157
- if ( ntohs( pcap_dump_hdr->service_name_len ) > 0 ) {
158
- char *pcap_dump_service_name = pcap_dump_app_name + ntohs( pcap_dump_hdr->app_name_len );
159
- memcpy( pcap_dump_service_name, service_name, ntohs( pcap_dump_hdr->service_name_len ) );
160
- }
161
-
162
- memset( &pcap_header, 0, sizeof( struct pcap_pkthdr_private ) );
163
- if ( trust_remote_clocks ) {
164
- pcap_header.ts.tv_sec = ( bpf_int32 ) ntohl( dump_hdr->sent_time.sec );
165
- pcap_header.ts.tv_usec = ( bpf_int32 ) ( ntohl( dump_hdr->sent_time.nsec ) / 1000 );
166
- }
167
- else {
168
- struct timeval ts;
169
- gettimeofday( &ts, NULL );
170
- pcap_header.ts.tv_sec = ( bpf_int32 ) ts.tv_sec;
171
- pcap_header.ts.tv_usec = ( bpf_int32 ) ts.tv_usec;
172
- }
173
-
174
- len -= dump_header_length;
175
-
176
- pcap_header.caplen = ( bpf_u_int32 ) ( pcap_dump_header_length + ntohl( pcap_dump_hdr->data_len ) );
177
- pcap_header.len = ( bpf_u_int32 ) ( pcap_dump_header_length + ntohl( pcap_dump_hdr->data_len ) );
178
-
179
- packet = create_pcap_packet( &pcap_header, sizeof( struct pcap_pkthdr_private ),
180
- pcap_dump_hdr, pcap_dump_header_length,
181
- hdr, ntohl( pcap_dump_hdr->data_len ) );
182
- xfree( pcap_dump_hdr );
183
-
184
- if ( use_circular_buffer ) {
185
- buffer *dummy;
186
- while ( get_pcap_queue_length() >= circular_buffer_length ) {
187
- dummy = NULL;
188
- dequeue_pcap_packet( &dummy );
189
- if ( dummy != NULL ) {
190
- delete_pcap_packet( dummy );
191
- }
192
- }
193
- }
194
-
195
- status = enqueue_pcap_packet( packet );
196
- if ( status == QUEUE_FULL ) {
197
- warn( "tremashark queue is full. packet is discarded." );
198
- delete_pcap_packet( packet );
199
- lost++;
200
- }
201
- total++;
202
- }
203
-
204
-
205
- static void
206
- write_pcap_packet( void *user_data ) {
207
- UNUSED( user_data );
208
-
209
- sort_pcap_queue();
210
-
211
- struct timeval now;
212
- gettimeofday( &now, NULL );
213
- struct timeval buffer_length;
214
- buffer_length.tv_sec = 0;
215
- buffer_length.tv_usec = MESSAGE_BUFFER_LENGTH;
216
- struct timeval threshold;
217
-
218
- timersub( &now, &buffer_length, &threshold );
219
-
220
- for ( ;; ) {
221
- buffer *packet;
222
- queue_status status = peek_pcap_packet( &packet );
223
- if ( status == QUEUE_EMPTY ) {
224
- break;
225
- }
226
-
227
- struct pcap_pkthdr_private *p = packet->data;
228
- if ( ( p->ts.tv_sec > threshold.tv_sec ) ||
229
- ( p->ts.tv_sec == threshold.tv_sec && p->ts.tv_usec > threshold.tv_usec ) ) {
230
- break;
231
- }
232
-
233
- int ret = write_to_file( packet );
234
- switch ( ret ) {
235
- case WRITE_SUCCESS:
236
- status = dequeue_pcap_packet( &packet );
237
- if ( status == QUEUE_SUCCESS && packet != NULL ) {
238
- delete_pcap_packet( packet );
239
- }
240
- break;
241
-
242
- case WRITE_BUSY:
243
- case WRITE_ERROR:
244
- return;
245
-
246
- default:
247
- assert( 0 );
248
- }
249
- }
250
-
251
- fsync( outfile_fd );
252
- }
253
-
254
-
255
- static void
256
- set_timer_event() {
257
- if ( use_circular_buffer ) {
258
- return;
259
- }
260
-
261
- struct itimerspec interval;
262
-
263
- interval.it_value.tv_sec = 0;
264
- interval.it_value.tv_nsec = 0;
265
- interval.it_interval.tv_sec = 0;
266
- interval.it_interval.tv_nsec = FLUSH_INTERVAL;
267
-
268
- bool ret = add_timer_event_callback( &interval, write_pcap_packet, NULL );
269
- if ( !ret ) {
270
- critical( "failed in set timer event" );
271
- abort();
272
- }
273
- }
274
-
275
-
276
- static void
277
- init_pcap() {
278
- struct pcap_file_header header;
279
- memset( &header, 0, sizeof( struct pcap_file_header ) );
280
- header.magic = 0xa1b2c3d4;
281
- header.version_major = PCAP_VERSION_MAJOR;
282
- header.version_minor = PCAP_VERSION_MINOR;
283
- header.thiszone = 0;
284
- header.sigfigs = 0;
285
- header.snaplen = UINT16_MAX; // FIXME
286
- header.linktype = DLT_USER0; // FIXME
287
-
288
- mode_t mode = ( S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH );
289
- if ( output_to_pcap_file ) {
290
- outfile_fd = open( pcap_file_pathname, O_RDWR | O_CREAT | O_TRUNC, mode );
291
- if ( outfile_fd < 0 ) {
292
- critical( "Failed to open a file ( pcap file = %s ).", pcap_file_pathname );
293
- assert( 0 );
294
- }
295
- }
296
- else {
297
- int ret = mkfifo( fifo_pathname, mode );
298
- if ( ret < 0 ) {
299
- critical( "Failed to create a named pipe ( named pipe = %s ).", fifo_pathname );
300
- assert( 0 );
301
- }
302
-
303
- outfile_fd = open( fifo_pathname, O_RDWR | O_APPEND | O_NONBLOCK );
304
- if ( outfile_fd < 0 ) {
305
- critical( "Failed to open a named pipe ( named pipe = %s ).", fifo_pathname );
306
- assert( 0 );
307
- }
308
- }
309
-
310
- ssize_t ret = write( outfile_fd, &header, sizeof( struct pcap_file_header ) );
311
-
312
- if ( ret != sizeof( struct pcap_file_header ) ) {
313
- critical( "Failed to write a pcap header ( pcap file = %s ).", pcap_file_pathname );
314
- assert( 0 );
315
- }
316
-
317
- fsync( outfile_fd );
318
- }
319
-
320
-
321
- static void
322
- finalize_pcap() {
323
- if ( outfile_fd >= 0 ) {
324
- fsync( outfile_fd );
325
- close( outfile_fd );
326
- outfile_fd = -1;
327
- }
328
-
329
- unlink( fifo_pathname );
330
- }
331
-
332
-
333
- static void
334
- write_circular_buffer( void ) {
335
- if ( !output_to_pcap_file ) {
336
- return;
337
- }
338
-
339
- if ( outfile_fd < 0 ) {
340
- init_pcap();
341
- }
342
-
343
- sort_pcap_queue();
344
-
345
- foreach_pcap_queue( ( void * ) write_to_file );
346
-
347
- finalize_pcap();
348
- }
349
-
350
-
351
- static void
352
- set_write_circular_buffer( void ) {
353
- if ( push_external_callback != NULL ) {
354
- push_external_callback( write_circular_buffer );
355
- }
356
- }
357
-
358
-
359
- static void
360
- set_signal_handler( void ) {
361
- // Note that this overrides a default signal handler set by Trema.
362
- struct sigaction signal_usr2;
363
- memset( &signal_usr2, 0, sizeof( struct sigaction ) );
364
- signal_usr2.sa_handler = ( void * ) set_write_circular_buffer;
365
- sigaction( SIGUSR2, &signal_usr2, NULL );
366
- }
367
-
368
-
369
- static void
370
- start_wireshark() {
371
- pid_t pid;
372
-
373
- if ( !launch_wireshark && !launch_tshark ) {
374
- return;
375
- }
376
-
377
- pid = fork();
378
-
379
- if ( pid < 0 ) {
380
- assert( 0 );
381
- }
382
-
383
- if ( pid == 0 ) {
384
- if ( launch_wireshark ) {
385
- execlp( WIRESHARK, "wireshark", "-k", "-i", fifo_pathname, NULL );
386
- error( "can't execute wireshark ( errno = %s [%d] ).", strerror( errno ), errno );
387
- }
388
- else if ( launch_tshark ) {
389
- execlp( TSHARK, "tshark", "-V", "-i", fifo_pathname, NULL );
390
- error( "can't execute tshark ( errno = %s [%d] ).", strerror( errno ), errno );
391
- }
392
- exit( EXIT_FAILURE );
393
- }
394
- }
395
-
396
-
397
- void
398
- usage( void ) {
399
- printf(
400
- "Usage: tremashark [OPTION]...\n"
401
- "\n"
402
- " -t launch tshark instead of wireshark\n"
403
- " -w FILE_TO_SAVE save messages to pcap file\n"
404
- " -p do not launch wireshark nor tshark\n"
405
- " -r do not trust remote clock\n"
406
- " -c NUMBER_OF_MESSAGES save messages to circular buffer\n"
407
- " -s DUMP_SERVICE_NAME dump service name\n"
408
- " -n, --name=SERVICE_NAME service name\n"
409
- " -d, --daemonize run in the background\n"
410
- " -l, --logging_level=LEVEL set logging level\n"
411
- " -g, --syslog output log messages to syslog\n"
412
- " -f, --logging_facility=FACILITY set syslog facility\n"
413
- " -h, --help display this help and exit\n"
414
- );
415
- }
416
-
417
-
418
- static void
419
- print_usage_and_exit( void ) {
420
- usage();
421
- exit( EXIT_FAILURE );
422
- }
423
-
424
-
425
- static void
426
- parse_options( int *argc, char **argv[] ) {
427
- char *service_name = NULL;
428
- int opt;
429
-
430
- while ( 1 ) {
431
- opt = getopt( *argc, *argv, "c:s:tw:pr" );
432
-
433
- if ( opt < 0 ) {
434
- break;
435
- }
436
-
437
- switch ( opt ) {
438
- case 'p':
439
- launch_wireshark = false;
440
- launch_tshark = false;
441
- break;
442
-
443
- case 't':
444
- launch_wireshark = false;
445
- launch_tshark = true;
446
- break;
447
-
448
- case 'r':
449
- trust_remote_clocks = false;
450
- break;
451
-
452
- case 's':
453
- if ( optarg && service_name == NULL ) {
454
- service_name = xmalloc( strlen( optarg ) + 1 );
455
- strcpy( service_name, optarg );
456
- }
457
- else {
458
- print_usage_and_exit();
459
- }
460
- break;
461
-
462
- case 'w':
463
- if ( optarg ) {
464
- // Save packets to a pcap file
465
- strncpy( pcap_file_pathname, optarg, PATH_MAX );
466
- output_to_pcap_file = true;
467
- launch_wireshark = false;
468
- launch_tshark = false;
469
- }
470
- else {
471
- print_usage_and_exit();
472
- }
473
- break;
474
-
475
- case 'c':
476
- use_circular_buffer = true;
477
- launch_wireshark = false;
478
- launch_tshark = false;
479
- if ( optarg ) {
480
- int n = atoi( optarg );
481
- if ( n > 0 ) {
482
- circular_buffer_length = n;
483
- set_max_pcap_queue_length( circular_buffer_length );
484
- }
485
- else {
486
- print_usage_and_exit();
487
- }
488
- }
489
- break;
490
-
491
- default:
492
- print_usage_and_exit();
493
- }
494
- }
495
-
496
- if ( use_circular_buffer && !output_to_pcap_file ) {
497
- printf( "-w FILE_NAME option must be specified in conjunction with -c.\n" );
498
- print_usage_and_exit();
499
- }
500
-
501
- // Set an event handler
502
- if ( service_name == NULL ) {
503
- add_message_received_callback( DEFAULT_DUMP_SERVICE_NAME, dump_message );
504
- }
505
- else {
506
- add_message_received_callback( service_name, dump_message );
507
- xfree( service_name );
508
- }
509
- }
510
-
511
-
512
- int
513
- main( int argc, char *argv[] ) {
514
- // Initialize the Trema world
515
- init_trema( &argc, &argv );
516
- parse_options( &argc, &argv );
517
- init_fifo_pathname();
518
-
519
- // create queue for storing pcap packets
520
- create_pcap_queue();
521
-
522
- // Initialize an interface to wireshark
523
- init_pcap();
524
-
525
- // Start wireshark/tshark if necessary
526
- start_wireshark();
527
-
528
- // Set timer event to write packet
529
- set_timer_event();
530
-
531
- // Set signal handler to dump circular buffer
532
- set_signal_handler();
533
-
534
- // Main loop
535
- start_trema();
536
-
537
- // Cleanup
538
- finalize_pcap();
539
- delete_pcap_queue();
540
-
541
- if ( lost > 0 ) {
542
- warn( "%" PRIu64 "/%" PRIu64 " messages lost.", lost, total );
543
- }
544
-
545
- return 0;
546
- }
547
-
548
-
549
- /*
550
- * Local variables:
551
- * c-basic-offset: 2
552
- * indent-tabs-mode: nil
553
- * End:
554
- */