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.
- checksums.yaml +4 -4
- data/.gitignore +33 -54
- data/.hound.yml +3 -0
- data/.rspec +3 -0
- data/.rubocop.yml +17 -1
- data/.travis.yml +14 -18
- data/CHANGELOG.md +10 -0
- data/Gemfile +1 -26
- data/README.md +25 -241
- data/Rakefile +4 -1056
- data/bin/.gitignore +3 -0
- data/bin/trema +163 -237
- data/features/cleanup_on_failure.feature +118 -0
- data/features/logging.feature +73 -0
- data/features/open_flow13.feature +21 -0
- data/features/step_definitions/.gitignore +35 -0
- data/features/step_definitions/.rubocop.yml +5 -0
- data/features/step_definitions/.travis.yml +19 -0
- data/features/step_definitions/Gemfile +9 -0
- data/features/step_definitions/Guardfile +4 -0
- data/features/step_definitions/LICENSE +675 -0
- data/features/step_definitions/README.md +7 -0
- data/features/step_definitions/Rakefile +10 -0
- data/features/step_definitions/show_stats_steps.rb +56 -0
- data/features/step_definitions/virtual_link_steps.rb +8 -0
- data/features/support/env.rb +0 -73
- data/features/support/hooks.rb +6 -50
- data/features/trema_delete_link.feature +30 -0
- data/features/trema_killall.feature +56 -0
- data/features/trema_run.feature +47 -0
- data/features/trema_start.feature +73 -0
- data/features/trema_stop.feature +50 -0
- data/lib/trema.rb +4 -0
- data/lib/trema/command.rb +184 -0
- data/lib/trema/controller.rb +289 -0
- data/lib/trema/dirs.rb +14 -0
- data/lib/trema/drb.rb +32 -0
- data/lib/trema/logger.rb +63 -0
- data/lib/trema/monkey_patch/integer.rb +8 -0
- data/lib/trema/monkey_patch/integer/base_conversions.rb +12 -0
- data/lib/trema/monkey_patch/integer/durations.rb +12 -0
- data/lib/trema/switch.rb +83 -0
- data/lib/trema/version.rb +5 -0
- data/spec/spec_helper.rb +9 -178
- data/spec/trema/controller_spec.rb +4 -53
- data/tasks/.gitignore +34 -0
- data/tasks/LICENSE +675 -0
- data/tasks/README.md +6 -0
- data/tasks/cucumber.rake +14 -0
- data/tasks/flay.rake +15 -0
- data/tasks/flog.rake +25 -0
- data/tasks/gem.rake +15 -0
- data/tasks/reek.rake +11 -0
- data/tasks/relish.rake +8 -0
- data/tasks/rspec.rake +8 -0
- data/tasks/rubocop.rake +2 -16
- data/tasks/yard.rake +11 -0
- data/trema.gemspec +24 -23
- metadata +180 -720
- data/.yardopts +0 -4
- data/Doxyfile +0 -1679
- data/Guardfile +0 -14
- data/bin/quality +0 -31
- data/bin/trema-config +0 -59
- data/build.rb +0 -32
- data/cruise.rb +0 -409
- data/features/.nav +0 -50
- data/features/README.md +0 -7
- data/features/core/get_pid_by_trema_name.feature +0 -137
- data/features/core/packetin_filter.feature +0 -55
- data/features/core/switch_manager.feature +0 -41
- data/features/core/trema-config.feature +0 -55
- data/features/dsl/switch_port_specifier.feature +0 -15
- data/features/examples/dumper.feature +0 -35
- data/features/examples/hello_trema.feature +0 -23
- data/features/examples/learning_switch.feature +0 -37
- data/features/examples/list_switches.feature +0 -24
- data/features/examples/message.set_config.feature +0 -27
- data/features/examples/message.vendor-action.feature +0 -25
- data/features/examples/message.vendor-stats-request.feature +0 -20
- data/features/examples/multi_learning_switch.feature +0 -107
- data/features/examples/openflow_message.echo.feature +0 -59
- data/features/examples/openflow_message.features_request.feature +0 -35
- data/features/examples/openflow_message.hello.feature +0 -59
- data/features/examples/packet_in.feature +0 -33
- data/features/examples/packetin_filter_config.feature +0 -95
- data/features/examples/patch_panel.feature +0 -29
- data/features/examples/repeater_hub.feature +0 -52
- data/features/examples/switch_info.feature +0 -51
- data/features/examples/switch_monitor.feature +0 -35
- data/features/examples/transparent_firewall.feature +0 -73
- data/features/handlers/switch_ready.feature +0 -40
- data/features/step_definitions/misc_steps.rb +0 -85
- data/features/step_definitions/send_packets_steps.rb +0 -33
- data/features/step_definitions/stats_steps.rb +0 -39
- data/features/switch_event/C-add_forward_entry.feature +0 -114
- data/features/switch_event/C-delete_forward_entry.feature +0 -85
- data/features/switch_event/C-dump_forward_entries.feature +0 -72
- data/features/switch_event/C-set_forward_entries.feature +0 -77
- data/features/switch_event/README.md +0 -40
- data/features/switch_event/add_forward_entry.feature +0 -160
- data/features/switch_event/delete_forward_entry.feature +0 -160
- data/features/switch_event/dump_forward_entries.feature +0 -103
- data/features/switch_event/set_forward_entries.feature +0 -102
- data/features/trema_commands/README.md +0 -8
- data/features/trema_commands/dump_flows.feature +0 -41
- data/features/trema_commands/help.feature +0 -27
- data/features/trema_commands/help_option.feature +0 -20
- data/features/trema_commands/kill.feature +0 -56
- data/features/trema_commands/killall.feature +0 -32
- data/features/trema_commands/port_down.feature +0 -71
- data/features/trema_commands/port_up.feature +0 -75
- data/features/trema_commands/reset_stats.feature +0 -56
- data/features/trema_commands/run.feature +0 -56
- data/features/trema_commands/send_packets.feature +0 -46
- data/features/trema_commands/show_stats.feature +0 -66
- data/features/trema_commands/up.feature +0 -34
- data/features/trema_commands/version.feature +0 -10
- data/features/trema_commands/version_option.feature +0 -8
- data/rubocop-todo.yml +0 -159
- data/ruby/.gitignore +0 -4
- data/ruby/blocker.rb +0 -74
- data/ruby/extconf.rb +0 -80
- data/ruby/sub-process.rb +0 -289
- data/ruby/trema/action-common.c +0 -46
- data/ruby/trema/action-common.h +0 -38
- data/ruby/trema/action.rb +0 -33
- data/ruby/trema/aggregate-stats-reply.rb +0 -68
- data/ruby/trema/app.rb +0 -114
- data/ruby/trema/barrier-reply.c +0 -98
- data/ruby/trema/barrier-reply.h +0 -44
- data/ruby/trema/barrier-request.c +0 -135
- data/ruby/trema/barrier-request.h +0 -42
- data/ruby/trema/cli.rb +0 -267
- data/ruby/trema/command.rb +0 -41
- data/ruby/trema/command/dump_flows.rb +0 -43
- data/ruby/trema/command/kill.rb +0 -75
- data/ruby/trema/command/killall.rb +0 -38
- data/ruby/trema/command/netns.rb +0 -38
- data/ruby/trema/command/port_down.rb +0 -43
- data/ruby/trema/command/port_up.rb +0 -43
- data/ruby/trema/command/reset_stats.rb +0 -41
- data/ruby/trema/command/ruby.rb +0 -38
- data/ruby/trema/command/run.rb +0 -110
- data/ruby/trema/command/send_packets.rb +0 -46
- data/ruby/trema/command/shell.rb +0 -57
- data/ruby/trema/command/show_stats.rb +0 -65
- data/ruby/trema/command/up.rb +0 -44
- data/ruby/trema/command/version.rb +0 -35
- data/ruby/trema/compat.h +0 -36
- data/ruby/trema/controller.c +0 -691
- data/ruby/trema/controller.h +0 -42
- data/ruby/trema/controller.rb +0 -255
- data/ruby/trema/custom-switch.rb +0 -56
- data/ruby/trema/daemon.rb +0 -184
- data/ruby/trema/default-logger.c +0 -161
- data/ruby/trema/default-logger.h +0 -42
- data/ruby/trema/default-logger.rb +0 -29
- data/ruby/trema/default_openflow_channel_port.rb +0 -26
- data/ruby/trema/desc-stats-reply.rb +0 -75
- data/ruby/trema/dsl.rb +0 -32
- data/ruby/trema/dsl/configuration.rb +0 -145
- data/ruby/trema/dsl/context.rb +0 -69
- data/ruby/trema/dsl/custom-switch.rb +0 -44
- data/ruby/trema/dsl/link.rb +0 -39
- data/ruby/trema/dsl/netns.rb +0 -78
- data/ruby/trema/dsl/parser.rb +0 -70
- data/ruby/trema/dsl/rswitch.rb +0 -47
- data/ruby/trema/dsl/run.rb +0 -47
- data/ruby/trema/dsl/runner.rb +0 -178
- data/ruby/trema/dsl/stanza.rb +0 -51
- data/ruby/trema/dsl/switch.rb +0 -76
- data/ruby/trema/dsl/syntax-error.rb +0 -31
- data/ruby/trema/dsl/syntax.rb +0 -128
- data/ruby/trema/dsl/vhost.rb +0 -106
- data/ruby/trema/dsl/vswitch.rb +0 -45
- data/ruby/trema/echo-reply.c +0 -122
- data/ruby/trema/echo-reply.h +0 -40
- data/ruby/trema/echo-request.c +0 -117
- data/ruby/trema/echo-request.h +0 -40
- data/ruby/trema/echo.c +0 -99
- data/ruby/trema/echo.h +0 -39
- data/ruby/trema/enqueue.rb +0 -87
- data/ruby/trema/error.c +0 -262
- data/ruby/trema/error.h +0 -42
- data/ruby/trema/exact-match.rb +0 -34
- data/ruby/trema/executables.rb +0 -99
- data/ruby/trema/features-reply.c +0 -330
- data/ruby/trema/features-reply.h +0 -54
- data/ruby/trema/features-request.c +0 -134
- data/ruby/trema/features-request.h +0 -42
- data/ruby/trema/flow-mod.c +0 -150
- data/ruby/trema/flow-mod.h +0 -42
- data/ruby/trema/flow-removed.c +0 -280
- data/ruby/trema/flow-removed.h +0 -44
- data/ruby/trema/flow-stats-reply.rb +0 -107
- data/ruby/trema/flow.rb +0 -65
- data/ruby/trema/get-config-reply.c +0 -158
- data/ruby/trema/get-config-reply.h +0 -50
- data/ruby/trema/get-config-request.c +0 -136
- data/ruby/trema/get-config-request.h +0 -42
- data/ruby/trema/hardware-switch.rb +0 -86
- data/ruby/trema/hello.c +0 -133
- data/ruby/trema/hello.h +0 -42
- data/ruby/trema/host.rb +0 -263
- data/ruby/trema/link.rb +0 -177
- data/ruby/trema/list-switches-reply.c +0 -44
- data/ruby/trema/list-switches-reply.h +0 -38
- data/ruby/trema/mac.rb +0 -29
- data/ruby/trema/match.c +0 -621
- data/ruby/trema/match.h +0 -34
- data/ruby/trema/monkey-patch/integer.rb +0 -35
- data/ruby/trema/monkey-patch/integer/base-conversions.rb +0 -34
- data/ruby/trema/monkey-patch/integer/ranges.rb +0 -49
- data/ruby/trema/monkey-patch/integer/validators.rb +0 -36
- data/ruby/trema/monkey-patch/module.rb +0 -33
- data/ruby/trema/monkey-patch/module/class-method.rb +0 -38
- data/ruby/trema/monkey-patch/module/deprecation.rb +0 -39
- data/ruby/trema/monkey-patch/string.rb +0 -31
- data/ruby/trema/monkey-patch/string/inflectors.rb +0 -52
- data/ruby/trema/netns.rb +0 -127
- data/ruby/trema/network-component.rb +0 -151
- data/ruby/trema/ofctl.rb +0 -70
- data/ruby/trema/open-vswitch.rb +0 -160
- data/ruby/trema/openflow-error.c +0 -193
- data/ruby/trema/openflow-error.h +0 -51
- data/ruby/trema/openflow-switch.rb +0 -35
- data/ruby/trema/ordered-hash.rb +0 -75
- data/ruby/trema/packet-in.c +0 -1365
- data/ruby/trema/packet-in.h +0 -44
- data/ruby/trema/packet-queue.rb +0 -181
- data/ruby/trema/packetin-filter.rb +0 -124
- data/ruby/trema/path.rb +0 -85
- data/ruby/trema/phost.rb +0 -76
- data/ruby/trema/port-mod.c +0 -232
- data/ruby/trema/port-mod.h +0 -34
- data/ruby/trema/port-stats-reply.rb +0 -109
- data/ruby/trema/port-status-add.rb +0 -60
- data/ruby/trema/port-status-delete.rb +0 -60
- data/ruby/trema/port-status-modify.rb +0 -60
- data/ruby/trema/port-status.c +0 -192
- data/ruby/trema/port-status.h +0 -41
- data/ruby/trema/port.c +0 -398
- data/ruby/trema/port.h +0 -45
- data/ruby/trema/process.rb +0 -103
- data/ruby/trema/queue-get-config-reply.c +0 -205
- data/ruby/trema/queue-get-config-reply.h +0 -45
- data/ruby/trema/queue-get-config-request.c +0 -141
- data/ruby/trema/queue-get-config-request.h +0 -42
- data/ruby/trema/queue-stats-reply.rb +0 -76
- data/ruby/trema/ruby-switch.rb +0 -62
- data/ruby/trema/send-out-port.rb +0 -113
- data/ruby/trema/set-config.c +0 -174
- data/ruby/trema/set-config.h +0 -42
- data/ruby/trema/set-eth-addr.rb +0 -54
- data/ruby/trema/set-eth-dst-addr.rb +0 -52
- data/ruby/trema/set-eth-src-addr.rb +0 -53
- data/ruby/trema/set-ip-addr.rb +0 -54
- data/ruby/trema/set-ip-dst-addr.rb +0 -53
- data/ruby/trema/set-ip-src-addr.rb +0 -52
- data/ruby/trema/set-ip-tos.rb +0 -64
- data/ruby/trema/set-transport-dst-port.rb +0 -53
- data/ruby/trema/set-transport-port.rb +0 -53
- data/ruby/trema/set-transport-src-port.rb +0 -54
- data/ruby/trema/set-vlan-priority.rb +0 -66
- data/ruby/trema/set-vlan-vid.rb +0 -65
- data/ruby/trema/shell.rb +0 -37
- data/ruby/trema/shell/down.rb +0 -37
- data/ruby/trema/shell/killall.rb +0 -38
- data/ruby/trema/shell/link.rb +0 -59
- data/ruby/trema/shell/reset_stats.rb +0 -49
- data/ruby/trema/shell/run.rb +0 -67
- data/ruby/trema/shell/send_packets.rb +0 -40
- data/ruby/trema/shell/show_stats.rb +0 -47
- data/ruby/trema/shell/up.rb +0 -41
- data/ruby/trema/shell/vhost.rb +0 -42
- data/ruby/trema/shell/vswitch.rb +0 -47
- data/ruby/trema/stats-helper.rb +0 -63
- data/ruby/trema/stats-reply.c +0 -540
- data/ruby/trema/stats-reply.h +0 -51
- data/ruby/trema/stats-request.c +0 -715
- data/ruby/trema/stats-request.h +0 -40
- data/ruby/trema/strip-vlan-header.rb +0 -41
- data/ruby/trema/switch-daemon.rb +0 -90
- data/ruby/trema/switch-disconnected.c +0 -38
- data/ruby/trema/switch-disconnected.h +0 -36
- data/ruby/trema/switch-event.c +0 -648
- data/ruby/trema/switch-event.h +0 -27
- data/ruby/trema/switch-manager.rb +0 -119
- data/ruby/trema/switch.c +0 -197
- data/ruby/trema/switch.h +0 -40
- data/ruby/trema/switch.rb +0 -56
- data/ruby/trema/table-stats-reply.rb +0 -85
- data/ruby/trema/timers.rb +0 -95
- data/ruby/trema/trema-ruby-utils.c +0 -66
- data/ruby/trema/trema-ruby-utils.h +0 -42
- data/ruby/trema/trema.c +0 -126
- data/ruby/trema/tremashark.rb +0 -46
- data/ruby/trema/util.rb +0 -116
- data/ruby/trema/vendor-action.rb +0 -82
- data/ruby/trema/vendor-stats-reply.rb +0 -64
- data/ruby/trema/vendor.c +0 -230
- data/ruby/trema/vendor.h +0 -48
- data/ruby/trema/version.rb +0 -28
- data/spec/support/action.rb +0 -49
- data/spec/support/mandatory-option.rb +0 -53
- data/spec/support/matchers/constant.rb +0 -25
- data/spec/support/openflow-message.rb +0 -173
- data/spec/support/port-status.rb +0 -35
- data/spec/trema/app_spec.rb +0 -88
- data/spec/trema/barrier-reply_spec.rb +0 -43
- data/spec/trema/barrier-request_spec.rb +0 -92
- data/spec/trema/cli_spec.rb +0 -156
- data/spec/trema/default-logger_spec.rb +0 -46
- data/spec/trema/dsl/configuration_spec.rb +0 -120
- data/spec/trema/dsl/link_spec.rb +0 -50
- data/spec/trema/dsl/run_spec.rb +0 -72
- data/spec/trema/dsl/runner_spec.rb +0 -247
- data/spec/trema/dsl/switch_spec.rb +0 -69
- data/spec/trema/dsl/syntax_spec.rb +0 -110
- data/spec/trema/dsl/vhost_spec.rb +0 -144
- data/spec/trema/dsl/vswitch_spec.rb +0 -80
- data/spec/trema/echo-reply_spec.rb +0 -84
- data/spec/trema/echo-request_spec.rb +0 -128
- data/spec/trema/enqueue_spec.rb +0 -76
- data/spec/trema/error_spec.rb +0 -81
- data/spec/trema/executables_spec.rb +0 -54
- data/spec/trema/features-reply_spec.rb +0 -91
- data/spec/trema/features-request_spec.rb +0 -93
- data/spec/trema/flow-mod_spec.rb +0 -99
- data/spec/trema/flow-removed_spec.rb +0 -144
- data/spec/trema/get-config-reply_spec.rb +0 -43
- data/spec/trema/get-config-request_spec.rb +0 -92
- data/spec/trema/hardware-switch_spec.rb +0 -54
- data/spec/trema/hello_spec.rb +0 -63
- data/spec/trema/host_spec.rb +0 -191
- data/spec/trema/link_spec.rb +0 -62
- data/spec/trema/list-switches-reply_spec.rb +0 -46
- data/spec/trema/match_spec.rb +0 -111
- data/spec/trema/open-vswitch_spec.rb +0 -121
- data/spec/trema/openflow-error_spec.rb +0 -141
- data/spec/trema/packet-in_spec.rb +0 -717
- data/spec/trema/packet-out_spec.rb +0 -125
- data/spec/trema/packetin-filter_spec.rb +0 -39
- data/spec/trema/port-mod_spec.rb +0 -98
- data/spec/trema/port-status-add_spec.rb +0 -32
- data/spec/trema/port-status-delete_spec.rb +0 -32
- data/spec/trema/port-status-modify_spec.rb +0 -71
- data/spec/trema/port-status_spec.rb +0 -38
- data/spec/trema/port_spec.rb +0 -59
- data/spec/trema/process_spec.rb +0 -69
- data/spec/trema/queue-get-config-reply_spec.rb +0 -65
- data/spec/trema/queue-get-config-request_spec.rb +0 -67
- data/spec/trema/send-out-port_spec.rb +0 -106
- data/spec/trema/set-config_spec.rb +0 -78
- data/spec/trema/set-eth-addr_spec.rb +0 -62
- data/spec/trema/set-ip-addr_spec.rb +0 -81
- data/spec/trema/set-ip-tos_spec.rb +0 -70
- data/spec/trema/set-transport-dst-port_spec.rb +0 -65
- data/spec/trema/set-transport-src-port_spec.rb +0 -65
- data/spec/trema/set-vlan-priority_spec.rb +0 -65
- data/spec/trema/set-vlan-vid_spec.rb +0 -65
- data/spec/trema/shell/vhost_spec.rb +0 -58
- data/spec/trema/shell/vswitch_spec.rb +0 -87
- data/spec/trema/stats-reply_spec.rb +0 -363
- data/spec/trema/stats-request_spec.rb +0 -166
- data/spec/trema/strip-vlan-header_spec.rb +0 -44
- data/spec/trema/switch-daemon_spec.rb +0 -81
- data/spec/trema/switch-disconnected_spec.rb +0 -56
- data/spec/trema/switch-manager_spec.rb +0 -41
- data/spec/trema/tremashark_spec.rb +0 -39
- data/spec/trema/util_spec.rb +0 -88
- data/spec/trema/vendor-action_spec.rb +0 -75
- data/spec/trema/vendor_spec.rb +0 -76
- data/spec/trema_spec.rb +0 -94
- data/src/examples/cbench_switch/README +0 -21
- data/src/examples/cbench_switch/cbench-switch.rb +0 -38
- data/src/examples/cbench_switch/cbench_switch.c +0 -66
- data/src/examples/dumper/dumper.c +0 -362
- data/src/examples/dumper/dumper.conf +0 -7
- data/src/examples/dumper/dumper.rb +0 -195
- data/src/examples/hello_trema/.gitignore +0 -2
- data/src/examples/hello_trema/README.md +0 -2
- data/src/examples/hello_trema/hello-trema.rb +0 -30
- data/src/examples/hello_trema/hello_trema.c +0 -48
- data/src/examples/hello_trema/sample.conf +0 -1
- data/src/examples/learning_switch/README +0 -15
- data/src/examples/learning_switch/fdb.rb +0 -110
- data/src/examples/learning_switch/learning-switch.rb +0 -90
- data/src/examples/learning_switch/learning_switch.c +0 -217
- data/src/examples/learning_switch/learning_switch.conf +0 -18
- data/src/examples/list_switches/README +0 -19
- data/src/examples/list_switches/list-switches.rb +0 -43
- data/src/examples/list_switches/list_switches.c +0 -79
- data/src/examples/list_switches/list_switches.conf +0 -15
- data/src/examples/match_compare/match-compare.conf +0 -30
- data/src/examples/match_compare/match-compare.rb +0 -97
- data/src/examples/multi_learning_switch/README +0 -14
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +0 -94
- data/src/examples/multi_learning_switch/multi_learning_switch.c +0 -294
- data/src/examples/multi_learning_switch/multi_learning_switch.conf +0 -17
- data/src/examples/openflow_message/README +0 -11
- data/src/examples/openflow_message/echo.c +0 -80
- data/src/examples/openflow_message/echo.rb +0 -56
- data/src/examples/openflow_message/example.rb +0 -60
- data/src/examples/openflow_message/features-request.rb +0 -96
- data/src/examples/openflow_message/features_request.c +0 -167
- data/src/examples/openflow_message/hello.c +0 -68
- data/src/examples/openflow_message/hello.rb +0 -43
- data/src/examples/openflow_message/set-config.rb +0 -57
- data/src/examples/openflow_message/set_config.c +0 -68
- data/src/examples/openflow_message/vendor-action.rb +0 -43
- data/src/examples/openflow_message/vendor-stats-request.rb +0 -66
- data/src/examples/openflow_message/vendor_action.c +0 -103
- data/src/examples/openflow_switch/echo_switch.c +0 -89
- data/src/examples/openflow_switch/hello_switch.c +0 -85
- data/src/examples/packet_in/README +0 -15
- data/src/examples/packet_in/packet-in.rb +0 -37
- data/src/examples/packet_in/packet_in.c +0 -53
- data/src/examples/packet_in/packet_in.conf +0 -15
- data/src/examples/packetin_filter_config/README +0 -12
- data/src/examples/packetin_filter_config/add_filter.c +0 -71
- data/src/examples/packetin_filter_config/delete_filter.c +0 -63
- data/src/examples/packetin_filter_config/delete_filter_strict.c +0 -73
- data/src/examples/packetin_filter_config/dump_filter.c +0 -63
- data/src/examples/packetin_filter_config/dump_filter_strict.c +0 -73
- data/src/examples/packetin_filter_config/packetin_filter_config.c +0 -132
- data/src/examples/packetin_filter_config/packetin_filter_config.conf +0 -7
- data/src/examples/packetin_filter_config/utils.c +0 -100
- data/src/examples/packetin_filter_config/utils.h +0 -40
- data/src/examples/patch_panel/network.conf +0 -14
- data/src/examples/patch_panel/patch-panel.conf +0 -1
- data/src/examples/patch_panel/patch-panel.rb +0 -59
- data/src/examples/repeater_hub/README +0 -8
- data/src/examples/repeater_hub/repeater-hub.rb +0 -41
- data/src/examples/repeater_hub/repeater-hub_spec.rb +0 -154
- data/src/examples/repeater_hub/repeater_hub.c +0 -81
- data/src/examples/repeater_hub/repeater_hub.conf +0 -28
- data/src/examples/simple_router/README +0 -18
- data/src/examples/simple_router/arp-table.rb +0 -81
- data/src/examples/simple_router/interface.rb +0 -90
- data/src/examples/simple_router/routing-table.rb +0 -60
- data/src/examples/simple_router/simple-router.rb +0 -191
- data/src/examples/simple_router/simple_router.conf +0 -24
- data/src/examples/simple_router/simple_router_netns.conf +0 -15
- data/src/examples/simple_router/simple_router_network.conf +0 -6
- data/src/examples/switch_event_config/.gitignore +0 -6
- data/src/examples/switch_event_config/add_forward_entry.c +0 -227
- data/src/examples/switch_event_config/delete_forward_entry.c +0 -226
- data/src/examples/switch_event_config/dump_forward_entries.c +0 -190
- data/src/examples/switch_event_config/network.conf +0 -2
- data/src/examples/switch_event_config/set_forward_entries.c +0 -210
- data/src/examples/switch_info/README +0 -13
- data/src/examples/switch_info/switch-info.rb +0 -44
- data/src/examples/switch_info/switch_info.c +0 -78
- data/src/examples/switch_info/switch_info.conf +0 -3
- data/src/examples/switch_monitor/switch-monitor.conf +0 -3
- data/src/examples/switch_monitor/switch-monitor.rb +0 -56
- data/src/examples/switch_monitor/switch_monitor.c +0 -152
- data/src/examples/traffic_monitor/counter.c +0 -72
- data/src/examples/traffic_monitor/counter.h +0 -46
- data/src/examples/traffic_monitor/counter.rb +0 -44
- data/src/examples/traffic_monitor/fdb.c +0 -74
- data/src/examples/traffic_monitor/fdb.h +0 -48
- data/src/examples/traffic_monitor/fdb.rb +0 -42
- data/src/examples/traffic_monitor/traffic-monitor.rb +0 -98
- data/src/examples/traffic_monitor/traffic_monitor.c +0 -161
- data/src/examples/traffic_monitor/traffic_monitor.conf +0 -16
- data/src/examples/transparent_firewall/README.md +0 -61
- data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +0 -713
- data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +0 -3440
- data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +0 -11342
- data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +0 -1937
- data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +0 -7329
- data/src/examples/transparent_firewall/block-rfc1918.rb +0 -86
- data/src/examples/transparent_firewall/pass-delegated.rb +0 -178
- data/src/examples/transparent_firewall/regen_aggregated.sh +0 -53
- data/src/examples/transparent_firewall/stats-to-cidrs.rb +0 -59
- data/src/lib/arp.h +0 -64
- data/src/lib/bool.h +0 -47
- data/src/lib/buffer.c +0 -304
- data/src/lib/buffer.h +0 -54
- data/src/lib/byteorder.c +0 -571
- data/src/lib/byteorder.h +0 -108
- data/src/lib/checks.h +0 -40
- data/src/lib/chibach.c +0 -392
- data/src/lib/chibach.h +0 -69
- data/src/lib/chibach_private.c +0 -168
- data/src/lib/chibach_private.h +0 -50
- data/src/lib/daemon.c +0 -429
- data/src/lib/daemon.h +0 -40
- data/src/lib/doubly_linked_list.c +0 -284
- data/src/lib/doubly_linked_list.h +0 -86
- data/src/lib/ether.c +0 -47
- data/src/lib/ether.h +0 -92
- data/src/lib/etherip.h +0 -44
- data/src/lib/event_forward_interface.c +0 -788
- data/src/lib/event_forward_interface.h +0 -138
- data/src/lib/event_handler.c +0 -419
- data/src/lib/event_handler.h +0 -57
- data/src/lib/external_callback.c +0 -126
- data/src/lib/external_callback.h +0 -46
- data/src/lib/hash_table.c +0 -415
- data/src/lib/hash_table.h +0 -136
- data/src/lib/icmp.h +0 -72
- data/src/lib/igmp.h +0 -48
- data/src/lib/ipv4.h +0 -64
- data/src/lib/ipv6.h +0 -46
- data/src/lib/linked_list.c +0 -244
- data/src/lib/linked_list.h +0 -84
- data/src/lib/log.c +0 -636
- data/src/lib/log.h +0 -77
- data/src/lib/management_interface.c +0 -359
- data/src/lib/management_interface.h +0 -40
- data/src/lib/management_service_interface.c +0 -102
- data/src/lib/management_service_interface.h +0 -134
- data/src/lib/match.h +0 -82
- data/src/lib/match_table.c +0 -606
- data/src/lib/match_table.h +0 -49
- data/src/lib/message_queue.c +0 -143
- data/src/lib/message_queue.h +0 -59
- data/src/lib/messenger.c +0 -1821
- data/src/lib/messenger.h +0 -145
- data/src/lib/openflow_application_interface.c +0 -1800
- data/src/lib/openflow_application_interface.h +0 -359
- data/src/lib/openflow_message.c +0 -4240
- data/src/lib/openflow_message.h +0 -291
- data/src/lib/openflow_service_interface.h +0 -58
- data/src/lib/openflow_switch_interface.c +0 -1378
- data/src/lib/openflow_switch_interface.h +0 -262
- data/src/lib/packet_info.c +0 -336
- data/src/lib/packet_info.h +0 -233
- data/src/lib/packet_parser.c +0 -522
- data/src/lib/packetin_filter_interface.c +0 -292
- data/src/lib/packetin_filter_interface.h +0 -125
- data/src/lib/persistent_storage.c +0 -478
- data/src/lib/persistent_storage.h +0 -44
- data/src/lib/secure_channel.c +0 -496
- data/src/lib/secure_channel.h +0 -43
- data/src/lib/stat.c +0 -248
- data/src/lib/stat.h +0 -51
- data/src/lib/tcp.h +0 -62
- data/src/lib/timer.c +0 -349
- data/src/lib/timer.h +0 -51
- data/src/lib/trema.c +0 -776
- data/src/lib/trema.h +0 -80
- data/src/lib/trema.hpp +0 -49
- data/src/lib/trema_private.c +0 -175
- data/src/lib/trema_private.h +0 -64
- data/src/lib/trema_wrapper.c +0 -59
- data/src/lib/trema_wrapper.h +0 -66
- data/src/lib/udp.h +0 -41
- data/src/lib/utility.c +0 -625
- data/src/lib/utility.h +0 -84
- data/src/lib/wrapper.c +0 -121
- data/src/lib/wrapper.h +0 -76
- data/src/management/application.c +0 -222
- data/src/management/echo.c +0 -183
- data/src/management/set_logging_level.c +0 -151
- data/src/management/show_stats.c +0 -148
- data/src/management/trema_manager +0 -184
- data/src/packetin_filter/README +0 -17
- data/src/packetin_filter/packetin_filter.c +0 -575
- data/src/switch_manager/README +0 -20
- data/src/switch_manager/cookie_table.c +0 -290
- data/src/switch_manager/cookie_table.h +0 -70
- data/src/switch_manager/dpid_table.c +0 -108
- data/src/switch_manager/dpid_table.h +0 -43
- data/src/switch_manager/event_forward_entry_manipulation.c +0 -120
- data/src/switch_manager/event_forward_entry_manipulation.h +0 -31
- data/src/switch_manager/ofpmsg_recv.c +0 -497
- data/src/switch_manager/ofpmsg_recv.h +0 -39
- data/src/switch_manager/ofpmsg_send.c +0 -274
- data/src/switch_manager/ofpmsg_send.h +0 -51
- data/src/switch_manager/secure_channel_listener.c +0 -296
- data/src/switch_manager/secure_channel_listener.h +0 -40
- data/src/switch_manager/secure_channel_receiver.c +0 -129
- data/src/switch_manager/secure_channel_receiver.h +0 -40
- data/src/switch_manager/secure_channel_sender.c +0 -131
- data/src/switch_manager/secure_channel_sender.h +0 -41
- data/src/switch_manager/service_interface.c +0 -180
- data/src/switch_manager/service_interface.h +0 -44
- data/src/switch_manager/switch.c +0 -988
- data/src/switch_manager/switch.h +0 -50
- data/src/switch_manager/switch_manager.c +0 -643
- data/src/switch_manager/switch_manager.h +0 -65
- data/src/switch_manager/switch_option.c +0 -30
- data/src/switch_manager/switch_option.h +0 -41
- data/src/switch_manager/switchinfo.h +0 -81
- data/src/switch_manager/xid_table.c +0 -182
- data/src/switch_manager/xid_table.h +0 -53
- data/src/tremashark/README +0 -79
- data/src/tremashark/packet_capture.c +0 -358
- data/src/tremashark/pcap_private.h +0 -45
- data/src/tremashark/pcap_queue.c +0 -195
- data/src/tremashark/pcap_queue.h +0 -56
- data/src/tremashark/plugin/.gitignore +0 -6
- data/src/tremashark/plugin/packet-trema/.gitignore +0 -5
- data/src/tremashark/plugin/packet-trema/Makefile +0 -77
- data/src/tremashark/plugin/packet-trema/Makefile.am +0 -110
- data/src/tremashark/plugin/packet-trema/Makefile.common +0 -29
- data/src/tremashark/plugin/packet-trema/moduleinfo.h +0 -39
- data/src/tremashark/plugin/packet-trema/packet-trema.c +0 -1671
- data/src/tremashark/plugin/packet-trema/plugin.c +0 -31
- data/src/tremashark/plugin/user_dlts +0 -2
- data/src/tremashark/queue.c +0 -167
- data/src/tremashark/queue.h +0 -58
- data/src/tremashark/stdin_relay.c +0 -257
- data/src/tremashark/syslog_relay.c +0 -247
- data/src/tremashark/tremashark.c +0 -554
- data/trema +0 -11
- data/trema-config +0 -11
- data/unittests/buffer_stubs.c +0 -72
- data/unittests/cmockery_trema.c +0 -121
- data/unittests/cmockery_trema.h +0 -95
- data/unittests/lib/buffer_test.c +0 -368
- data/unittests/lib/byteorder_test.c +0 -1798
- data/unittests/lib/daemon_test.c +0 -804
- data/unittests/lib/doubly_linked_list_test.c +0 -348
- data/unittests/lib/ether_test.c +0 -125
- data/unittests/lib/event_forward_interface_test.c +0 -1676
- data/unittests/lib/external_callback_test.c +0 -282
- data/unittests/lib/hash_table_test.c +0 -278
- data/unittests/lib/linked_list_test.c +0 -434
- data/unittests/lib/log_test.c +0 -672
- data/unittests/lib/management_interface_test.c +0 -238
- data/unittests/lib/management_service_interface_test.c +0 -317
- data/unittests/lib/match_table_test.c +0 -1507
- data/unittests/lib/message_queue_test.c +0 -381
- data/unittests/lib/messenger_test.c +0 -623
- data/unittests/lib/openflow_application_interface_test.c +0 -3713
- data/unittests/lib/openflow_message_test.c +0 -8047
- data/unittests/lib/packet_info_test.c +0 -558
- data/unittests/lib/packet_parser_test.c +0 -784
- data/unittests/lib/packetin_filter_interface_test.c +0 -721
- data/unittests/lib/persistent_storage_test.c +0 -800
- data/unittests/lib/stat_test.c +0 -433
- data/unittests/lib/test_packets/arp_rep.cap +0 -0
- data/unittests/lib/test_packets/arp_req.cap +0 -0
- data/unittests/lib/test_packets/icmp6_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/icmp6_echo_req.cap +0 -0
- data/unittests/lib/test_packets/icmp_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/icmp_echo_req.cap +0 -0
- data/unittests/lib/test_packets/igmp_query_v2.cap +0 -0
- data/unittests/lib/test_packets/ipx.cap +0 -0
- data/unittests/lib/test_packets/lldp.cap +0 -0
- data/unittests/lib/test_packets/lldp_over_ip.cap +0 -0
- data/unittests/lib/test_packets/rarp_req.cap +0 -0
- data/unittests/lib/test_packets/tcp.cap +0 -0
- data/unittests/lib/test_packets/tcp_syn.cap +0 -0
- data/unittests/lib/test_packets/udp.cap +0 -0
- data/unittests/lib/test_packets/udp_frag_head.cap +0 -0
- data/unittests/lib/test_packets/udp_frag_next.cap +0 -0
- data/unittests/lib/test_packets/vtag_icmp_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/vtag_icmp_echo_req.cap +0 -0
- data/unittests/lib/timer_test.c +0 -246
- data/unittests/lib/trema_private_test.c +0 -321
- data/unittests/lib/trema_test.c +0 -1030
- data/unittests/lib/utility_test.c +0 -711
- data/unittests/lib/wrapper_test.c +0 -228
- data/unittests/packetin_filter/packetin_filter_test.c +0 -476
- data/unittests/switch_manager/switch_manager_test.c +0 -1183
- data/unittests/wrapper_stubs.c +0 -37
- data/vendor/.gitignore +0 -6
- data/vendor/README.md +0 -29
- data/vendor/cmockery-20110428.tar.gz +0 -0
- data/vendor/oflops-0.03.trema1.tar.gz +0 -0
- data/vendor/oflops_no_snmp+1.0.0.diff +0 -340
- data/vendor/openflow-1.0.0.tar.gz +0 -0
- data/vendor/openflow.git.tar.gz +0 -0
- data/vendor/openvswitch-1.2.2.trema1.tar.gz +0 -0
- data/vendor/openvswitch-1.2.2_librt-check.diff +0 -21
- data/vendor/packet-openflow.diff +0 -13
- data/vendor/ruby-ifconfig-1.2/COPYING +0 -340
- data/vendor/ruby-ifconfig-1.2/Changelog +0 -16
- data/vendor/ruby-ifconfig-1.2/INSTALL +0 -239
- data/vendor/ruby-ifconfig-1.2/README +0 -38
- data/vendor/ruby-ifconfig-1.2/Rakefile +0 -14
- data/vendor/ruby-ifconfig-1.2/TODO +0 -8
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/darwin.txt +0 -17
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd.txt +0 -10
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd_netstat.txt +0 -14
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd.txt +0 -17
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd_netstat.txt +0 -24
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux.txt +0 -60
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux_ethernet.txt +0 -20
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/netbsd.txt +0 -10
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/openbsd.txt +0 -36
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/sunos.txt +0 -10
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig.rb +0 -71
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/ifconfig.rb +0 -72
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/interface_types.rb +0 -69
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/network_types.rb +0 -3
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/ifconfig.rb +0 -84
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/interface_types.rb +0 -130
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/network_types.rb +0 -49
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/ifconfig.rb +0 -43
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/interface_types.rb +0 -112
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/network_types.rb +0 -55
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/ifconfig.rb +0 -38
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/interface_types.rb +0 -77
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/network_types.rb +0 -4
- data/vendor/ruby-ifconfig-1.2/setup.rb +0 -1306
- data/vendor/ruby-ifconfig-1.2/test/test_bsd.rb +0 -35
- data/vendor/ruby-ifconfig-1.2/test/test_darwin.rb +0 -33
- data/vendor/ruby-ifconfig-1.2/test/test_dragonflybsd.rb +0 -35
- data/vendor/ruby-ifconfig-1.2/test/test_helper.rb +0 -4
- data/vendor/ruby-ifconfig-1.2/test/test_linux.rb +0 -31
- data/vendor/ruby-ifconfig-1.2/test/test_netbsd.rb +0 -33
- data/vendor/ruby-ifconfig-1.2/test/test_openbsd.rb +0 -33
- data/vendor/ruby-ifconfig-1.2/test/test_sunos.rb +0 -35
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_darwin.rb +0 -40
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_dragonflybsd.rb +0 -39
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_freebsd.rb +0 -40
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_linux.rb +0 -49
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_netbsd.rb +0 -39
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_openbsd.rb +0 -39
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_sunos.rb +0 -44
data/ruby/trema/stats-request.h
DELETED
|
@@ -1,40 +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_REQUEST_H
|
|
20
|
-
#define STATS_REQUEST_H
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
#include "ruby.h"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
extern VALUE cStatsRequest;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
void Init_stats_request( void );
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
#endif // STATS_REQUEST_H
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/*
|
|
36
|
-
* Local variables:
|
|
37
|
-
* c-basic-offset: 2
|
|
38
|
-
* indent-tabs-mode: nil
|
|
39
|
-
* End:
|
|
40
|
-
*/
|
|
@@ -1,41 +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
|
-
require 'trema/action'
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
module Trema
|
|
23
|
-
#
|
|
24
|
-
# Strips the VLAN tag of a packet.
|
|
25
|
-
#
|
|
26
|
-
class StripVlanHeader < Action
|
|
27
|
-
#
|
|
28
|
-
# Creates an action that strips the VLAN tag of a packet.
|
|
29
|
-
#
|
|
30
|
-
def initialize
|
|
31
|
-
# Do nothing.
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
### Local variables:
|
|
38
|
-
### mode: Ruby
|
|
39
|
-
### coding: utf-8-unix
|
|
40
|
-
### indent-tabs-mode: nil
|
|
41
|
-
### End:
|
data/ruby/trema/switch-daemon.rb
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# The controller class of switch daemon.
|
|
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
|
-
module Trema
|
|
22
|
-
class SwitchDaemon
|
|
23
|
-
MANDATORY_QUEUES = [:port_status, :packet_in, :state_notify]
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
#
|
|
27
|
-
# Creates a new abstract representation of SwitchDaemon instance
|
|
28
|
-
# by accepting and validating a hash of queue options.
|
|
29
|
-
#
|
|
30
|
-
# @param [Hash] queues a hash of queue arguments to assign.
|
|
31
|
-
# @option queues [Symbol] :port_status
|
|
32
|
-
# the controller(s) to receive port status messages.
|
|
33
|
-
# @option queues [Symbol] :packet_in
|
|
34
|
-
# the controller(s) to receive packet_in messages.
|
|
35
|
-
# @option queues [Symbol] :state_notify
|
|
36
|
-
# the controller(s) to receive state notification messages.
|
|
37
|
-
#
|
|
38
|
-
def initialize(queues)
|
|
39
|
-
check_mandatory_options queues
|
|
40
|
-
@queues = queues
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
#
|
|
45
|
-
# Constructs switch daemon's options associating one or more controller
|
|
46
|
-
# name to a queue name.
|
|
47
|
-
#
|
|
48
|
-
# @return [Array<String>] the switch daemon's options.
|
|
49
|
-
def options
|
|
50
|
-
all_queues = MANDATORY_QUEUES + [:vendor]
|
|
51
|
-
all_queues.collect! do | each |
|
|
52
|
-
queue each
|
|
53
|
-
end.flatten!
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
################################################################################
|
|
58
|
-
private
|
|
59
|
-
################################################################################
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
# @raise [RuntimeError] if a mandatory option is not found.
|
|
64
|
-
#
|
|
65
|
-
def check_mandatory_options(queues)
|
|
66
|
-
MANDATORY_QUEUES.each do | each |
|
|
67
|
-
fail ":#{ each } is a mandatory option" if queues[ each].nil?
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
#
|
|
73
|
-
# @return [Array<String>] an array of controller name strings.
|
|
74
|
-
#
|
|
75
|
-
def queue(queue_type)
|
|
76
|
-
return [] unless @queues[ queue_type]
|
|
77
|
-
controllers = @queues[ queue_type].split(',')
|
|
78
|
-
controllers.collect! do | each |
|
|
79
|
-
"#{ queue_type }::#{ each }"
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
### Local variables:
|
|
87
|
-
### mode: Ruby
|
|
88
|
-
### coding: utf-8-unix
|
|
89
|
-
### indent-tabs-mode: nil
|
|
90
|
-
### End:
|
|
@@ -1,38 +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 "ruby.h"
|
|
20
|
-
#include "trema.h"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
void
|
|
24
|
-
handle_switch_disconnected( uint64_t datapath_id, void *user_data ) {
|
|
25
|
-
VALUE controller = ( VALUE ) user_data;
|
|
26
|
-
if ( rb_respond_to( controller, rb_intern( "switch_disconnected" ) ) == Qfalse ) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
rb_funcall( controller, rb_intern( "switch_disconnected" ), 1, ULL2NUM( datapath_id ) );
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/*
|
|
34
|
-
* Local variables:
|
|
35
|
-
* c-basic-offset: 2
|
|
36
|
-
* indent-tabs-mode: nil
|
|
37
|
-
* End:
|
|
38
|
-
*/
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Prototype for switch disconnect event handler.
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2013 NEC Corporation
|
|
5
|
-
*
|
|
6
|
-
* This program is free software; you can redistribute it and/or modify
|
|
7
|
-
* it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
* published by the Free Software Foundation.
|
|
9
|
-
*
|
|
10
|
-
* This program is distributed in the hope that it will be useful,
|
|
11
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
* GNU General Public License for more details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU General Public License along
|
|
16
|
-
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
#ifndef SWITCH_DISCONNECTED_H
|
|
22
|
-
#define SWITCH_DISCONNECTED_H
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
void handle_switch_disconnected( uint64_t datapath_id, void *user_data );
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
#endif // SWITCH_DISCONNECTED_H
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/*
|
|
32
|
-
* Local variables:
|
|
33
|
-
* c-basic-offset: 2
|
|
34
|
-
* indent-tabs-mode: nil
|
|
35
|
-
* End:
|
|
36
|
-
*/
|
data/ruby/trema/switch-event.c
DELETED
|
@@ -1,648 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 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
|
-
#include <assert.h>
|
|
19
|
-
#include "ruby.h"
|
|
20
|
-
#include "switch-event.h"
|
|
21
|
-
#include "compat.h"
|
|
22
|
-
|
|
23
|
-
#include "trema.h"
|
|
24
|
-
|
|
25
|
-
extern VALUE mTrema;
|
|
26
|
-
VALUE mSwitchEvent;
|
|
27
|
-
|
|
28
|
-
static ID idVendor;
|
|
29
|
-
static ID idPacketIn;
|
|
30
|
-
static ID idPortStatus;
|
|
31
|
-
static ID idStateNotify;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
typedef struct callback_info {
|
|
35
|
-
VALUE self;
|
|
36
|
-
VALUE block;
|
|
37
|
-
} callback_info;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
static bool
|
|
41
|
-
event_type_symbol_to_enum( VALUE rType, enum efi_event_type *cType ) {
|
|
42
|
-
assert( cType != NULL );
|
|
43
|
-
const ID idType = rb_to_id( rType );
|
|
44
|
-
if ( false ) {
|
|
45
|
-
}
|
|
46
|
-
else if ( idType == idVendor ) {
|
|
47
|
-
*cType = EVENT_FORWARD_TYPE_VENDOR;
|
|
48
|
-
}
|
|
49
|
-
else if ( idType == idPacketIn ) {
|
|
50
|
-
*cType = EVENT_FORWARD_TYPE_PACKET_IN;
|
|
51
|
-
}
|
|
52
|
-
else if ( idType == idPortStatus ) {
|
|
53
|
-
*cType = EVENT_FORWARD_TYPE_PORT_STATUS;
|
|
54
|
-
}
|
|
55
|
-
else if ( idType == idStateNotify ) {
|
|
56
|
-
*cType = EVENT_FORWARD_TYPE_STATE_NOTIFY;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
static void
|
|
66
|
-
handle_event_forward_entry_to_all_callback( enum efi_result result,
|
|
67
|
-
void *user_data ) {
|
|
68
|
-
debug( "%s", __func__ );
|
|
69
|
-
callback_info *cb = user_data;
|
|
70
|
-
if ( cb->block != Qnil ) {
|
|
71
|
-
if ( result == EFI_OPERATION_SUCCEEDED ) {
|
|
72
|
-
rb_funcall( cb->block, rb_intern( "call" ), 1, Qtrue );
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
rb_funcall( cb->block, rb_intern( "call" ), 1, Qfalse );
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
xfree( cb );
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/*
|
|
83
|
-
* @!group Operation for all existing switches and switch manager
|
|
84
|
-
*
|
|
85
|
-
* @overload add_forward_entry_to_all_switches type, service_name, {|result| ... }
|
|
86
|
-
* Add forwarding entry to all existing switches and switch manager.
|
|
87
|
-
*
|
|
88
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
89
|
-
* @param [String] service_name Name of controller to forward event.
|
|
90
|
-
* @return [Boolean] true if request was sent successfully.
|
|
91
|
-
*
|
|
92
|
-
* @yield Callback to notify the result of operation.
|
|
93
|
-
* @yieldparam result [Boolean] true if result successful on all switches and switch manager
|
|
94
|
-
*/
|
|
95
|
-
static VALUE
|
|
96
|
-
add_forward_entry_to_all_switches( VALUE self, VALUE type, VALUE service_name ) {
|
|
97
|
-
debug( "%s", __func__ );
|
|
98
|
-
enum efi_event_type c_type;
|
|
99
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
100
|
-
warn( "Invalid event type was specified" );
|
|
101
|
-
return Qfalse;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const char *c_service_name = RSTRING_PTR( service_name );
|
|
105
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
106
|
-
warn( "service_name cannot be empty" );
|
|
107
|
-
return Qfalse;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
111
|
-
cb->self = self;
|
|
112
|
-
cb->block = Qnil;
|
|
113
|
-
if ( rb_block_given_p() ) {
|
|
114
|
-
cb->block = rb_block_proc();
|
|
115
|
-
}
|
|
116
|
-
bool succ = add_event_forward_entry_to_all_switches(
|
|
117
|
-
c_type, c_service_name,
|
|
118
|
-
handle_event_forward_entry_to_all_callback,
|
|
119
|
-
cb );
|
|
120
|
-
if ( succ ) {
|
|
121
|
-
return Qtrue;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
xfree( cb );
|
|
125
|
-
return Qfalse;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
/*
|
|
131
|
-
* @!group Operation for all existing switches and switch manager
|
|
132
|
-
*
|
|
133
|
-
* @overload delete_forward_entry_from_all_switches type, service_name, {|result| ... }
|
|
134
|
-
* Delete forwarding entry to all existing switches and switch manager.
|
|
135
|
-
*
|
|
136
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
137
|
-
* @param [String] service_name Name of controller to forward event.
|
|
138
|
-
* @return [Boolean] true if request was sent successfully.
|
|
139
|
-
*
|
|
140
|
-
* @yield Callback to notify the result of operation.
|
|
141
|
-
* @yieldparam result [Boolean] true if result successful on all switches and switch manager
|
|
142
|
-
*/
|
|
143
|
-
static VALUE
|
|
144
|
-
delete_forward_entry_from_all_switches( VALUE self, VALUE type,
|
|
145
|
-
VALUE service_name ) {
|
|
146
|
-
debug( "%s", __func__ );
|
|
147
|
-
enum efi_event_type c_type;
|
|
148
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
149
|
-
warn( "Invalid event type was specified" );
|
|
150
|
-
return Qfalse;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const char *c_service_name = RSTRING_PTR( service_name );
|
|
154
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
155
|
-
warn( "service_name cannot be empty" );
|
|
156
|
-
return Qfalse;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
160
|
-
cb->self = self;
|
|
161
|
-
cb->block = Qnil;
|
|
162
|
-
if ( rb_block_given_p() ) {
|
|
163
|
-
cb->block = rb_block_proc();
|
|
164
|
-
}
|
|
165
|
-
bool succ = delete_event_forward_entry_to_all_switches(
|
|
166
|
-
c_type, c_service_name,
|
|
167
|
-
handle_event_forward_entry_to_all_callback,
|
|
168
|
-
cb );
|
|
169
|
-
if ( succ ) {
|
|
170
|
-
return Qtrue;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
xfree( cb );
|
|
174
|
-
return Qfalse;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
static void
|
|
180
|
-
handle_event_forward_entry_operation_callback(
|
|
181
|
-
event_forward_operation_result result, void *user_data ) {
|
|
182
|
-
debug( "%s", __func__ );
|
|
183
|
-
callback_info *cb = user_data;
|
|
184
|
-
|
|
185
|
-
if ( cb->block != Qnil ) {
|
|
186
|
-
if ( result.result == EFI_OPERATION_SUCCEEDED ) {
|
|
187
|
-
VALUE aryDpid = rb_ary_new2( ( long ) result.n_services );
|
|
188
|
-
for ( uint32_t i = 0 ; i < result.n_services ; ++i ) {
|
|
189
|
-
VALUE service_name = rb_str_new2( result.services[i] );
|
|
190
|
-
rb_ary_push( aryDpid, service_name );
|
|
191
|
-
}
|
|
192
|
-
rb_funcall( cb->block, rb_intern( "call" ), 2, Qtrue, aryDpid );
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
VALUE aryDpid = rb_ary_new();
|
|
196
|
-
rb_funcall( cb->block, rb_intern( "call" ), 2, Qfalse, aryDpid );
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
xfree( cb );
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
/*
|
|
204
|
-
* @!group Operation for existing switch
|
|
205
|
-
*
|
|
206
|
-
* @overload add_forward_entry_to_switch datapath_id, type, service_name, {|result, services| ... }
|
|
207
|
-
* Add forwarding entry of a switch specified.
|
|
208
|
-
*
|
|
209
|
-
* @param [Integer] dpid Switch datapath_id
|
|
210
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
211
|
-
* @param [String] service_name Name of controller to forward event.
|
|
212
|
-
* @return [Boolean] true if request was sent successfully.
|
|
213
|
-
*
|
|
214
|
-
* @yield Callback to notify the result of operation.
|
|
215
|
-
* @yieldparam result [Boolean] true if result successful.
|
|
216
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
217
|
-
*/
|
|
218
|
-
static VALUE
|
|
219
|
-
add_forward_entry_to_switch( VALUE self, VALUE dpid, VALUE type,
|
|
220
|
-
VALUE service_name ) {
|
|
221
|
-
debug( "%s", __func__ );
|
|
222
|
-
enum efi_event_type c_type;
|
|
223
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
224
|
-
warn( "Invalid event type was specified" );
|
|
225
|
-
return Qfalse;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
const uint64_t c_dpid = NUM2ULL( dpid );
|
|
229
|
-
const char *c_service_name = RSTRING_PTR( service_name );
|
|
230
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
231
|
-
warn( "service_name cannot be empty" );
|
|
232
|
-
return Qfalse;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
236
|
-
cb->self = self;
|
|
237
|
-
cb->block = Qnil;
|
|
238
|
-
if ( rb_block_given_p() ) {
|
|
239
|
-
cb->block = rb_block_proc();
|
|
240
|
-
}
|
|
241
|
-
bool succ = add_switch_event_forward_entry(
|
|
242
|
-
c_dpid, c_type, c_service_name,
|
|
243
|
-
handle_event_forward_entry_operation_callback,
|
|
244
|
-
cb );
|
|
245
|
-
if ( succ ) {
|
|
246
|
-
return Qtrue;
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
xfree( cb );
|
|
250
|
-
return Qfalse;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
/*
|
|
256
|
-
* @!group Operation for existing switch
|
|
257
|
-
*
|
|
258
|
-
* @overload delete_forward_entry_from_switch datapath_id, type, service_name, {|result, services| ... }
|
|
259
|
-
* Delete forwarding entry of a switch specified.
|
|
260
|
-
*
|
|
261
|
-
* @param [Integer] dpid Switch datapath_id
|
|
262
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
263
|
-
* @param [String] service_name Name of controller to forward event.
|
|
264
|
-
* @return [Boolean] true if request was sent successfully.
|
|
265
|
-
*
|
|
266
|
-
* @yield Callback to notify the result of operation.
|
|
267
|
-
* @yieldparam result [Boolean] true if result successful.
|
|
268
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
269
|
-
*/
|
|
270
|
-
static VALUE
|
|
271
|
-
delete_forward_entry_from_switch( VALUE self, VALUE dpid, VALUE type,
|
|
272
|
-
VALUE service_name ) {
|
|
273
|
-
debug( "%s", __func__ );
|
|
274
|
-
enum efi_event_type c_type;
|
|
275
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
276
|
-
warn( "Invalid event type was specified" );
|
|
277
|
-
return Qfalse;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
const uint64_t c_dpid = NUM2ULL( dpid );
|
|
281
|
-
const char *c_service_name = RSTRING_PTR( service_name );
|
|
282
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
283
|
-
warn( "service_name cannot be empty" );
|
|
284
|
-
return Qfalse;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
288
|
-
cb->self = self;
|
|
289
|
-
cb->block = Qnil;
|
|
290
|
-
if ( rb_block_given_p() ) {
|
|
291
|
-
cb->block = rb_block_proc();
|
|
292
|
-
}
|
|
293
|
-
bool succ = delete_switch_event_forward_entry(
|
|
294
|
-
c_dpid, c_type, c_service_name,
|
|
295
|
-
handle_event_forward_entry_operation_callback,
|
|
296
|
-
cb );
|
|
297
|
-
if ( succ ) {
|
|
298
|
-
return Qtrue;
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
xfree( cb );
|
|
302
|
-
return Qfalse;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
/*
|
|
308
|
-
* @!group Operation for existing switch
|
|
309
|
-
*
|
|
310
|
-
* @overload set_forward_entries_to_switch datapath_id, type, service_name, {|result, services| ... }
|
|
311
|
-
* Set forwarding entries of a switch specified.
|
|
312
|
-
*
|
|
313
|
-
* @param [Integer] dpid Switch datapath_id
|
|
314
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
315
|
-
* @param [Array<String>] service_names Name of controller to forward event.
|
|
316
|
-
* @return [Boolean] true if request was sent successfully.
|
|
317
|
-
*
|
|
318
|
-
* @yield Callback to notify the result of operation.
|
|
319
|
-
* @yieldparam result [Boolean] true if result successful.
|
|
320
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
321
|
-
*/
|
|
322
|
-
static VALUE
|
|
323
|
-
set_forward_entries_to_switch( VALUE self, VALUE dpid, VALUE type,
|
|
324
|
-
VALUE service_names ) {
|
|
325
|
-
debug( "%s", __func__ );
|
|
326
|
-
enum efi_event_type c_type;
|
|
327
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
328
|
-
warn( "Invalid event type was specified" );
|
|
329
|
-
return Qfalse;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
const uint64_t c_dpid = NUM2ULL( dpid );
|
|
333
|
-
list_element *service_list = NULL;
|
|
334
|
-
create_list( &service_list );
|
|
335
|
-
for ( long i = 0 ; i < RARRAY_LEN( service_names ) ; ++i ) {
|
|
336
|
-
VALUE ruby_service_name = rb_ary_entry( service_names, i );
|
|
337
|
-
char *c_service_name = RSTRING_PTR( ruby_service_name );
|
|
338
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
339
|
-
warn( "Ignoring empty service_name" );
|
|
340
|
-
continue;
|
|
341
|
-
}
|
|
342
|
-
append_to_tail( &service_list, c_service_name );
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
346
|
-
cb->self = self;
|
|
347
|
-
cb->block = Qnil;
|
|
348
|
-
if ( rb_block_given_p() ) {
|
|
349
|
-
cb->block = rb_block_proc();
|
|
350
|
-
}
|
|
351
|
-
bool succ = set_switch_event_forward_entries(
|
|
352
|
-
c_dpid, c_type, service_list,
|
|
353
|
-
handle_event_forward_entry_operation_callback,
|
|
354
|
-
cb );
|
|
355
|
-
|
|
356
|
-
delete_list( service_list );
|
|
357
|
-
|
|
358
|
-
if ( succ ) {
|
|
359
|
-
return Qtrue;
|
|
360
|
-
}
|
|
361
|
-
else {
|
|
362
|
-
xfree( cb );
|
|
363
|
-
return Qfalse;
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
/*
|
|
369
|
-
* @!group Operation for existing switch
|
|
370
|
-
*
|
|
371
|
-
* @overload dump_forward_entries_from_switch datapath_id, type, {|result, services| ... }
|
|
372
|
-
* Dump forwarding entry of a switch specified.
|
|
373
|
-
*
|
|
374
|
-
* @param [Integer] dpid Switch datapath_id
|
|
375
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
376
|
-
* @return [Boolean] true if request was sent successfully.
|
|
377
|
-
*
|
|
378
|
-
* @yield Callback to notify the result of operation.
|
|
379
|
-
* @yieldparam result [Boolean] true if result successful on all switches and switch manager
|
|
380
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
381
|
-
*/
|
|
382
|
-
static VALUE
|
|
383
|
-
dump_forward_entries_from_switch( VALUE self, VALUE dpid, VALUE type ) {
|
|
384
|
-
debug( "%s", __func__ );
|
|
385
|
-
enum efi_event_type c_type;
|
|
386
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
387
|
-
warn( "Invalid event type was specified" );
|
|
388
|
-
return Qfalse;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
const uint64_t c_dpid = NUM2ULL( dpid );
|
|
392
|
-
|
|
393
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
394
|
-
cb->self = self;
|
|
395
|
-
cb->block = Qnil;
|
|
396
|
-
if ( rb_block_given_p() ) {
|
|
397
|
-
cb->block = rb_block_proc();
|
|
398
|
-
}
|
|
399
|
-
bool succ = dump_switch_event_forward_entries(
|
|
400
|
-
c_dpid, c_type,
|
|
401
|
-
handle_event_forward_entry_operation_callback,
|
|
402
|
-
cb );
|
|
403
|
-
if ( succ ) {
|
|
404
|
-
return Qtrue;
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
xfree( cb );
|
|
408
|
-
return Qfalse;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
/*
|
|
414
|
-
* @!group Operation for switch manager
|
|
415
|
-
*
|
|
416
|
-
* @overload add_forward_entry_to_switch_manager type, service_name, {|result, services| ... }
|
|
417
|
-
* Add forwarding entry to a switch manager.
|
|
418
|
-
*
|
|
419
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
420
|
-
* @param [String] service_name Name of controller to forward event.
|
|
421
|
-
* @return [Boolean] true if request was sent successfully.
|
|
422
|
-
*
|
|
423
|
-
* @yield Callback to notify the result of operation.
|
|
424
|
-
* @yieldparam result [Boolean] true if result successful.
|
|
425
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
426
|
-
*/
|
|
427
|
-
static VALUE
|
|
428
|
-
add_forward_entry_to_switch_manager( VALUE self, VALUE type,
|
|
429
|
-
VALUE service_name ) {
|
|
430
|
-
debug( "%s", __func__ );
|
|
431
|
-
enum efi_event_type c_type;
|
|
432
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
433
|
-
warn( "Invalid event type was specified" );
|
|
434
|
-
return Qfalse;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
const char *c_service_name = RSTRING_PTR( service_name );
|
|
438
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
439
|
-
warn( "service_name cannot be empty" );
|
|
440
|
-
return Qfalse;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
444
|
-
cb->self = self;
|
|
445
|
-
cb->block = Qnil;
|
|
446
|
-
if ( rb_block_given_p() ) {
|
|
447
|
-
cb->block = rb_block_proc();
|
|
448
|
-
}
|
|
449
|
-
bool succ = add_switch_manager_event_forward_entry(
|
|
450
|
-
c_type, c_service_name,
|
|
451
|
-
handle_event_forward_entry_operation_callback,
|
|
452
|
-
cb );
|
|
453
|
-
if ( succ ) {
|
|
454
|
-
return Qtrue;
|
|
455
|
-
}
|
|
456
|
-
else {
|
|
457
|
-
xfree( cb );
|
|
458
|
-
return Qfalse;
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
/*
|
|
464
|
-
* @!group Operation for switch manager
|
|
465
|
-
*
|
|
466
|
-
* @overload delete_forward_entry_from_switch_manager type, service_name, {|result, services| ... }
|
|
467
|
-
* Delete forwarding entry of a switch manager.
|
|
468
|
-
*
|
|
469
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
470
|
-
* @param [String] service_name Name of controller to forward event.
|
|
471
|
-
* @return [Boolean] true if request was sent successfully.
|
|
472
|
-
*
|
|
473
|
-
* @yield Callback to notify the result of operation.
|
|
474
|
-
* @yieldparam result [Boolean] true if result successful.
|
|
475
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
476
|
-
*/
|
|
477
|
-
static VALUE
|
|
478
|
-
delete_forward_entry_from_switch_manager( VALUE self, VALUE type,
|
|
479
|
-
VALUE service_name ) {
|
|
480
|
-
debug( "%s", __func__ );
|
|
481
|
-
enum efi_event_type c_type;
|
|
482
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
483
|
-
warn( "Invalid event type was specified" );
|
|
484
|
-
return Qfalse;
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
const char *c_service_name = RSTRING_PTR( service_name );
|
|
488
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
489
|
-
warn( "service_name cannot be empty" );
|
|
490
|
-
return Qfalse;
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
494
|
-
cb->self = self;
|
|
495
|
-
cb->block = Qnil;
|
|
496
|
-
if ( rb_block_given_p() ) {
|
|
497
|
-
cb->block = rb_block_proc();
|
|
498
|
-
}
|
|
499
|
-
bool succ = delete_switch_manager_event_forward_entry(
|
|
500
|
-
c_type, c_service_name,
|
|
501
|
-
handle_event_forward_entry_operation_callback,
|
|
502
|
-
cb );
|
|
503
|
-
if ( succ ) {
|
|
504
|
-
return Qtrue;
|
|
505
|
-
}
|
|
506
|
-
else {
|
|
507
|
-
xfree( cb );
|
|
508
|
-
return Qfalse;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
/*
|
|
514
|
-
* @!group Operation for switch manager
|
|
515
|
-
*
|
|
516
|
-
* @overload set_forward_entries_to_switch_manager type, service_names, {|result, services| ... }
|
|
517
|
-
* Set forwarding entries of a switch manager.
|
|
518
|
-
*
|
|
519
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
520
|
-
* @param [Array<String>] service_names Name of controller to forward event.
|
|
521
|
-
* @return [Boolean] true if request was sent successfully.
|
|
522
|
-
*
|
|
523
|
-
* @yield Callback to notify the result of operation.
|
|
524
|
-
* @yieldparam result [Boolean] true if result successful.
|
|
525
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
526
|
-
*/
|
|
527
|
-
static VALUE
|
|
528
|
-
set_forward_entries_to_switch_manager( VALUE self, VALUE type,
|
|
529
|
-
VALUE service_names ) {
|
|
530
|
-
debug( "%s", __func__ );
|
|
531
|
-
enum efi_event_type c_type;
|
|
532
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
533
|
-
warn( "Invalid event type was specified" );
|
|
534
|
-
return Qfalse;
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
list_element *service_list = NULL;
|
|
538
|
-
create_list( &service_list );
|
|
539
|
-
for ( long i = 0 ; i < RARRAY_LEN( service_names ) ; ++i ) {
|
|
540
|
-
VALUE ruby_service_name = rb_ary_entry( service_names, i );
|
|
541
|
-
char *c_service_name = RSTRING_PTR( ruby_service_name );
|
|
542
|
-
if ( strlen( c_service_name ) == 0 ) {
|
|
543
|
-
warn( "Ignoring empty service_name" );
|
|
544
|
-
continue;
|
|
545
|
-
}
|
|
546
|
-
append_to_tail( &service_list, c_service_name );
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
550
|
-
cb->self = self;
|
|
551
|
-
cb->block = Qnil;
|
|
552
|
-
if ( rb_block_given_p() ) {
|
|
553
|
-
cb->block = rb_block_proc();
|
|
554
|
-
}
|
|
555
|
-
bool succ = set_switch_manager_event_forward_entries(
|
|
556
|
-
c_type, service_list,
|
|
557
|
-
handle_event_forward_entry_operation_callback,
|
|
558
|
-
cb );
|
|
559
|
-
|
|
560
|
-
delete_list( service_list );
|
|
561
|
-
|
|
562
|
-
if ( succ ) {
|
|
563
|
-
return Qtrue;
|
|
564
|
-
}
|
|
565
|
-
else {
|
|
566
|
-
xfree( cb );
|
|
567
|
-
return Qfalse;
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
/*
|
|
573
|
-
* @!group Operation for switch manager
|
|
574
|
-
*
|
|
575
|
-
* @overload dump_forward_entries_from_switch type, {|result, services| ... }
|
|
576
|
-
* Dump forwarding entry of a switch manager.
|
|
577
|
-
*
|
|
578
|
-
* @param [Symbol] type Switch event type. it must be one of :vendor, :packet_in, :port_status, :state_notify
|
|
579
|
-
* @return [Boolean] true if request was sent successfully.
|
|
580
|
-
*
|
|
581
|
-
* @yield Callback to notify the result of operation.
|
|
582
|
-
* @yieldparam result [Boolean] true if result successful on all switches and switch manager
|
|
583
|
-
* @yieldparam services [Array<String>] Service Name list on forwarding entry after operation.
|
|
584
|
-
*/
|
|
585
|
-
static VALUE
|
|
586
|
-
dump_forward_entries_from_switch_manager( VALUE self, VALUE type ) {
|
|
587
|
-
debug( "%s", __func__ );
|
|
588
|
-
enum efi_event_type c_type;
|
|
589
|
-
if ( !event_type_symbol_to_enum( type, &c_type ) ) {
|
|
590
|
-
warn( "Invalid event type was specified" );
|
|
591
|
-
return Qfalse;
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
callback_info *cb = xcalloc( 1, sizeof( callback_info ) );
|
|
595
|
-
cb->self = self;
|
|
596
|
-
cb->block = Qnil;
|
|
597
|
-
if ( rb_block_given_p() ) {
|
|
598
|
-
cb->block = rb_block_proc();
|
|
599
|
-
}
|
|
600
|
-
bool succ = dump_switch_manager_event_forward_entries(
|
|
601
|
-
c_type,
|
|
602
|
-
handle_event_forward_entry_operation_callback,
|
|
603
|
-
cb );
|
|
604
|
-
if ( succ ) {
|
|
605
|
-
return Qtrue;
|
|
606
|
-
}
|
|
607
|
-
else {
|
|
608
|
-
xfree( cb );
|
|
609
|
-
return Qfalse;
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
/*
|
|
615
|
-
* Document-module: Trema::SwitchEvent
|
|
616
|
-
*/
|
|
617
|
-
void
|
|
618
|
-
Init_switch_event( void ) {
|
|
619
|
-
mSwitchEvent = rb_define_module_under( mTrema, "SwitchEvent" );
|
|
620
|
-
|
|
621
|
-
idVendor = rb_intern( "vendor" );
|
|
622
|
-
idPacketIn = rb_intern( "packet_in" );
|
|
623
|
-
idPortStatus = rb_intern( "port_status" );
|
|
624
|
-
idStateNotify = rb_intern( "state_notify" );
|
|
625
|
-
|
|
626
|
-
rb_define_method( mSwitchEvent, "add_forward_entry_to_all_switches",
|
|
627
|
-
add_forward_entry_to_all_switches, 2 );
|
|
628
|
-
rb_define_method( mSwitchEvent, "delete_forward_entry_from_all_switches",
|
|
629
|
-
delete_forward_entry_from_all_switches, 2 );
|
|
630
|
-
|
|
631
|
-
rb_define_method( mSwitchEvent, "add_forward_entry_to_switch",
|
|
632
|
-
add_forward_entry_to_switch, 3 );
|
|
633
|
-
rb_define_method( mSwitchEvent, "delete_forward_entry_from_switch",
|
|
634
|
-
delete_forward_entry_from_switch, 3 );
|
|
635
|
-
rb_define_method( mSwitchEvent, "set_forward_entries_to_switch",
|
|
636
|
-
set_forward_entries_to_switch, 3 );
|
|
637
|
-
rb_define_method( mSwitchEvent, "dump_forward_entries_from_switch",
|
|
638
|
-
dump_forward_entries_from_switch, 2 );
|
|
639
|
-
|
|
640
|
-
rb_define_method( mSwitchEvent, "add_forward_entry_to_switch_manager",
|
|
641
|
-
add_forward_entry_to_switch_manager, 2 );
|
|
642
|
-
rb_define_method( mSwitchEvent, "delete_forward_entry_from_switch_manager",
|
|
643
|
-
delete_forward_entry_from_switch_manager, 2 );
|
|
644
|
-
rb_define_method( mSwitchEvent, "set_forward_entries_to_switch_manager",
|
|
645
|
-
set_forward_entries_to_switch_manager, 2 );
|
|
646
|
-
rb_define_method( mSwitchEvent, "dump_forward_entries_from_switch_manager",
|
|
647
|
-
dump_forward_entries_from_switch_manager, 1 );
|
|
648
|
-
}
|