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/src/switch_manager/switch.h
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* OpenFlow Switch Manager
|
|
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_MANAGER_H
|
|
22
|
-
#define SWITCH_MANAGER_H
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#include "switchinfo.h"
|
|
26
|
-
#include "trema.h"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
#define MESSENGER_SERVICE_TYPE_STATE 1
|
|
30
|
-
#define MESSENGER_SERVICE_TYPE_SUBSCRIBE 2
|
|
31
|
-
#define MESSENGER_SERVICE_TYPE_NOTIFY 3
|
|
32
|
-
|
|
33
|
-
#define SWITCH_STATE_TIMEOUT_HELLO 5 // in seconds
|
|
34
|
-
#define SWITCH_STATE_TIMEOUT_FEATURES_REPLY 5 // in seconds
|
|
35
|
-
|
|
36
|
-
#define SWITCH_MANAGER_PREFIX "switch."
|
|
37
|
-
#define SWITCH_MANAGER_PREFIX_STR_LEN sizeof( SWITCH_MANAGER_PREFIX )
|
|
38
|
-
#define SWITCH_MANAGER_DPID_STR_LEN sizeof( "1234567812345678" )
|
|
39
|
-
|
|
40
|
-
int switch_event_connected( struct switch_info *switch_info );
|
|
41
|
-
int switch_event_disconnected( struct switch_info *switch_info );
|
|
42
|
-
int switch_event_recv_hello( struct switch_info *switch_info );
|
|
43
|
-
int switch_event_recv_echoreply( struct switch_info *switch_info, buffer *buf );
|
|
44
|
-
int switch_event_recv_featuresreply( struct switch_info *switch_info, uint64_t *datapath_id );
|
|
45
|
-
int switch_event_recv_from_application( uint64_t *datapath_id, char *application_service_name, buffer *buf );
|
|
46
|
-
int switch_event_disconnect_request( uint64_t *datapath_id );
|
|
47
|
-
int switch_event_recv_error( struct switch_info *sw_info );
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
#endif // SWITCH_MANAGER_H
|
|
@@ -1,643 +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 <errno.h>
|
|
20
|
-
#include <getopt.h>
|
|
21
|
-
#include <inttypes.h>
|
|
22
|
-
#include <limits.h>
|
|
23
|
-
#include <openflow.h>
|
|
24
|
-
#include <signal.h>
|
|
25
|
-
#include <stdio.h>
|
|
26
|
-
#include <stdlib.h>
|
|
27
|
-
#include <string.h>
|
|
28
|
-
#include <sys/wait.h>
|
|
29
|
-
#include <unistd.h>
|
|
30
|
-
#include <assert.h>
|
|
31
|
-
#include "trema.h"
|
|
32
|
-
#include "secure_channel_listener.h"
|
|
33
|
-
#include "switch_manager.h"
|
|
34
|
-
#include "dpid_table.h"
|
|
35
|
-
#include "switch_option.h"
|
|
36
|
-
#include "event_forward_entry_manipulation.h"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
#define DEFAULT_TCP_PORT 6653
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
#ifdef UNIT_TESTING
|
|
43
|
-
#define static
|
|
44
|
-
|
|
45
|
-
#define main switch_manager_main
|
|
46
|
-
|
|
47
|
-
#ifdef printf
|
|
48
|
-
#undef printf
|
|
49
|
-
#endif
|
|
50
|
-
#define printf( fmt, args... ) mock_printf2( fmt, ##args )
|
|
51
|
-
int mock_printf2( const char *format, ... );
|
|
52
|
-
|
|
53
|
-
#ifdef die
|
|
54
|
-
#undef die
|
|
55
|
-
#endif
|
|
56
|
-
#define die( fmt, ... ) \
|
|
57
|
-
do { \
|
|
58
|
-
} \
|
|
59
|
-
while ( 0 )
|
|
60
|
-
|
|
61
|
-
#ifdef exit
|
|
62
|
-
#undef exit
|
|
63
|
-
#endif
|
|
64
|
-
#define exit mock_exit
|
|
65
|
-
void mock_exit( int status );
|
|
66
|
-
|
|
67
|
-
#ifdef wait3
|
|
68
|
-
#undef wait3
|
|
69
|
-
#endif
|
|
70
|
-
#define wait3 mock_wait3
|
|
71
|
-
pid_t mock_wait3( int *status, int options, struct rusage *rusage );
|
|
72
|
-
|
|
73
|
-
#ifdef secure_channel_accept
|
|
74
|
-
#undef secure_channel_accept
|
|
75
|
-
#endif
|
|
76
|
-
#define secure_channel_accept mock_secure_channel_accept
|
|
77
|
-
void mock_secure_channel_accept( struct listener_info *listener_info );
|
|
78
|
-
|
|
79
|
-
#ifdef access
|
|
80
|
-
#undef access
|
|
81
|
-
#endif
|
|
82
|
-
#define access mock_access
|
|
83
|
-
int mock_access( const char *pathname, int mode );
|
|
84
|
-
|
|
85
|
-
#ifdef get_current_dir_name
|
|
86
|
-
#undef get_current_dir_name
|
|
87
|
-
#endif
|
|
88
|
-
#define get_current_dir_name mock_get_current_dir_name
|
|
89
|
-
char *mock_get_current_dir_name( void );
|
|
90
|
-
|
|
91
|
-
#ifdef init_trema
|
|
92
|
-
#undef init_trema
|
|
93
|
-
#endif
|
|
94
|
-
#define init_trema mock_init_trema
|
|
95
|
-
void mock_init_trema( int *argc, char ***argv );
|
|
96
|
-
|
|
97
|
-
#ifdef set_fd_set_callback
|
|
98
|
-
#undef set_fd_set_callback
|
|
99
|
-
#endif
|
|
100
|
-
#define set_fd_set_callback mock_set_fd_set_callback
|
|
101
|
-
void mock_set_fd_set_callback( void ( *callback )( fd_set *read_set, fd_set *write_set ) );
|
|
102
|
-
|
|
103
|
-
#ifdef set_check_fd_isset_callback
|
|
104
|
-
#undef set_check_fd_isset_callback
|
|
105
|
-
#endif
|
|
106
|
-
#define set_check_fd_isset_callback mock_set_check_fd_isset_callback
|
|
107
|
-
void mock_set_check_fd_isset_callback( void ( *callback )( fd_set *read_set, fd_set *write_set ) );
|
|
108
|
-
|
|
109
|
-
#ifdef secure_channel_accept
|
|
110
|
-
#undef secure_channel_accept
|
|
111
|
-
#endif
|
|
112
|
-
#define secure_channel_accept mock_secure_channel_accept
|
|
113
|
-
void mock_secure_channel_accept( struct listener_info *listener_info );
|
|
114
|
-
|
|
115
|
-
#ifdef secure_channel_listen_start
|
|
116
|
-
#undef secure_channel_listen_start
|
|
117
|
-
#endif
|
|
118
|
-
#define secure_channel_listen_start mock_secure_channel_listen_start
|
|
119
|
-
bool mock_secure_channel_listen_start( struct listener_info *listener_info );
|
|
120
|
-
|
|
121
|
-
#ifdef get_trema_home
|
|
122
|
-
#undef get_trema_home
|
|
123
|
-
#endif
|
|
124
|
-
#define get_trema_home mock_get_trema_home
|
|
125
|
-
char *mock_get_trema_home( void );
|
|
126
|
-
|
|
127
|
-
#ifdef start_trema
|
|
128
|
-
#undef start_trema
|
|
129
|
-
#endif
|
|
130
|
-
#define start_trema mock_start_trema
|
|
131
|
-
void mock_start_trema( void );
|
|
132
|
-
|
|
133
|
-
#ifdef get_executable_name
|
|
134
|
-
#undef get_executable_name
|
|
135
|
-
#endif
|
|
136
|
-
#define get_executable_name mock_get_executable_name
|
|
137
|
-
const char *mock_get_executable_name( void );
|
|
138
|
-
|
|
139
|
-
#ifdef push_external_callback
|
|
140
|
-
#undef push_external_callback
|
|
141
|
-
#endif
|
|
142
|
-
#define push_external_callback mock_push_external_callback
|
|
143
|
-
void mock_push_external_callback( void ( *callback )( void ) );
|
|
144
|
-
|
|
145
|
-
#endif // UNIT_TESTING
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
struct listener_info listener_info;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
static struct option long_options[] = {
|
|
152
|
-
{ "port", 1, NULL, 'p' },
|
|
153
|
-
{ "switch", 1, NULL, 's' },
|
|
154
|
-
{ NULL, 0, NULL, 0 },
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
static char short_options[] = "p:s:";
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
void
|
|
161
|
-
usage() {
|
|
162
|
-
printf(
|
|
163
|
-
"OpenFlow Switch Manager.\n"
|
|
164
|
-
"Usage: %s [OPTION]... [-- SWITCH_DAEMON_OPTION]...\n"
|
|
165
|
-
"\n"
|
|
166
|
-
" -s, --switch=PATH the command path of switch\n"
|
|
167
|
-
" -n, --name=SERVICE_NAME service name\n"
|
|
168
|
-
" -p, --port=PORT server listen port (default %u)\n"
|
|
169
|
-
" -d, --daemonize run in the background\n"
|
|
170
|
-
" -l, --logging_level=LEVEL set logging level\n"
|
|
171
|
-
" -g, --syslog output log messages to syslog\n"
|
|
172
|
-
" -f, --logging_facility=FACILITY set syslog facility\n"
|
|
173
|
-
" -h, --help display this help and exit\n"
|
|
174
|
-
, get_executable_name(), DEFAULT_TCP_PORT
|
|
175
|
-
);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
static void
|
|
180
|
-
wait_child( void ) {
|
|
181
|
-
int status;
|
|
182
|
-
pid_t pid;
|
|
183
|
-
|
|
184
|
-
while ( 1 ) {
|
|
185
|
-
pid = wait3( &status, WNOHANG, NULL );
|
|
186
|
-
if ( pid <= 0 ) {
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
if ( WIFEXITED( status ) ) {
|
|
190
|
-
debug( "Child process is exited. pid:%d, status:%d", pid, WEXITSTATUS( status ) );
|
|
191
|
-
}
|
|
192
|
-
else if ( WIFSIGNALED( status ) ) {
|
|
193
|
-
if ( WCOREDUMP( status ) ) {
|
|
194
|
-
debug( "Child process dumped core. pid:%d, signal:%d", pid, WTERMSIG( status ) );
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
debug( "Child process is terminated. pid:%d, signal:%d", pid, WTERMSIG( status ) );
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
static void
|
|
205
|
-
handle_sigchld( int signum ) {
|
|
206
|
-
UNUSED( signum );
|
|
207
|
-
|
|
208
|
-
// because wait_child() is not signal safe, we call it later.
|
|
209
|
-
if ( push_external_callback != NULL ) {
|
|
210
|
-
push_external_callback( wait_child );
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
static char *
|
|
216
|
-
xconcatenate_path( const char *dir, const char *file ) {
|
|
217
|
-
size_t len;
|
|
218
|
-
const char *sp = "/";
|
|
219
|
-
char *p;
|
|
220
|
-
|
|
221
|
-
len = strlen( dir ) + strlen( file ) + 2;
|
|
222
|
-
if ( dir[ strlen( dir ) - 1 ] == '/' ) {
|
|
223
|
-
sp = "";
|
|
224
|
-
}
|
|
225
|
-
p = xmalloc( len );
|
|
226
|
-
snprintf( p, len, "%s%s%s", dir, sp, file );
|
|
227
|
-
|
|
228
|
-
return p;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
static char *
|
|
233
|
-
absolute_path( const char *dir, const char *file ) {
|
|
234
|
-
char *p;
|
|
235
|
-
int ret;
|
|
236
|
-
|
|
237
|
-
if ( *file == '/' ) {
|
|
238
|
-
p = xstrdup( file );
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
p = xconcatenate_path( dir, file );
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// x bit check
|
|
245
|
-
ret = access( p, X_OK );
|
|
246
|
-
if ( ret != 0 ) {
|
|
247
|
-
die( "%s: %s", p, strerror( errno ) );
|
|
248
|
-
xfree( p );
|
|
249
|
-
return NULL;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
return p;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
static void
|
|
257
|
-
init_listener_info( struct listener_info *listener_info ) {
|
|
258
|
-
memset( listener_info, 0, sizeof( struct listener_info ) );
|
|
259
|
-
listener_info->switch_daemon = xconcatenate_path( get_trema_home(), SWITCH_MANAGER_PATH );
|
|
260
|
-
listener_info->listen_port = DEFAULT_TCP_PORT;
|
|
261
|
-
listener_info->listen_fd = -1;
|
|
262
|
-
create_list( &listener_info->vendor_service_name_list );
|
|
263
|
-
create_list( &listener_info->packetin_service_name_list );
|
|
264
|
-
create_list( &listener_info->portstatus_service_name_list );
|
|
265
|
-
create_list( &listener_info->state_service_name_list );
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
static void
|
|
270
|
-
finalize_listener_info( struct listener_info *listener_info ) {
|
|
271
|
-
if ( listener_info->switch_daemon != NULL ) {
|
|
272
|
-
xfree( ( void * ) ( uintptr_t ) listener_info->switch_daemon );
|
|
273
|
-
listener_info->switch_daemon = NULL;
|
|
274
|
-
}
|
|
275
|
-
if ( listener_info->listen_fd >= 0 ) {
|
|
276
|
-
set_readable( listener_info->listen_fd, false );
|
|
277
|
-
delete_fd_handler( listener_info->listen_fd );
|
|
278
|
-
|
|
279
|
-
close( listener_info->listen_fd );
|
|
280
|
-
listener_info->listen_fd = -1;
|
|
281
|
-
}
|
|
282
|
-
for ( int i = 0; i < listener_info->switch_daemon_argc; ++i ) {
|
|
283
|
-
xfree( listener_info->switch_daemon_argv[ i ] );
|
|
284
|
-
listener_info->switch_daemon_argv[ i ] = NULL;
|
|
285
|
-
}
|
|
286
|
-
xfree( listener_info->switch_daemon_argv );
|
|
287
|
-
listener_info->switch_daemon_argv = NULL;
|
|
288
|
-
|
|
289
|
-
iterate_list( listener_info->vendor_service_name_list, xfree_data, NULL );
|
|
290
|
-
delete_list( listener_info->vendor_service_name_list );
|
|
291
|
-
listener_info->vendor_service_name_list = NULL;
|
|
292
|
-
iterate_list( listener_info->packetin_service_name_list, xfree_data, NULL );
|
|
293
|
-
delete_list( listener_info->packetin_service_name_list );
|
|
294
|
-
listener_info->packetin_service_name_list = NULL;
|
|
295
|
-
iterate_list( listener_info->portstatus_service_name_list, xfree_data, NULL );
|
|
296
|
-
delete_list( listener_info->portstatus_service_name_list );
|
|
297
|
-
listener_info->portstatus_service_name_list = NULL;
|
|
298
|
-
iterate_list( listener_info->state_service_name_list, xfree_data, NULL );
|
|
299
|
-
delete_list( listener_info->state_service_name_list );
|
|
300
|
-
listener_info->state_service_name_list = NULL;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
static uint16_t
|
|
305
|
-
strtoport( const char *str ) {
|
|
306
|
-
char *ep;
|
|
307
|
-
long l;
|
|
308
|
-
|
|
309
|
-
l = strtol( str, &ep, 0 );
|
|
310
|
-
if ( l <= 0 || l > USHRT_MAX || *ep != '\0' ) {
|
|
311
|
-
die( "Invalid port. %s", str );
|
|
312
|
-
return 0;
|
|
313
|
-
}
|
|
314
|
-
return ( uint16_t ) l;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
static bool
|
|
319
|
-
parse_argument( struct listener_info *listener_info, int argc, char *argv[] ) {
|
|
320
|
-
int c;
|
|
321
|
-
|
|
322
|
-
while ( ( c = getopt_long( argc, argv, short_options, long_options, NULL ) ) != -1 ) {
|
|
323
|
-
switch ( c ) {
|
|
324
|
-
case 'p':
|
|
325
|
-
listener_info->listen_port = strtoport( optarg );
|
|
326
|
-
if ( listener_info->listen_port == 0 ) {
|
|
327
|
-
return false;
|
|
328
|
-
}
|
|
329
|
-
break;
|
|
330
|
-
case 's':
|
|
331
|
-
xfree( ( void * ) ( uintptr_t ) listener_info->switch_daemon );
|
|
332
|
-
listener_info->switch_daemon = xstrdup( optarg );
|
|
333
|
-
break;
|
|
334
|
-
default:
|
|
335
|
-
usage();
|
|
336
|
-
exit( EXIT_SUCCESS );
|
|
337
|
-
return false;
|
|
338
|
-
break;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
debug( "Start parsing switch daemon arguments." );
|
|
343
|
-
// index of first switch daemon arguments in argv
|
|
344
|
-
const int switch_arg_begin = optind;
|
|
345
|
-
|
|
346
|
-
// reorder switch daemon arguments
|
|
347
|
-
opterr = 0; // disable error messages of trema common options
|
|
348
|
-
while ( getopt_long( argc, argv, switch_short_options, switch_long_options, NULL ) != -1 );
|
|
349
|
-
|
|
350
|
-
// index of first packet_in::..., etc. in argv
|
|
351
|
-
const int switch_arg_option_begin = optind;
|
|
352
|
-
|
|
353
|
-
// deep copy switch daemon arguments excluding packet_in::..., etc.
|
|
354
|
-
listener_info->switch_daemon_argc = switch_arg_option_begin - switch_arg_begin;
|
|
355
|
-
listener_info->switch_daemon_argv = xcalloc( ( size_t ) listener_info->switch_daemon_argc + 1,
|
|
356
|
-
sizeof( char * ) );
|
|
357
|
-
for ( int i = 0; i < listener_info->switch_daemon_argc; ++i ) {
|
|
358
|
-
debug( "switch daemon option: %s\n", argv[switch_arg_begin + i] );
|
|
359
|
-
listener_info->switch_daemon_argv[ i ] = xstrdup( argv[ switch_arg_begin + i ] );
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
// set service lists for each event type
|
|
363
|
-
for ( int i = switch_arg_option_begin; i < argc; i++ ) {
|
|
364
|
-
if ( strncmp( argv[ i ], VENDOR_PREFIX, strlen( VENDOR_PREFIX ) ) == 0 ) {
|
|
365
|
-
char *service_name = xstrdup( argv[ i ] + strlen( VENDOR_PREFIX ) );
|
|
366
|
-
debug( "event: " VENDOR_PREFIX "%s", service_name );
|
|
367
|
-
insert_in_front( &listener_info->vendor_service_name_list, service_name );
|
|
368
|
-
}
|
|
369
|
-
else if ( strncmp( argv[ i ], PACKET_IN_PREFIX, strlen( PACKET_IN_PREFIX ) ) == 0 ) {
|
|
370
|
-
char *service_name = xstrdup( argv[ i ] + strlen( PACKET_IN_PREFIX ) );
|
|
371
|
-
debug( "event: " PACKET_IN_PREFIX "%s", service_name );
|
|
372
|
-
insert_in_front( &listener_info->packetin_service_name_list, service_name );
|
|
373
|
-
}
|
|
374
|
-
else if ( strncmp( argv[ i ], PORTSTATUS_PREFIX, strlen( PORTSTATUS_PREFIX ) ) == 0 ) {
|
|
375
|
-
char *service_name = xstrdup( argv[ i ] + strlen( PORTSTATUS_PREFIX ) );
|
|
376
|
-
debug( "event: " PORTSTATUS_PREFIX "%s", service_name );
|
|
377
|
-
insert_in_front( &listener_info->portstatus_service_name_list, service_name );
|
|
378
|
-
}
|
|
379
|
-
else if ( strncmp( argv[ i ], STATE_PREFIX, strlen( STATE_PREFIX ) ) == 0 ) {
|
|
380
|
-
char *service_name = xstrdup( argv[ i ] + strlen( STATE_PREFIX ) );
|
|
381
|
-
debug( "event: " STATE_PREFIX "%s", service_name );
|
|
382
|
-
insert_in_front( &listener_info->state_service_name_list, service_name );
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
return true;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
static void
|
|
391
|
-
catch_sigchild( void ) {
|
|
392
|
-
struct sigaction sigchld_handler;
|
|
393
|
-
|
|
394
|
-
memset( &sigchld_handler, 0, sizeof( struct sigaction ) );
|
|
395
|
-
sigchld_handler.sa_handler = ( void * ) handle_sigchld;
|
|
396
|
-
sigchld_handler.sa_flags = SA_RESTART;
|
|
397
|
-
sigaction( SIGCHLD, &sigchld_handler, NULL );
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
static void
|
|
402
|
-
handle_switch_ready( uint64_t datapath_id, void *user_data ) {
|
|
403
|
-
UNUSED( user_data );
|
|
404
|
-
|
|
405
|
-
debug( "Switch (dpid = %#" PRIx64 ") is connected.", datapath_id );
|
|
406
|
-
insert_dpid_entry( &datapath_id );
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
static void
|
|
411
|
-
handle_switch_disconnected( uint64_t datapath_id, void *user_data ) {
|
|
412
|
-
UNUSED( user_data );
|
|
413
|
-
|
|
414
|
-
debug( "Switch (dpid = %#" PRIx64 ") is disconnected.", datapath_id );
|
|
415
|
-
delete_dpid_entry( &datapath_id );
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
static void
|
|
420
|
-
recv_request( const messenger_context_handle *handle,
|
|
421
|
-
uint16_t tag, void *data, size_t len ) {
|
|
422
|
-
UNUSED( tag );
|
|
423
|
-
UNUSED( data );
|
|
424
|
-
UNUSED( len );
|
|
425
|
-
|
|
426
|
-
buffer *reply = get_switches();
|
|
427
|
-
send_reply_message( handle, 0, reply->data, reply->length );
|
|
428
|
-
free_buffer( reply );
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
static void
|
|
433
|
-
management_event_forward_entry_operation( const messenger_context_handle *handle, uint32_t command, event_forward_operation_request *req, size_t data_len ) {
|
|
434
|
-
|
|
435
|
-
debug( "management efi command:%#x, type:%#x, n_services:%d", command, req->type, req->n_services );
|
|
436
|
-
|
|
437
|
-
list_element **subject = NULL;
|
|
438
|
-
switch ( req->type ) {
|
|
439
|
-
case EVENT_FORWARD_TYPE_VENDOR:
|
|
440
|
-
info( "Managing vendor event." );
|
|
441
|
-
subject = &listener_info.vendor_service_name_list;
|
|
442
|
-
break;
|
|
443
|
-
|
|
444
|
-
case EVENT_FORWARD_TYPE_PACKET_IN:
|
|
445
|
-
info( "Managing packet_in event." );
|
|
446
|
-
subject = &listener_info.packetin_service_name_list;
|
|
447
|
-
break;
|
|
448
|
-
|
|
449
|
-
case EVENT_FORWARD_TYPE_PORT_STATUS:
|
|
450
|
-
info( "Managing port_status event." );
|
|
451
|
-
subject = &listener_info.portstatus_service_name_list;
|
|
452
|
-
break;
|
|
453
|
-
|
|
454
|
-
case EVENT_FORWARD_TYPE_STATE_NOTIFY:
|
|
455
|
-
info( "Managing state_notify event." );
|
|
456
|
-
subject = &listener_info.state_service_name_list;
|
|
457
|
-
break;
|
|
458
|
-
|
|
459
|
-
default:
|
|
460
|
-
error( "Invalid EVENT_FWD_TYPE ( %#x )", req->type );
|
|
461
|
-
event_forward_operation_reply res;
|
|
462
|
-
memset( &res, 0, sizeof( event_forward_operation_reply ) );
|
|
463
|
-
res.type = req->type;
|
|
464
|
-
res.result = EFI_OPERATION_FAILED;
|
|
465
|
-
management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_FAILED, command, &res, sizeof( event_forward_operation_reply ) );
|
|
466
|
-
send_management_application_reply( handle, reply );
|
|
467
|
-
xfree( reply );
|
|
468
|
-
return;
|
|
469
|
-
}
|
|
470
|
-
assert( subject != NULL );
|
|
471
|
-
|
|
472
|
-
switch ( command ) {
|
|
473
|
-
case EVENT_FORWARD_ENTRY_ADD:
|
|
474
|
-
management_event_forward_entry_add( subject, req, data_len );
|
|
475
|
-
break;
|
|
476
|
-
|
|
477
|
-
case EVENT_FORWARD_ENTRY_DELETE:
|
|
478
|
-
management_event_forward_entry_delete( subject, req, data_len );
|
|
479
|
-
break;
|
|
480
|
-
|
|
481
|
-
case EVENT_FORWARD_ENTRY_DUMP:
|
|
482
|
-
info( "Dumping current event filter." );
|
|
483
|
-
// do nothing
|
|
484
|
-
break;
|
|
485
|
-
|
|
486
|
-
case EVENT_FORWARD_ENTRY_SET:
|
|
487
|
-
management_event_forward_entries_set( subject, req, data_len );
|
|
488
|
-
break;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
buffer *buf = create_event_forward_operation_reply( req->type, EFI_OPERATION_SUCCEEDED, *subject );
|
|
492
|
-
management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_SUCCEEDED, command, buf->data, buf->length );
|
|
493
|
-
free_buffer( buf );
|
|
494
|
-
send_management_application_reply( handle, reply );
|
|
495
|
-
xfree( reply );
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
static void
|
|
500
|
-
management_recv( const messenger_context_handle *handle, uint32_t command, void *data, size_t data_len, void *user_data ) {
|
|
501
|
-
UNUSED( user_data );
|
|
502
|
-
|
|
503
|
-
switch ( command ) {
|
|
504
|
-
case EVENT_FORWARD_ENTRY_ADD:
|
|
505
|
-
case EVENT_FORWARD_ENTRY_DELETE:
|
|
506
|
-
case EVENT_FORWARD_ENTRY_DUMP:
|
|
507
|
-
case EVENT_FORWARD_ENTRY_SET:
|
|
508
|
-
{
|
|
509
|
-
event_forward_operation_request *req = data;
|
|
510
|
-
req->n_services = ntohl( req->n_services );
|
|
511
|
-
management_event_forward_entry_operation( handle, command, req, data_len );
|
|
512
|
-
return;
|
|
513
|
-
}
|
|
514
|
-
break;
|
|
515
|
-
|
|
516
|
-
case EFI_GET_SWLIST:
|
|
517
|
-
{
|
|
518
|
-
buffer *buf = get_switches();
|
|
519
|
-
management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_SUCCEEDED, command, buf->data, buf->length );
|
|
520
|
-
free_buffer( buf );
|
|
521
|
-
send_management_application_reply( handle, reply );
|
|
522
|
-
xfree( reply );
|
|
523
|
-
}
|
|
524
|
-
break;
|
|
525
|
-
|
|
526
|
-
default:
|
|
527
|
-
{
|
|
528
|
-
error( "Undefined management command ( %#x )", command );
|
|
529
|
-
management_application_reply *reply = create_management_application_reply( MANAGEMENT_REQUEST_FAILED, command, NULL, 0 );
|
|
530
|
-
send_management_application_reply( handle, reply );
|
|
531
|
-
xfree( reply );
|
|
532
|
-
return;
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
static bool
|
|
539
|
-
start_service_management( void ) {
|
|
540
|
-
return add_message_requested_callback( get_trema_name(), recv_request );
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
static void
|
|
545
|
-
stop_service_management( void ) {
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
static bool
|
|
550
|
-
start_switch_management( void ) {
|
|
551
|
-
init_openflow_application_interface( get_trema_name() );
|
|
552
|
-
set_switch_ready_handler( handle_switch_ready, NULL );
|
|
553
|
-
set_switch_disconnected_handler( handle_switch_disconnected, NULL );
|
|
554
|
-
|
|
555
|
-
return true;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
static void
|
|
560
|
-
stop_switch_management( void ) {
|
|
561
|
-
if ( listener_info.listen_fd > -1 ) {
|
|
562
|
-
set_readable( listener_info.listen_fd, false );
|
|
563
|
-
delete_fd_handler( listener_info.listen_fd );
|
|
564
|
-
listener_info.listen_fd = -1;
|
|
565
|
-
}
|
|
566
|
-
stop_trema();
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
static void
|
|
571
|
-
handle_sigterm( int signum ) {
|
|
572
|
-
UNUSED( signum );
|
|
573
|
-
|
|
574
|
-
push_external_callback( stop_switch_management );
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
int
|
|
579
|
-
main( int argc, char *argv[] ) {
|
|
580
|
-
bool ret;
|
|
581
|
-
const char *switch_daemon = NULL;
|
|
582
|
-
char *startup_dir;
|
|
583
|
-
|
|
584
|
-
// get startup directory using absolute_path()
|
|
585
|
-
startup_dir = get_current_dir_name();
|
|
586
|
-
if ( startup_dir == NULL ) {
|
|
587
|
-
die( "Failed to get_current_dir_name." );
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
init_trema( &argc, &argv ); // changes the current working directory
|
|
591
|
-
|
|
592
|
-
init_listener_info( &listener_info );
|
|
593
|
-
ret = parse_argument( &listener_info, argc, argv );
|
|
594
|
-
if ( !ret ) {
|
|
595
|
-
finalize_listener_info( &listener_info );
|
|
596
|
-
exit( EXIT_FAILURE );
|
|
597
|
-
}
|
|
598
|
-
set_management_application_request_handler( management_recv, NULL );
|
|
599
|
-
|
|
600
|
-
init_dpid_table();
|
|
601
|
-
start_service_management();
|
|
602
|
-
start_switch_management();
|
|
603
|
-
|
|
604
|
-
switch_daemon = listener_info.switch_daemon;
|
|
605
|
-
listener_info.switch_daemon = absolute_path( startup_dir, switch_daemon );
|
|
606
|
-
xfree( ( void * ) ( uintptr_t ) switch_daemon );
|
|
607
|
-
// free returned buffer of get_current_dir_name()
|
|
608
|
-
free( startup_dir );
|
|
609
|
-
|
|
610
|
-
struct sigaction signal_exit;
|
|
611
|
-
memset( &signal_exit, 0, sizeof( struct sigaction ) );
|
|
612
|
-
signal_exit.sa_handler = handle_sigterm;
|
|
613
|
-
sigaction( SIGINT, &signal_exit, NULL );
|
|
614
|
-
sigaction( SIGTERM, &signal_exit, NULL );
|
|
615
|
-
|
|
616
|
-
catch_sigchild();
|
|
617
|
-
|
|
618
|
-
// listener start (listen socket binding and listen)
|
|
619
|
-
ret = secure_channel_listen_start( &listener_info );
|
|
620
|
-
if ( !ret ) {
|
|
621
|
-
finalize_listener_info( &listener_info );
|
|
622
|
-
exit( EXIT_FAILURE );
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
set_fd_handler( listener_info.listen_fd, secure_channel_accept, &listener_info, NULL, NULL );
|
|
626
|
-
set_readable( listener_info.listen_fd, true );
|
|
627
|
-
|
|
628
|
-
start_trema();
|
|
629
|
-
|
|
630
|
-
finalize_listener_info( &listener_info );
|
|
631
|
-
stop_service_management();
|
|
632
|
-
finalize_dpid_table();
|
|
633
|
-
|
|
634
|
-
return 0;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
/*
|
|
639
|
-
* Local variables:
|
|
640
|
-
* c-basic-offset: 2
|
|
641
|
-
* indent-tabs-mode: nil
|
|
642
|
-
* End:
|
|
643
|
-
*/
|