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
|
@@ -1,151 +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/ordered-hash'
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
module Trema
|
|
23
|
-
#
|
|
24
|
-
# The base class of objects appears in the Trema DSL. e.g., host,
|
|
25
|
-
# switch, link etc.
|
|
26
|
-
#
|
|
27
|
-
class NetworkComponent
|
|
28
|
-
class << self
|
|
29
|
-
#
|
|
30
|
-
# Returns the `name' => object hash DB of instances
|
|
31
|
-
#
|
|
32
|
-
# @example
|
|
33
|
-
# p App.instances
|
|
34
|
-
# #=> {"trema tetris"=>#<App:0xb73c9328>, ...}
|
|
35
|
-
#
|
|
36
|
-
# @return [Array] the {OrderedHash} of instances
|
|
37
|
-
#
|
|
38
|
-
# @api public
|
|
39
|
-
#
|
|
40
|
-
attr_accessor :instances
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
#
|
|
45
|
-
# Called implicitly when inherited
|
|
46
|
-
#
|
|
47
|
-
# @example
|
|
48
|
-
# #
|
|
49
|
-
# # The following calls inherited() implicitly
|
|
50
|
-
# # then creates an instance DB of App object.
|
|
51
|
-
# #
|
|
52
|
-
# class App < Trmea::NetworkComponent
|
|
53
|
-
# attr_accessor :name
|
|
54
|
-
# end
|
|
55
|
-
#
|
|
56
|
-
# @return [undefined]
|
|
57
|
-
#
|
|
58
|
-
# @api public
|
|
59
|
-
#
|
|
60
|
-
def self.inherited(subclass)
|
|
61
|
-
subclass.instances ||= OrderedHash.new
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def self.clear
|
|
67
|
-
instances.clear
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
#
|
|
72
|
-
# Iterates over the list of instances
|
|
73
|
-
#
|
|
74
|
-
# @example
|
|
75
|
-
# App.each do | each |
|
|
76
|
-
# p each.name
|
|
77
|
-
# end
|
|
78
|
-
#
|
|
79
|
-
# @return [Array] the list of instances
|
|
80
|
-
#
|
|
81
|
-
# @api public
|
|
82
|
-
#
|
|
83
|
-
def self.each(&block)
|
|
84
|
-
instances.values.each do | each |
|
|
85
|
-
block.call each
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
#
|
|
91
|
-
# Looks up a instance DB by its name
|
|
92
|
-
#
|
|
93
|
-
# @example
|
|
94
|
-
# ttetris = TremaTetris.new
|
|
95
|
-
# ttetris.name = "trema tetris"
|
|
96
|
-
#
|
|
97
|
-
# App.add ttetris
|
|
98
|
-
#
|
|
99
|
-
# App[ "trema tetris" ] => ttetris
|
|
100
|
-
#
|
|
101
|
-
# @return [Object] the associated object
|
|
102
|
-
#
|
|
103
|
-
# @api public
|
|
104
|
-
#
|
|
105
|
-
def self.[](name)
|
|
106
|
-
instances[ name]
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
#
|
|
111
|
-
# Returns the number of instances.
|
|
112
|
-
#
|
|
113
|
-
# @example
|
|
114
|
-
# App.size #=> 3
|
|
115
|
-
#
|
|
116
|
-
# @return [Number] the number of instances
|
|
117
|
-
#
|
|
118
|
-
# @api public
|
|
119
|
-
#
|
|
120
|
-
def self.size
|
|
121
|
-
instances.values.size
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
#
|
|
126
|
-
# Inserts a object to instance DB
|
|
127
|
-
#
|
|
128
|
-
# @example
|
|
129
|
-
# ttetris = TremaTetris.new
|
|
130
|
-
# ttetris.name = "trema tetris"
|
|
131
|
-
#
|
|
132
|
-
# App.add ttetris
|
|
133
|
-
#
|
|
134
|
-
# @param [Object, #name] object
|
|
135
|
-
#
|
|
136
|
-
# @return [Object] the added object
|
|
137
|
-
#
|
|
138
|
-
# @api public
|
|
139
|
-
#
|
|
140
|
-
def self.add(object)
|
|
141
|
-
instances[ object.name] = object
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
### Local variables:
|
|
148
|
-
### mode: Ruby
|
|
149
|
-
### coding: utf-8
|
|
150
|
-
### indent-tabs-mode: nil
|
|
151
|
-
### End:
|
data/ruby/trema/ofctl.rb
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# The controller class of ovs-ofctl.
|
|
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
|
-
require 'trema/executables'
|
|
22
|
-
require 'trema/flow'
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
module Trema
|
|
26
|
-
class Ofctl
|
|
27
|
-
def add_flow(switch, options)
|
|
28
|
-
actions = options[ :actions]
|
|
29
|
-
options.delete :actions
|
|
30
|
-
option_string = options.collect do | k, v |
|
|
31
|
-
"#{ k }=#{ v }"
|
|
32
|
-
end.join(',')
|
|
33
|
-
sh "sudo #{ Executables.ovs_ofctl } add-flow #{ switch.network_device } #{ option_string },actions=#{ actions } 2>/dev/null"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def flows(switch)
|
|
38
|
-
dump_flows(switch).split("\n")[ 1..-1].collect do | each |
|
|
39
|
-
Trema::Flow.parse(each)
|
|
40
|
-
end.compact
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def users_flows(switch)
|
|
45
|
-
flows(switch).select(&:users_flow?)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def dump_flows(switch)
|
|
50
|
-
`sudo #{ Executables.ovs_ofctl } dump-flows #{ switch.network_device } 2>&1`
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def bring_port_up(switch, port_number)
|
|
55
|
-
`sudo #{ Executables.ovs_ofctl } mod-port #{ switch.network_device } #{ port_number } up 2>&1`
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def bring_port_down(switch, port_number)
|
|
60
|
-
`sudo #{ Executables.ovs_ofctl } mod-port #{ switch.network_device } #{ port_number } down 2>&1`
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
### Local variables:
|
|
67
|
-
### mode: Ruby
|
|
68
|
-
### coding: utf-8-unix
|
|
69
|
-
### indent-tabs-mode: nil
|
|
70
|
-
### End:
|
data/ruby/trema/open-vswitch.rb
DELETED
|
@@ -1,160 +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/default_openflow_channel_port'
|
|
20
|
-
require 'trema/daemon'
|
|
21
|
-
require 'trema/executables'
|
|
22
|
-
require 'trema/hardware-switch'
|
|
23
|
-
require 'trema/ofctl'
|
|
24
|
-
require 'trema/path'
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
module Trema
|
|
28
|
-
#
|
|
29
|
-
# Open vSwitch support (http://openvswitch.org)
|
|
30
|
-
#
|
|
31
|
-
class OpenVswitch < HardwareSwitch
|
|
32
|
-
include Trema::Daemon
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
log_file { | vswitch | "openflowd.#{ vswitch.name }.log" }
|
|
36
|
-
command { | vswitch | vswitch.__send__ :command }
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
#
|
|
40
|
-
# Creates a new Open vSwitch from {DSL::Vswitch}
|
|
41
|
-
#
|
|
42
|
-
# @example
|
|
43
|
-
# vswitch = Trema::OpenVswitch.new( stanza )
|
|
44
|
-
#
|
|
45
|
-
# @return [OpenVswitch]
|
|
46
|
-
#
|
|
47
|
-
def initialize(stanza, port = DEFAULT_OPENFLOW_CHANNEL_PORT)
|
|
48
|
-
super stanza
|
|
49
|
-
@port = port
|
|
50
|
-
@interfaces = []
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
#
|
|
55
|
-
# Add a network interface used for a virtual port
|
|
56
|
-
#
|
|
57
|
-
# @example
|
|
58
|
-
# vswitch << "trema3-0"
|
|
59
|
-
#
|
|
60
|
-
# @return [Array]
|
|
61
|
-
#
|
|
62
|
-
def <<(interface)
|
|
63
|
-
@interfaces << interface
|
|
64
|
-
restart!
|
|
65
|
-
@interfaces
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
#
|
|
70
|
-
# Returns the network device name associated with the datapath's
|
|
71
|
-
# local port
|
|
72
|
-
#
|
|
73
|
-
# @example
|
|
74
|
-
# vswitch.network_device #=> "vsw_0xabc"
|
|
75
|
-
#
|
|
76
|
-
# @return [String]
|
|
77
|
-
#
|
|
78
|
-
def network_device
|
|
79
|
-
"vsw_#{ @stanza.fetch :dpid_short }"
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
#
|
|
84
|
-
# Returns flow entries
|
|
85
|
-
#
|
|
86
|
-
# @example
|
|
87
|
-
# vswitch.flows #=> [ flow0, flow1, ... ]
|
|
88
|
-
#
|
|
89
|
-
# @return [Array]
|
|
90
|
-
#
|
|
91
|
-
def flows
|
|
92
|
-
Ofctl.new.users_flows(self)
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
def bring_port_up(port_number)
|
|
97
|
-
Ofctl.new.bring_port_up self, port_number
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
def bring_port_down(port_number)
|
|
102
|
-
Ofctl.new.bring_port_down self, port_number
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
############################################################################
|
|
107
|
-
private
|
|
108
|
-
############################################################################
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def command
|
|
112
|
-
"sudo #{ Executables.ovs_openflowd } #{ options }"
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
def options
|
|
117
|
-
default_options.join(' ') + " netdev@#{ network_device } tcp:#{ ip }:#{ @port }"
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
def default_options
|
|
122
|
-
[
|
|
123
|
-
'--detach',
|
|
124
|
-
'--out-of-band',
|
|
125
|
-
'--fail=closed',
|
|
126
|
-
'--inactivity-probe=180',
|
|
127
|
-
'--rate-limit=40000',
|
|
128
|
-
'--burst-limit=20000',
|
|
129
|
-
"--pidfile=#{ pid_file }",
|
|
130
|
-
'--verbose=ANY:file:dbg',
|
|
131
|
-
'--verbose=ANY:console:err',
|
|
132
|
-
"--log-file=#{ log_file }",
|
|
133
|
-
"--datapath-id=#{ dpid_long }",
|
|
134
|
-
"--unixctl=#{ unixctl }"
|
|
135
|
-
] + ports_option
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
def ip
|
|
140
|
-
@stanza.fetch :ip
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
def ports_option
|
|
145
|
-
@interfaces.empty? ? [] : ["--ports=#{ @interfaces.join(",") }"]
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def unixctl
|
|
150
|
-
File.join Trema.sock, "ovs-openflowd.#{ name }.ctl"
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
### Local variables:
|
|
157
|
-
### mode: Ruby
|
|
158
|
-
### coding: utf-8-unix
|
|
159
|
-
### indent-tabs-mode: nil
|
|
160
|
-
### End:
|
data/ruby/trema/openflow-error.c
DELETED
|
@@ -1,193 +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 "ruby.h"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
extern VALUE mTrema;
|
|
24
|
-
VALUE cOpenflowError;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/*
|
|
28
|
-
* The occurence of reported errors/exceptions manifested as an instance - a
|
|
29
|
-
* {OpenflowError} object. The user would not explicitly instantiate
|
|
30
|
-
* a {OpenflowError} but would be created while parsing the +OFPT_ERROR+ message.
|
|
31
|
-
*
|
|
32
|
-
* @overload initialize(options={})
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* OpenflowError.new(
|
|
36
|
-
* :datapath_id => 0xabc,
|
|
37
|
-
* :transaction_id => 123,
|
|
38
|
-
* :type => OFPET_BAD_REQUEST,
|
|
39
|
-
* :code => OFPBRC_BAD_SUBTYPE,
|
|
40
|
-
* :data => data
|
|
41
|
-
* )
|
|
42
|
-
*
|
|
43
|
-
* @param [Hash] options
|
|
44
|
-
* the options to create a message with.
|
|
45
|
-
*
|
|
46
|
-
* @option options [Number] :datapath_id
|
|
47
|
-
* message originator identifier. This idenfier is typed as a 64-bit number
|
|
48
|
-
* and must be unique in a given domain of application deployment.
|
|
49
|
-
*
|
|
50
|
-
* @option options [Number] :transaction_id
|
|
51
|
-
* the transaction_id of the offended message.
|
|
52
|
-
*
|
|
53
|
-
* @option options [Number] :type
|
|
54
|
-
* the command or action that failed signifies the kind of error.
|
|
55
|
-
*
|
|
56
|
-
* @option options [Number] :code
|
|
57
|
-
* the reason of the failed type error.
|
|
58
|
-
*
|
|
59
|
-
* @option options [String] :data
|
|
60
|
-
* variable length data interpreted based on type and code.
|
|
61
|
-
*
|
|
62
|
-
* @return [OpenflowError]
|
|
63
|
-
* an object that encapsulates the +OFPT_ERROR+ OpenFlow message.
|
|
64
|
-
*/
|
|
65
|
-
static VALUE
|
|
66
|
-
openflow_error_init( VALUE self, VALUE options ) {
|
|
67
|
-
rb_iv_set( self, "@attribute", options );
|
|
68
|
-
return self;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
/*
|
|
73
|
-
* Message originator identifier.
|
|
74
|
-
*
|
|
75
|
-
* @return [Number] the value of datapath_id.
|
|
76
|
-
*/
|
|
77
|
-
static VALUE
|
|
78
|
-
openflow_error_datapath_id( VALUE self ) {
|
|
79
|
-
return rb_hash_aref( rb_iv_get( self, "@attribute" ), ID2SYM( rb_intern( "datapath_id" ) ) );
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
/*
|
|
84
|
-
* The transaction_id of the offended message.
|
|
85
|
-
*
|
|
86
|
-
* @return [Number] the value of transaction_id.
|
|
87
|
-
*/
|
|
88
|
-
static VALUE
|
|
89
|
-
openflow_error_transaction_id( VALUE self ) {
|
|
90
|
-
return rb_hash_aref( rb_iv_get( self, "@attribute" ), ID2SYM( rb_intern( "transaction_id" ) ) );
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
/*
|
|
95
|
-
* The command or action that failed.
|
|
96
|
-
*
|
|
97
|
-
* @return [Number] the value of type.
|
|
98
|
-
*/
|
|
99
|
-
static VALUE
|
|
100
|
-
openflow_error_type( VALUE self ) {
|
|
101
|
-
return rb_hash_aref( rb_iv_get( self, "@attribute" ), ID2SYM( rb_intern( "type" ) ) );
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
/*
|
|
106
|
-
* The reason of the failed type error.
|
|
107
|
-
*
|
|
108
|
-
* @return [Number] the value of code.
|
|
109
|
-
*/
|
|
110
|
-
static VALUE
|
|
111
|
-
openflow_error_code( VALUE self ) {
|
|
112
|
-
return rb_hash_aref( rb_iv_get( self, "@attribute" ), ID2SYM( rb_intern( "code" ) ) );
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
/*
|
|
117
|
-
* Variable length data interpreted based on type and code.
|
|
118
|
-
*
|
|
119
|
-
* @return [String] if error type is +OFPET_HELLO_FAILED+.
|
|
120
|
-
* @return [Array] an array of bytes of the offending message for any other error type.
|
|
121
|
-
*/
|
|
122
|
-
static VALUE
|
|
123
|
-
openflow_error_data( VALUE self ) {
|
|
124
|
-
return rb_hash_aref( rb_iv_get( self, "@attribute" ), ID2SYM( rb_intern( "data" ) ) );
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
/*
|
|
129
|
-
* Document-class: Trema::OpenflowError
|
|
130
|
-
*/
|
|
131
|
-
void
|
|
132
|
-
Init_openflow_error() {
|
|
133
|
-
mTrema = rb_eval_string( "Trema" );
|
|
134
|
-
cOpenflowError = rb_define_class_under( mTrema, "OpenflowError", rb_cObject );
|
|
135
|
-
rb_define_method( cOpenflowError, "initialize", openflow_error_init, 1 );
|
|
136
|
-
rb_define_method( cOpenflowError, "datapath_id", openflow_error_datapath_id, 0 );
|
|
137
|
-
rb_define_method( cOpenflowError, "transaction_id", openflow_error_transaction_id, 0 );
|
|
138
|
-
rb_define_method( cOpenflowError, "type", openflow_error_type, 0 );
|
|
139
|
-
rb_define_method( cOpenflowError, "code", openflow_error_code, 0 );
|
|
140
|
-
rb_define_method( cOpenflowError, "data", openflow_error_data, 0 );
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
void
|
|
145
|
-
handle_openflow_error(
|
|
146
|
-
uint64_t datapath_id,
|
|
147
|
-
uint32_t transaction_id,
|
|
148
|
-
uint16_t type,
|
|
149
|
-
uint16_t code,
|
|
150
|
-
buffer *body,
|
|
151
|
-
void *user_data
|
|
152
|
-
) {
|
|
153
|
-
VALUE controller = ( VALUE ) user_data;
|
|
154
|
-
if ( rb_respond_to( controller, rb_intern( "openflow_error" ) ) == Qfalse ) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
VALUE attributes = rb_hash_new();
|
|
158
|
-
|
|
159
|
-
rb_hash_aset( attributes, ID2SYM( rb_intern( "datapath_id" ) ), ULL2NUM( datapath_id ) );
|
|
160
|
-
rb_hash_aset( attributes, ID2SYM( rb_intern( "transaction_id" ) ), UINT2NUM( transaction_id ) );
|
|
161
|
-
rb_hash_aset( attributes, ID2SYM( rb_intern( "type" ) ), UINT2NUM( type ) );
|
|
162
|
-
rb_hash_aset( attributes, ID2SYM( rb_intern( "code" ) ), UINT2NUM( code ) );
|
|
163
|
-
|
|
164
|
-
switch ( type ) {
|
|
165
|
-
case OFPET_HELLO_FAILED:
|
|
166
|
-
case OFPET_BAD_REQUEST:
|
|
167
|
-
case OFPET_BAD_ACTION:
|
|
168
|
-
case OFPET_FLOW_MOD_FAILED:
|
|
169
|
-
case OFPET_PORT_MOD_FAILED:
|
|
170
|
-
case OFPET_QUEUE_OP_FAILED:
|
|
171
|
-
{
|
|
172
|
-
if ( body != NULL ) {
|
|
173
|
-
if ( body->length ) {
|
|
174
|
-
rb_hash_aset( attributes, ID2SYM( rb_intern( "data" ) ), rb_str_new( body->data, ( long ) body->length ) );
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
break;
|
|
179
|
-
default:
|
|
180
|
-
critical( "Un-handled error type ( type = %u ),", type );
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
VALUE openflow_error = rb_funcall( cOpenflowError, rb_intern( "new" ), 1, attributes );
|
|
184
|
-
rb_funcall( controller, rb_intern( "openflow_error" ), 2, ULL2NUM( datapath_id ), openflow_error );
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
/*
|
|
189
|
-
* Local variables:
|
|
190
|
-
* c-basic-offset: 2
|
|
191
|
-
* indent-tabs-mode: nil
|
|
192
|
-
* End:
|
|
193
|
-
*/
|