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
- * 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
- #ifndef STATS_REPLY_H
20
- #define STATS_REPLY_H
21
-
22
-
23
- #include "ruby.h"
24
- #include "trema.h"
25
-
26
-
27
- extern VALUE cStatsReply;
28
-
29
-
30
- void Init_stats_reply( void );
31
-
32
-
33
- void handle_stats_reply(
34
- uint64_t datapath_id,
35
- uint32_t transaction_id,
36
- uint16_t type,
37
- uint16_t flags,
38
- const buffer *body,
39
- void *user_data
40
- );
41
-
42
-
43
- #endif // STATS_REPLY_H
44
-
45
-
46
- /*
47
- * Local variables:
48
- * c-basic-offset: 2
49
- * indent-tabs-mode: nil
50
- * End:
51
- */
@@ -1,715 +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 "trema.h"
20
- #include "trema-ruby-utils.h"
21
- #include "ruby.h"
22
-
23
-
24
- extern VALUE mTrema;
25
- VALUE cStatsRequest;
26
- VALUE cDescStatsRequest;
27
- VALUE cFlowStatsRequest;
28
- VALUE cAggregateStatsRequest;
29
- VALUE cTableStatsRequest;
30
- VALUE cPortStatsRequest;
31
- VALUE cQueueStatsRequest;
32
- VALUE cVendorStatsRequest;
33
-
34
-
35
- static const struct ofp_match MATCH = { 0, 1,
36
- { 0x01, 0x02, 0x03, 0x04, 0x05, 0x07 },
37
- { 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d },
38
- 1, 1, { 0 }, 0x800, 0xfc, 0x6, { 0, 0 },
39
- 0x0a090807, 0x0a090807, 1024, 2048 };
40
- static const uint32_t MY_TRANSACTION_ID = 1;
41
- static const uint32_t VENDOR_ID = 0x00004cff;
42
- static const uint16_t NO_FLAGS = 0;
43
- static const uint16_t OUT_PORT = 1;
44
- static const uint16_t VENDOR_STATS_FLAG = 0xaabb;
45
- static const uint8_t TABLE_ID = 0xff;
46
-
47
-
48
- /*
49
- * @overload initialize(options={})
50
- * A +OPPT_STATS_REQUEST+ message is sent to collect statistics for a
51
- * type element from the datapath. This type element can be a flow
52
- * port, queue, or vendor. All stats. request messages share a common header
53
- * followed by additional fields that further describe the request type.
54
- * There is a derived class for each associated type. All stats. requests
55
- * encapsulate their instances as a buffer object that can be converted
56
- * to a packet to be used for transmission.
57
- *
58
- * @see FlowStatsRequest
59
- * @see AggregateStatsRequest
60
- * @see TableStatsRequest
61
- * @see PortStatsRequest
62
- * @see QueueStatsRequest
63
- * @see VendorStatsRequest
64
- *
65
- * @param [Hash] options
66
- * the options to create a message with.
67
- *
68
- * @option options [Number] :transaction_id
69
- * transaction_id for this request or auto-generated if not specified.
70
- *
71
- * @option options [Number] :flags
72
- * flags not defined yet should be set to zero.
73
- *
74
- * @raise [ArgumentError] if supplied transaction_id is not an unsigned 32-bit integer.
75
- *
76
- * @return [StatsRequest]
77
- * an object that encapsulates an +OFPT_STATS_REQUEST+ OpenFlow message.
78
- */
79
- static VALUE
80
- stats_request_init( VALUE self, VALUE options ) {
81
- VALUE transaction_id;
82
- if ( ( transaction_id = rb_hash_aref( options, ID2SYM( rb_intern( "transaction_id" ) ) ) ) != Qnil ) {
83
- if ( rb_funcall( transaction_id, rb_intern( "unsigned_32bit?" ), 0 ) == Qfalse ) {
84
- rb_raise( rb_eArgError, "Transaction ID must be an unsigned 32-bit integer" );
85
- }
86
- }
87
- else {
88
- transaction_id = UINT2NUM( get_transaction_id() );
89
- }
90
- rb_iv_set( self, "@transaction_id", transaction_id );
91
- VALUE flags = rb_hash_aref( options, ID2SYM( rb_intern( "flags" ) ) );
92
- if ( flags == Qnil ) {
93
- flags = UINT2NUM( 0 );
94
- }
95
- rb_iv_set( self, "@flags", flags );
96
- return self;
97
- }
98
-
99
-
100
- static VALUE
101
- subclass_stats_request_init( VALUE self, VALUE options ) {
102
- rb_call_super( 1, &options );
103
- VALUE match = rb_hash_aref( options, ID2SYM( rb_intern( "match" ) ) );
104
- if ( match == Qnil ) {
105
- rb_raise( rb_eArgError, "match option must be specified" );
106
- }
107
- rb_iv_set( self, "@match", match );
108
- VALUE table_id = rb_hash_aref( options, ID2SYM( rb_intern( "table_id" ) ) );
109
- if ( table_id == Qnil ) {
110
- table_id = UINT2NUM( 0xff );
111
- }
112
- rb_iv_set( self, "@table_id", table_id );
113
- VALUE out_port = rb_hash_aref( options, ID2SYM( rb_intern( "out_port" ) ) );
114
- if ( out_port == Qnil ) {
115
- out_port = UINT2NUM( OFPP_NONE );
116
- }
117
- rb_iv_set( self, "@out_port", out_port );
118
- return self;
119
- }
120
-
121
-
122
- static VALUE
123
- desc_stats_request_alloc( VALUE klass ) {
124
- buffer *desc_stats_request = create_desc_stats_request( MY_TRANSACTION_ID, NO_FLAGS );
125
- return Data_Wrap_Struct( klass, NULL, free_buffer, desc_stats_request );
126
- }
127
-
128
-
129
- static VALUE
130
- flow_stats_request_alloc( VALUE klass ) {
131
- buffer *flow_stats_request = create_flow_stats_request( MY_TRANSACTION_ID, NO_FLAGS, MATCH, TABLE_ID, OUT_PORT );
132
- return Data_Wrap_Struct( klass, NULL, free_buffer, flow_stats_request );
133
- }
134
-
135
-
136
- static VALUE
137
- aggregate_stats_request_alloc( VALUE klass ) {
138
- buffer *aggregate_stats_request = create_aggregate_stats_request( MY_TRANSACTION_ID, NO_FLAGS, MATCH, TABLE_ID, OUT_PORT );
139
- return Data_Wrap_Struct( klass, NULL, free_buffer, aggregate_stats_request );
140
- }
141
-
142
-
143
- static VALUE
144
- table_stats_request_alloc( VALUE klass ) {
145
- buffer *table_stats_request = create_table_stats_request( MY_TRANSACTION_ID, NO_FLAGS );
146
- return Data_Wrap_Struct( klass, NULL, free_buffer, table_stats_request );
147
- }
148
-
149
-
150
- static VALUE
151
- port_stats_request_alloc( VALUE klass ) {
152
- uint16_t port_no = 1;
153
- buffer *port_stats_request = create_port_stats_request( MY_TRANSACTION_ID, NO_FLAGS, port_no );
154
- return Data_Wrap_Struct( klass, NULL, free_buffer, port_stats_request );
155
- }
156
-
157
-
158
- static VALUE
159
- queue_stats_request_alloc( VALUE klass ) {
160
- uint32_t queue_id = 10;
161
- uint16_t port_no = 1;
162
- buffer *queue_stats_request = create_queue_stats_request( MY_TRANSACTION_ID, NO_FLAGS, port_no, queue_id );
163
- return Data_Wrap_Struct( klass, NULL, free_buffer, queue_stats_request );
164
- }
165
-
166
-
167
- static VALUE
168
- vendor_stats_request_alloc( VALUE klass ) {
169
- uint16_t length = 128;
170
- buffer *body = alloc_buffer_with_length( length );
171
- void *p = append_back_buffer( body, length );
172
- memset( p, 0xaf, length );
173
- buffer *vendor_stats_request = create_vendor_stats_request( MY_TRANSACTION_ID, VENDOR_STATS_FLAG, VENDOR_ID, body );
174
- return Data_Wrap_Struct( klass, NULL, free_buffer, vendor_stats_request );
175
- }
176
-
177
-
178
- /*
179
- * Transaction ids, message sequence numbers matching requests to replies.
180
- *
181
- * @return [Number] the value of transaction_id.
182
- */
183
- static VALUE
184
- stats_transaction_id( VALUE self ) {
185
- return rb_iv_get( self, "@transaction_id" );
186
- }
187
-
188
-
189
- /*
190
- * Not yet defined. Set to zero.
191
- *
192
- * @return [Number] the value of flags.
193
- */
194
- static VALUE
195
- stats_flags( VALUE self ) {
196
- return rb_iv_get( self, "@flags" );
197
- }
198
-
199
-
200
- /*
201
- * Detailed description of each flow field.
202
- *
203
- * @return [Match] the value of match.
204
- */
205
- static VALUE
206
- stats_match( VALUE self ) {
207
- return rb_iv_get( self, "@match" );
208
- }
209
-
210
-
211
- /*
212
- * An index into array of tables. 0xff for all tables.
213
- *
214
- * @return [Number] the value of table_id.
215
- */
216
- static VALUE
217
- stats_table_id( VALUE self ) {
218
- return rb_iv_get( self, "@table_id" );
219
- }
220
-
221
-
222
- /*
223
- * Requires flow matching if defined.
224
- *
225
- * @return [Number] the value of out_port.
226
- */
227
- static VALUE
228
- stats_out_port( VALUE self ) {
229
- return rb_iv_get( self, "@out_port" );
230
- }
231
-
232
-
233
- /*
234
- * Restrict port statistics to a specific port_no or to all ports.
235
- *
236
- * @return [Number] the value of port_no.
237
- */
238
- static VALUE
239
- stats_port_no( VALUE self ) {
240
- return rb_iv_get( self, "@port_no" );
241
- }
242
-
243
-
244
- /*
245
- * Restrict queue statistics to a specific queue_id or to all queues.
246
- *
247
- * @return [Number] the value of queue_id.
248
- */
249
- static VALUE
250
- stats_queue_id( VALUE self ) {
251
- return rb_iv_get( self, "@queue_id" );
252
- }
253
-
254
-
255
- /*
256
- * Vendor id uniquely assigned for each vendor.
257
- *
258
- * @return [Number] the value of vendor_id.
259
- */
260
- static VALUE
261
- stats_vendor_id( VALUE self ) {
262
- return rb_iv_get( self, "@vendor_id" );
263
- }
264
-
265
-
266
- /*
267
- * Vendor specific data payload.
268
- *
269
- * @return [Array] an array of data payload bytes.
270
- * @return [nil] vendor specific data not found.
271
- */
272
- static VALUE
273
- stats_vendor_data( VALUE self ) {
274
- return rb_iv_get( self, "@data" );
275
- }
276
-
277
-
278
- uint32_t
279
- get_stats_request_num2uint( VALUE self, const char *field ) {
280
- return ( uint32_t ) NUM2UINT( rb_iv_get( self, field ) );
281
- }
282
-
283
-
284
- uint16_t
285
- get_stats_request_num2uint16( VALUE self, const char *field ) {
286
- return ( uint16_t ) NUM2UINT( rb_iv_get( self, field ) );
287
- }
288
-
289
-
290
- uint8_t
291
- get_stats_request_table_id( VALUE self ) {
292
- return ( uint8_t ) NUM2UINT( rb_iv_get( self, "@table_id" ) );
293
- }
294
-
295
-
296
- static VALUE
297
- parse_common_arguments( int argc, VALUE *argv, VALUE self ) {
298
- VALUE options;
299
- if ( !rb_scan_args( argc, argv, "01", &options ) ) {
300
- options = rb_hash_new();
301
- }
302
- rb_call_super( 1, &options );
303
- buffer *message;
304
- Data_Get_Struct( self, buffer, message );
305
- ( ( struct ofp_header * ) ( message->data ) )->xid = htonl( get_stats_request_num2uint( self, "@transaction_id" ) );
306
- struct ofp_stats_request *stats_request;
307
- stats_request = ( struct ofp_stats_request * ) message->data;
308
- stats_request->flags = htons ( get_stats_request_num2uint16( self, "@flags" ) );
309
- return self;
310
- }
311
-
312
-
313
- /*
314
- * A {DescStatsRequest} object instance to request descriptive information of
315
- * OpenFlow switch. Such information includes switch manufacturer, hardware
316
- * revision and serial number
317
- *
318
- * @overload initialize(options={})
319
- *
320
- * @example
321
- * DescStatsRequest.new
322
- * DescStatsRequest.new( :transaction_id => 1234 )
323
- *
324
- * @param [Hash] options
325
- * the options to create a message with.
326
- *
327
- * @option options [Number] :transaction_id
328
- * set the transaction_id as specified or auto-generate it.
329
- *
330
- * @return [DescStatsRequest]
331
- * an object that encapsulates the +OFPT_STATS_REQUEST(OFPST_DESC)+ OpenFlow
332
- * message.
333
- */
334
- static VALUE
335
- desc_stats_request_init( int argc, VALUE *argv, VALUE self ) {
336
- return parse_common_arguments( argc, argv, self );
337
- }
338
-
339
-
340
- /*
341
- * A {FlowStatsRequest} object instance to request flow statistics.
342
- *
343
- * @overload initialize(options={})
344
- * @example
345
- * FlowStatsRequest.new( :match => Match )
346
- * FlowStatsRequest.new( :match => Match, :table_id => 1 )
347
- * FlowStatsRequest.new( :match => Match, :table_id => 1, :out_port => 2 )
348
- *
349
- * @param [Hash] options
350
- * the options to create a message with.
351
- *
352
- * @option options [Match] :match
353
- * a {Match} object to match flow fields with this request.
354
- * This option is mandatory.
355
- *
356
- * @option options [Number] :table_id
357
- * a table id to match and restrict returned results.
358
- * A value of 0xff would return all tables and is set to if not specified.
359
- *
360
- * @option options [Number] :out_port
361
- * a value of +OFPP_NONE+ would match all flow entries and is set to if not
362
- * specified.
363
- *
364
- * @raise [ArgumentError] if option match is not specified.
365
- * @raise [TypeError] if option match is not a Trema::Match object.
366
- *
367
- * @return [FlowStatsRequest]
368
- * an object that encapsulates the +OFPT_STATS_REQUEST(OFPST_FLOW)+ OpenFlow message.
369
- */
370
- static VALUE
371
- flow_stats_request_init( VALUE self, VALUE options ) {
372
- buffer *message;
373
- Data_Get_Struct( self, buffer, message );
374
-
375
- subclass_stats_request_init( self, options );
376
-
377
- ( ( struct ofp_header * ) ( message->data ) )->xid = htonl( get_stats_request_num2uint( self, "@transaction_id" ) );
378
-
379
- struct ofp_stats_request *stats_request;
380
- stats_request = ( struct ofp_stats_request * ) message->data;
381
- struct ofp_flow_stats_request *flow_stats_request;
382
- flow_stats_request = ( struct ofp_flow_stats_request * ) stats_request->body;
383
-
384
- stats_request->flags = htons ( get_stats_request_num2uint16( self, "@flags" ) );
385
-
386
- const struct ofp_match *match;
387
- Data_Get_Struct( rb_iv_get( self, "@match" ), struct ofp_match, match );
388
- hton_match( &flow_stats_request->match, match );
389
- flow_stats_request->table_id = get_stats_request_table_id( self );
390
- flow_stats_request->out_port = htons( get_stats_request_num2uint16( self, "@out_port" ) );
391
- return self;
392
- }
393
-
394
-
395
- /*
396
- * A {AggregateStatsRequest} object instance to request aggregate statistics.
397
- * @overload initialize(options={})
398
- * @example
399
- * AggregateStatsRequest.new( :match => Match )
400
- * AggregateStatsRequest.new( :match => Match, :table_id => 1, :out_port => 2 )
401
- *
402
- * @param [Hash] options
403
- * the options to create a message with.
404
- *
405
- * @option options [Match] :match
406
- * a {Match} object to match flow fields with this request.
407
- * This option is mandatory.
408
- *
409
- * @option options [Number] :table_id
410
- * a table id to match and restrict returned results.
411
- * A value of 0xff would return all tables and is set to if not specified.
412
- *
413
- * @option options [Number] :out_port
414
- * a value of +OFPP_NONE+ would match all flow entries and is set to if not
415
- * specified.
416
- *
417
- * @raise [ArgumentError] if option match is not specified.
418
- * @raise [TypeError] if option match is not a Trema::Match object.
419
- *
420
- * @return [AggregateStatsRequest]
421
- * an object that encapsulates the +OFPT_STATS_REQUEST(OFPST_AGGREGATE)+ OpenFlow message.
422
- */
423
- static VALUE
424
- aggregate_stats_request_init( VALUE self, VALUE options ) {
425
- buffer *message;
426
- Data_Get_Struct( self, buffer, message );
427
-
428
- subclass_stats_request_init( self, options );
429
-
430
- ( ( struct ofp_header * ) ( message->data ) )->xid = htonl( get_stats_request_num2uint( self, "@transaction_id" ) );
431
-
432
- struct ofp_stats_request *stats_request;
433
- stats_request = ( struct ofp_stats_request * ) message->data;
434
- struct ofp_aggregate_stats_request *aggregate_stats_request;
435
- aggregate_stats_request = ( struct ofp_aggregate_stats_request * ) stats_request->body;
436
-
437
- stats_request->flags = htons ( get_stats_request_num2uint16( self, "@flags" ) );
438
-
439
- const struct ofp_match *match;
440
- Data_Get_Struct( rb_iv_get( self, "@match" ), struct ofp_match, match );
441
- hton_match( &aggregate_stats_request->match, match );
442
- aggregate_stats_request->table_id = get_stats_request_table_id( self );
443
- aggregate_stats_request->out_port = htons( get_stats_request_num2uint16( self, "@out_port" ) );
444
- return self;
445
- }
446
-
447
-
448
- /*
449
- * A {TableStatsRequest} object instance to request table statistics.
450
- * Request table statistics. The table stats. request does not contain any data
451
- * in the body.
452
- *
453
- * @overload initialize(options={})
454
- *
455
- * @example
456
- * TableStatsRequest.new
457
- * TableStatsRequest.new( :transaction_id => 1234 )
458
- *
459
- * @param [Hash] options
460
- * the options to create a message with.
461
- *
462
- * @option options [Number] :transaction_id
463
- * set the transaction_id as specified or auto-generate it.
464
- *
465
- * @return [TableStatsRequest]
466
- * an object that encapsulates the +OFPT_STATS_REQUEST(OFPST_TABLE)+ OpenFlow
467
- * message.
468
- */
469
- static VALUE
470
- table_stats_request_init( int argc, VALUE *argv, VALUE self ) {
471
- return parse_common_arguments( argc, argv, self );
472
- }
473
-
474
-
475
- /*
476
- * A {PortStatsRequest} object instance to request port statistics.
477
- * Request port statistics.
478
- *
479
- * @overload initialize(options={})
480
- *
481
- * @example
482
- * PortStatsRequest.new
483
- * PortStatsRequest.new( :port_no => 1 )
484
- *
485
- * @param [Hash] options
486
- * the options to create a message with.
487
- *
488
- * @option options [Number] :port_no
489
- * request statistics for a specific port if specified, otherwise set port_no
490
- * to +OFPP_NONE+ for all ports.
491
- *
492
- * @return [PortStatsRequest]
493
- * an object that encapsulates the +OFPT_STATS_REQUEST(OFPST_PORT)+ OpenFlow
494
- * message.
495
- */
496
- static VALUE
497
- port_stats_request_init( int argc, VALUE *argv, VALUE self ) {
498
- VALUE options;
499
- if ( !rb_scan_args( argc, argv, "01", &options ) ) {
500
- options = rb_hash_new();
501
- }
502
- rb_call_super( 1, &options );
503
- VALUE port_no = rb_hash_aref( options, ID2SYM( rb_intern( "port_no" ) ) );
504
- if ( port_no == Qnil ) {
505
- port_no = UINT2NUM( OFPP_NONE );
506
- }
507
- rb_iv_set( self, "@port_no", port_no );
508
-
509
- buffer *message;
510
- Data_Get_Struct( self, buffer, message );
511
- ( ( struct ofp_header * ) ( message->data ) )->xid = htonl( get_stats_request_num2uint( self, "@transaction_id" ) );
512
- struct ofp_stats_request *stats_request;
513
- stats_request = ( struct ofp_stats_request * ) message->data;
514
- stats_request->flags = htons ( get_stats_request_num2uint16( self, "@flags" ) );
515
- struct ofp_port_stats_request *port_stats_request = ( struct ofp_port_stats_request * ) stats_request->body;
516
- port_stats_request->port_no = htons( get_stats_request_num2uint16( self, "@port_no" ) );
517
- return self;
518
- }
519
-
520
-
521
- /*
522
- * A {QueueStatsRequest} object instance to request queue statistics.
523
- * Request queue statistics.
524
- *
525
- * @overload initialize(options={})
526
- *
527
- * @example
528
- * QueueStatsRequest.new
529
- * QueueStatsRequest.new( :port_no => 1, :queue_id => 123 )
530
- * QueueStatsRequest.new( :port_no => 1 )
531
- * QueueStatsRequest.new( :queue_id => 123 )
532
- *
533
- * @param [Hash] options
534
- * the options to create a message with.
535
- *
536
- * @option options [Number] :port_no
537
- * request statistics for a specific port if specified, otherwise set port_no
538
- * to +OFPP_ALL+ for all ports.
539
- *
540
- * @option options [Number] :queue_id
541
- * request statistics for a specific queue_id or set queue_id to +OFPQ_ALL+
542
- * for all queues.
543
- *
544
- * @return [QueueStatsRequest]
545
- * an object that encapsulates the +OFPT_STATS_REQUEST(OFPST_QUEUE)+ OpenFlow
546
- * message.
547
- */
548
- static VALUE
549
- queue_stats_request_init( int argc, VALUE *argv, VALUE self ) {
550
- VALUE options;
551
- if ( !rb_scan_args( argc, argv, "01", &options ) ) {
552
- options = rb_hash_new();
553
- }
554
- rb_call_super( 1, &options );
555
- VALUE port_no = rb_hash_aref( options, ID2SYM( rb_intern( "port_no" ) ) );
556
- if ( port_no == Qnil ) {
557
- port_no = UINT2NUM( OFPP_ALL );
558
- }
559
- rb_iv_set( self, "@port_no", port_no );
560
- VALUE queue_id = rb_hash_aref( options, ID2SYM( rb_intern( "queue_id" ) ) );
561
- if ( queue_id == Qnil ) {
562
- queue_id = UINT2NUM( OFPQ_ALL );
563
- }
564
- rb_iv_set( self, "@queue_id", queue_id );
565
-
566
-
567
- buffer *message;
568
- Data_Get_Struct( self, buffer, message );
569
- ( ( struct ofp_header * ) ( message->data ) )->xid = htonl( get_stats_request_num2uint( self, "@transaction_id" ) );
570
- struct ofp_stats_request *stats_request;
571
- stats_request = ( struct ofp_stats_request * ) message->data;
572
- stats_request->flags = htons ( get_stats_request_num2uint16( self, "@flags" ) );
573
-
574
- stats_request = ( struct ofp_stats_request * ) message->data;
575
- struct ofp_queue_stats_request *queue_stats_request;
576
- queue_stats_request = ( struct ofp_queue_stats_request * ) stats_request->body;
577
- queue_stats_request->port_no = htons( get_stats_request_num2uint16( self, "@port_no" ) );
578
- queue_stats_request->queue_id = htonl( get_stats_request_num2uint( self, "@queue_id" ) );
579
- return self;
580
- }
581
-
582
-
583
- /*
584
- * A {VendorStatsRequest} object instance to request vendor statistics.
585
- * Request vendor specific statistics.
586
- *
587
- * @overload initialize(options={})
588
- *
589
- * @example
590
- * VendorStatsRequest.new
591
- * VendorStatsRequest.new(
592
- * :vendor_id => 123,
593
- * :data => "deadbeef".unpack( "C*" )
594
- * )
595
- *
596
- * @param [Hash] options
597
- * the options to create a message with.
598
- *
599
- * @option options [Number] :vendor_id
600
- * request statistics for a specific vendor_id, otherwise set vendor_id
601
- * to a default value of 0x00004cff.
602
- *
603
- * @option options [Array] :data
604
- * a String that holds vendor's defined arbitrary length data.
605
- *
606
- * @return [VendorStatsRequest]
607
- * an object that encapsulates the +OFPT_STATS_REQUEST(OFPST_VENDOR)+ OpenFlow
608
- * message.
609
- */
610
- static VALUE
611
- vendor_stats_request_init( int argc, VALUE *argv, VALUE self ) {
612
- VALUE options;
613
-
614
- if ( !rb_scan_args( argc, argv, "01", &options ) ) {
615
- options = rb_hash_new();
616
- }
617
- rb_call_super( 1, &options );
618
- VALUE vendor_id = rb_hash_aref( options, ID2SYM( rb_intern( "vendor_id" ) ) );
619
- if ( vendor_id == Qnil ) {
620
- vendor_id = UINT2NUM( 0x00004cff );
621
- }
622
- rb_iv_set( self, "@vendor_id", vendor_id );
623
- buffer *message;
624
- Data_Get_Struct( self, buffer, message );
625
- ( ( struct ofp_header * ) ( message->data ) )->xid = htonl( get_stats_request_num2uint( self, "@transaction_id" ) );
626
- struct ofp_stats_request *stats_request;
627
- stats_request = ( struct ofp_stats_request * ) message->data;
628
- stats_request->flags = htons ( get_stats_request_num2uint16( self, "@flags" ) );
629
- uint32_t *vendor;
630
- vendor = ( uint32_t * ) stats_request->body;
631
- *vendor = htonl( get_stats_request_num2uint( self, "@vendor_id" ) );
632
-
633
- VALUE ary = rb_hash_aref( options, ID2SYM( rb_intern( "data" ) ) );
634
- message->length = offsetof( struct ofp_stats_request, body ) + sizeof( uint32_t );
635
- if ( ary != Qnil ) {
636
- rb_iv_set( self, "@data", ary );
637
- Check_Type( ary, T_ARRAY );
638
- uint16_t ary_len = ( uint16_t ) RARRAY_LEN( ary );
639
- uint8_t *data = append_back_buffer( message, ary_len );
640
- for ( int i = 0; i < ary_len; i++ ) {
641
- data[ i ] = ( uint8_t ) FIX2INT( RARRAY_PTR( ary )[ i ] );
642
- }
643
- }
644
- set_length( message, ( uint16_t ) message->length );
645
- return self;
646
- }
647
-
648
-
649
- /*
650
- * Document-class: Trema::StatsRequest
651
- * Document-class: Trema::DescStatsRequest
652
- * Document-class: Trema::FlowStatsRequest
653
- * Document-class: Trema::AggregateStatsRequest
654
- * Document-class: Trema::TableStatsRequest
655
- * Document-class: Trema::PortStatsRequest
656
- * Document-class: Trema::QueueStatsRequest
657
- * Document-class: Trema::VendorStatsRequest
658
- */
659
- void
660
- Init_stats_request() {
661
- mTrema = rb_eval_string( "Trema" );
662
- cStatsRequest = rb_define_class_under( mTrema, "StatsRequest", rb_cObject );
663
-
664
- cDescStatsRequest = rb_define_class_under( mTrema, "DescStatsRequest", cStatsRequest );
665
- rb_define_alloc_func( cDescStatsRequest, desc_stats_request_alloc );
666
- rb_define_method( cDescStatsRequest, "initialize", desc_stats_request_init, -1 );
667
-
668
- cFlowStatsRequest = rb_define_class_under( mTrema, "FlowStatsRequest", cStatsRequest );
669
- rb_define_method( cStatsRequest, "initialize", stats_request_init, 1 );
670
- rb_define_method( cStatsRequest, "transaction_id", stats_transaction_id, 0 );
671
- rb_alias( cStatsRequest, rb_intern( "xid" ), rb_intern( "transaction_id" ) );
672
- rb_define_method( cStatsRequest, "flags", stats_flags, 0 );
673
-
674
- rb_define_alloc_func( cFlowStatsRequest, flow_stats_request_alloc );
675
- rb_define_method( cFlowStatsRequest, "initialize", flow_stats_request_init, 1 );
676
- rb_define_method( cFlowStatsRequest, "match", stats_match, 0 );
677
- rb_define_method( cFlowStatsRequest, "table_id", stats_table_id, 0 );
678
- rb_define_method( cFlowStatsRequest, "out_port", stats_out_port, 0 );
679
-
680
- cAggregateStatsRequest = rb_define_class_under( mTrema, "AggregateStatsRequest", cStatsRequest );
681
- rb_define_alloc_func( cAggregateStatsRequest, aggregate_stats_request_alloc );
682
- rb_define_method( cAggregateStatsRequest, "initialize", aggregate_stats_request_init, 1 );
683
- rb_define_method( cAggregateStatsRequest, "match", stats_match, 0 );
684
- rb_define_method( cAggregateStatsRequest, "table_id", stats_table_id, 0 );
685
- rb_define_method( cAggregateStatsRequest, "out_port", stats_out_port, 0 );
686
-
687
- cTableStatsRequest = rb_define_class_under( mTrema, "TableStatsRequest", cStatsRequest );
688
- rb_define_alloc_func( cTableStatsRequest, table_stats_request_alloc );
689
- rb_define_method( cTableStatsRequest, "initialize", table_stats_request_init, -1 );
690
-
691
- cPortStatsRequest = rb_define_class_under( mTrema, "PortStatsRequest", cStatsRequest );
692
- rb_define_alloc_func( cPortStatsRequest, port_stats_request_alloc );
693
- rb_define_method( cPortStatsRequest, "initialize", port_stats_request_init, -1 );
694
- rb_define_method( cPortStatsRequest, "port_no", stats_port_no, 0 );
695
-
696
- cQueueStatsRequest = rb_define_class_under( mTrema, "QueueStatsRequest", cStatsRequest );
697
- rb_define_alloc_func( cQueueStatsRequest, queue_stats_request_alloc );
698
- rb_define_method( cQueueStatsRequest, "initialize", queue_stats_request_init, -1 );
699
- rb_define_method( cQueueStatsRequest, "port_no", stats_port_no, 0 );
700
- rb_define_method( cQueueStatsRequest, "queue_id", stats_queue_id, 0 );
701
-
702
- cVendorStatsRequest = rb_define_class_under( mTrema, "VendorStatsRequest", cStatsRequest );
703
- rb_define_alloc_func( cVendorStatsRequest, vendor_stats_request_alloc );
704
- rb_define_method( cVendorStatsRequest, "initialize", vendor_stats_request_init, -1 );
705
- rb_define_method( cVendorStatsRequest, "vendor_id", stats_vendor_id, 0 );
706
- rb_define_method( cVendorStatsRequest, "data", stats_vendor_data, 0 );
707
- }
708
-
709
-
710
- /*
711
- * Local variables:
712
- * c-basic-offset: 2
713
- * indent-tabs-mode: nil
714
- * End:
715
- */