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,138 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2013 NEC Corporation
|
|
3
|
-
*
|
|
4
|
-
* This program is free software; you can redistribute it and/or modify
|
|
5
|
-
* it under the terms of the GNU General Public License, version 2, as
|
|
6
|
-
* published by the Free Software Foundation.
|
|
7
|
-
*
|
|
8
|
-
* This program is distributed in the hope that it will be useful,
|
|
9
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
-
* GNU General Public License for more details.
|
|
12
|
-
*
|
|
13
|
-
* You should have received a copy of the GNU General Public License along
|
|
14
|
-
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
-
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
#ifndef EVENT_FORWARD_INTERFACE_H_
|
|
19
|
-
#define EVENT_FORWARD_INTERFACE_H_
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
#include "buffer.h"
|
|
23
|
-
#include "linked_list.h"
|
|
24
|
-
|
|
25
|
-
// management interface application_ids
|
|
26
|
-
enum switch_management_command {
|
|
27
|
-
// switch only
|
|
28
|
-
DUMP_XID_TABLE = 0,
|
|
29
|
-
DUMP_COOKIE_TABLE,
|
|
30
|
-
TOGGLE_COOKIE_AGING,
|
|
31
|
-
|
|
32
|
-
// switch manager/daemon
|
|
33
|
-
EVENT_FORWARD_ENTRY_ADD,
|
|
34
|
-
EVENT_FORWARD_ENTRY_DELETE,
|
|
35
|
-
EVENT_FORWARD_ENTRY_DUMP,
|
|
36
|
-
EVENT_FORWARD_ENTRY_SET,
|
|
37
|
-
|
|
38
|
-
// switch manager only
|
|
39
|
-
EFI_GET_SWLIST,
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
enum efi_event_type {
|
|
43
|
-
EVENT_FORWARD_TYPE_VENDOR = 0,
|
|
44
|
-
EVENT_FORWARD_TYPE_PACKET_IN,
|
|
45
|
-
EVENT_FORWARD_TYPE_PORT_STATUS,
|
|
46
|
-
EVENT_FORWARD_TYPE_STATE_NOTIFY
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
enum efi_result {
|
|
50
|
-
EFI_OPERATION_SUCCEEDED = 0,
|
|
51
|
-
EFI_OPERATION_FAILED,
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
// messenger message data structure
|
|
55
|
-
typedef struct {
|
|
56
|
-
// enum efi_event_type
|
|
57
|
-
uint8_t type;
|
|
58
|
-
uint8_t pad[3];
|
|
59
|
-
// Number of element in service_list. 0 for dump, 1 for add/delete, N for set operation.
|
|
60
|
-
uint32_t n_services;
|
|
61
|
-
// e.g. "service1\0service2\0"
|
|
62
|
-
char service_list[0];
|
|
63
|
-
} __attribute__( ( packed ) ) event_forward_operation_request;
|
|
64
|
-
|
|
65
|
-
typedef struct {
|
|
66
|
-
// enum efi_event_type
|
|
67
|
-
uint8_t type;
|
|
68
|
-
// enum efi_result
|
|
69
|
-
uint8_t result;
|
|
70
|
-
uint8_t pad[2];
|
|
71
|
-
uint32_t n_services;
|
|
72
|
-
// service list after operation
|
|
73
|
-
char service_list[0];
|
|
74
|
-
} __attribute__( ( packed ) ) event_forward_operation_reply;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// struct for user API
|
|
78
|
-
typedef struct {
|
|
79
|
-
enum efi_result result;
|
|
80
|
-
uint32_t n_services;
|
|
81
|
-
// service list after operation.
|
|
82
|
-
const char **services;
|
|
83
|
-
} event_forward_operation_result;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// High level API callback function signature
|
|
87
|
-
typedef void ( *event_forward_entry_to_all_callback )(
|
|
88
|
-
enum efi_result result,
|
|
89
|
-
void *user_data
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// Low level API callback function signature
|
|
94
|
-
typedef void ( *event_forward_entry_operation_callback )(
|
|
95
|
-
event_forward_operation_result result,
|
|
96
|
-
void *user_data
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
typedef void ( *switch_list_request_callback )(
|
|
101
|
-
// NULL if failed
|
|
102
|
-
uint64_t* dpids,
|
|
103
|
-
size_t n_dpids,
|
|
104
|
-
void *user_data
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
// setup/teardown messenger channel
|
|
109
|
-
bool init_event_forward_interface( void );
|
|
110
|
-
bool finalize_event_forward_interface( void );
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
// High level API (calls Low level API for switch manager and existing switch daemons)
|
|
114
|
-
bool add_event_forward_entry_to_all_switches( enum efi_event_type type, const char* service_name, event_forward_entry_to_all_callback callback, void* user_data );
|
|
115
|
-
bool delete_event_forward_entry_to_all_switches( enum efi_event_type type, const char* service_name, event_forward_entry_to_all_callback callback, void* user_data );
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
// Low level API for switch manager
|
|
119
|
-
bool set_switch_manager_event_forward_entries( enum efi_event_type type, list_element* service_list, event_forward_entry_operation_callback callback, void* user_data );
|
|
120
|
-
bool add_switch_manager_event_forward_entry( enum efi_event_type type, const char* service_name, event_forward_entry_operation_callback callback, void* user_data );
|
|
121
|
-
bool delete_switch_manager_event_forward_entry( enum efi_event_type type, const char* service_name, event_forward_entry_operation_callback callback, void* user_data );
|
|
122
|
-
bool dump_switch_manager_event_forward_entries( enum efi_event_type type, event_forward_entry_operation_callback callback, void* user_data );
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
// Low level API for switch daemon
|
|
126
|
-
bool set_switch_event_forward_entries( uint64_t dpid, enum efi_event_type type, list_element* service_list, event_forward_entry_operation_callback callback, void* user_data );
|
|
127
|
-
bool add_switch_event_forward_entry( uint64_t dpid, enum efi_event_type type, const char* service_name, event_forward_entry_operation_callback callback, void* user_data );
|
|
128
|
-
bool delete_switch_event_forward_entry( uint64_t dpid, enum efi_event_type type, const char* service_name, event_forward_entry_operation_callback callback, void* user_data );
|
|
129
|
-
bool dump_switch_event_forward_entries( uint64_t dpid, enum efi_event_type type, event_forward_entry_operation_callback callback, void* user_data );
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// internal utilities
|
|
133
|
-
buffer* create_event_forward_operation_request( buffer* buf, enum efi_event_type, list_element* service_list );
|
|
134
|
-
buffer* create_event_forward_operation_reply( enum efi_event_type, enum efi_result, list_element* service_list );
|
|
135
|
-
|
|
136
|
-
bool send_efi_switch_list_request( switch_list_request_callback callback, void* user_data );
|
|
137
|
-
|
|
138
|
-
#endif /* EVENT_FORWARD_INTERFACE_H_ */
|
data/src/lib/event_handler.c
DELETED
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2011 axsh Ltd.
|
|
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 <stddef.h>
|
|
21
|
-
#include <string.h>
|
|
22
|
-
#include <sys/time.h>
|
|
23
|
-
#include <unistd.h>
|
|
24
|
-
#include "checks.h"
|
|
25
|
-
#include "event_handler.h"
|
|
26
|
-
#include "external_callback.h"
|
|
27
|
-
#include "log.h"
|
|
28
|
-
#include "timer.h"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
#ifdef UNIT_TESTING
|
|
32
|
-
|
|
33
|
-
#define static
|
|
34
|
-
|
|
35
|
-
#ifdef error
|
|
36
|
-
#undef error
|
|
37
|
-
#endif
|
|
38
|
-
#define error mock_error
|
|
39
|
-
extern void mock_error( const char *format, ... );
|
|
40
|
-
|
|
41
|
-
#ifdef debug
|
|
42
|
-
#undef debug
|
|
43
|
-
#endif
|
|
44
|
-
#define debug mock_debug
|
|
45
|
-
extern void mock_debug( const char *format, ... );
|
|
46
|
-
|
|
47
|
-
#ifdef warn
|
|
48
|
-
#undef warn
|
|
49
|
-
#endif
|
|
50
|
-
#define warn mock_warn
|
|
51
|
-
extern void mock_warn( const char *format, ... );
|
|
52
|
-
|
|
53
|
-
#ifdef add_periodic_event_callback
|
|
54
|
-
#undef add_periodic_event_callback
|
|
55
|
-
#endif
|
|
56
|
-
#define add_periodic_event_callback mock_add_periodic_event_callback
|
|
57
|
-
extern bool mock_add_periodic_event_callback( const time_t seconds, void ( *callback )( void *user_data ), void *user_data );
|
|
58
|
-
|
|
59
|
-
#ifdef execute_timer_events
|
|
60
|
-
#undef execute_timer_events
|
|
61
|
-
#endif
|
|
62
|
-
#define execute_timer_events mock_execute_timer_events
|
|
63
|
-
extern void mock_execute_timer_events( int *next_timeout_usec );
|
|
64
|
-
|
|
65
|
-
#ifdef init_external_callback
|
|
66
|
-
#undef init_external_callback
|
|
67
|
-
#endif
|
|
68
|
-
#define init_external_callback mock_init_external_callback
|
|
69
|
-
extern void mock_init_external_callback( void );
|
|
70
|
-
|
|
71
|
-
#ifdef finalize_external_callback
|
|
72
|
-
#undef finalize_external_callback
|
|
73
|
-
#endif
|
|
74
|
-
#define finalize_external_callback mock_finalize_external_callback
|
|
75
|
-
extern void mock_finalize_external_callback( void );
|
|
76
|
-
|
|
77
|
-
#ifdef push_external_callback
|
|
78
|
-
#undef push_external_callback
|
|
79
|
-
#endif
|
|
80
|
-
#define push_external_callback mock_push_external_callback
|
|
81
|
-
extern void mock_push_external_callback( external_callback_t callback );
|
|
82
|
-
|
|
83
|
-
#ifdef run_external_callback
|
|
84
|
-
#undef run_external_callback
|
|
85
|
-
#endif
|
|
86
|
-
#define run_external_callback mock_run_external_callback
|
|
87
|
-
extern void mock_run_external_callback( void );
|
|
88
|
-
|
|
89
|
-
#endif // UNIT_TESTING
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
typedef struct {
|
|
93
|
-
int fd;
|
|
94
|
-
event_fd_callback read_callback;
|
|
95
|
-
event_fd_callback write_callback;
|
|
96
|
-
void *read_data;
|
|
97
|
-
void *write_data;
|
|
98
|
-
} event_fd;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
enum {
|
|
102
|
-
EVENT_HANDLER_INITIALIZED = 0x1,
|
|
103
|
-
EVENT_HANDLER_RUNNING = 0x2,
|
|
104
|
-
EVENT_HANDLER_STOP = 0x4,
|
|
105
|
-
EVENT_HANDLER_FINALIZED = 0x8
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
int event_handler_state = 0;
|
|
109
|
-
|
|
110
|
-
event_fd event_list[ FD_SETSIZE ];
|
|
111
|
-
event_fd *event_last;
|
|
112
|
-
|
|
113
|
-
event_fd *event_fd_set[ FD_SETSIZE ];
|
|
114
|
-
|
|
115
|
-
fd_set event_read_set;
|
|
116
|
-
fd_set event_write_set;
|
|
117
|
-
fd_set current_read_set;
|
|
118
|
-
fd_set current_write_set;
|
|
119
|
-
|
|
120
|
-
int fd_set_size = 0;
|
|
121
|
-
|
|
122
|
-
static void
|
|
123
|
-
_init_event_handler() {
|
|
124
|
-
event_last = event_list;
|
|
125
|
-
|
|
126
|
-
memset( event_list, 0, sizeof( event_fd ) * FD_SETSIZE );
|
|
127
|
-
memset( event_fd_set, 0, sizeof( event_fd * ) * FD_SETSIZE );
|
|
128
|
-
|
|
129
|
-
FD_ZERO( &event_read_set );
|
|
130
|
-
FD_ZERO( &event_write_set );
|
|
131
|
-
|
|
132
|
-
init_external_callback();
|
|
133
|
-
|
|
134
|
-
event_handler_state = EVENT_HANDLER_INITIALIZED;
|
|
135
|
-
}
|
|
136
|
-
void ( *init_event_handler )() = _init_event_handler;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
static void
|
|
140
|
-
_finalize_event_handler() {
|
|
141
|
-
if ( event_last != event_list ) {
|
|
142
|
-
warn( "Event Handler finalized with %ti fd event handlers still active. (%i, ...)",
|
|
143
|
-
( event_last - event_list ), ( event_last > event_list ? event_list->fd : -1 ) );
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
event_handler_state = EVENT_HANDLER_FINALIZED;
|
|
148
|
-
|
|
149
|
-
finalize_external_callback();
|
|
150
|
-
}
|
|
151
|
-
void ( *finalize_event_handler )() = _finalize_event_handler;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
static bool
|
|
155
|
-
_run_event_handler_once( int timeout_usec ) {
|
|
156
|
-
run_external_callback();
|
|
157
|
-
|
|
158
|
-
memcpy( ¤t_read_set, &event_read_set, sizeof( fd_set ) );
|
|
159
|
-
memcpy( ¤t_write_set, &event_write_set, sizeof( fd_set ) );
|
|
160
|
-
|
|
161
|
-
struct timeval timeout;
|
|
162
|
-
timeout.tv_sec = timeout_usec / 1000000;
|
|
163
|
-
timeout.tv_usec = timeout_usec % 1000000;
|
|
164
|
-
int set_count = select( fd_set_size, ¤t_read_set, ¤t_write_set, NULL, &timeout );
|
|
165
|
-
|
|
166
|
-
if ( set_count == -1 ) {
|
|
167
|
-
if ( errno == EINTR ) {
|
|
168
|
-
run_external_callback();
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
error( "Failed to select ( errno = %s [%d] ).", strerror( errno ), errno );
|
|
172
|
-
return false;
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
else if ( set_count == 0 ) {
|
|
176
|
-
// timed out
|
|
177
|
-
run_external_callback();
|
|
178
|
-
return true;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
run_external_callback();
|
|
182
|
-
|
|
183
|
-
event_fd *event_itr = event_list;
|
|
184
|
-
while ( event_itr < event_last ) {
|
|
185
|
-
event_fd current_event = *event_itr;
|
|
186
|
-
|
|
187
|
-
if ( FD_ISSET( current_event.fd, ¤t_write_set ) ) {
|
|
188
|
-
current_event.write_callback( current_event.fd, current_event.write_data );
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// In the rare cases the current fd is closed, a new one is opened
|
|
192
|
-
// with the same fd and is put in the same location we can just
|
|
193
|
-
// wait for the next select call.
|
|
194
|
-
if ( current_event.fd == event_itr->fd ) {
|
|
195
|
-
event_itr = event_itr + 1;
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
debug( "run_event_handler_once: event fd is changed ( current = %d, new = %d )", current_event.fd, event_itr->fd );
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
run_external_callback();
|
|
203
|
-
|
|
204
|
-
event_itr = event_list;
|
|
205
|
-
while ( event_itr < event_last ) {
|
|
206
|
-
event_fd current_event = *event_itr;
|
|
207
|
-
|
|
208
|
-
if ( FD_ISSET( current_event.fd, ¤t_read_set ) ) {
|
|
209
|
-
current_event.read_callback( current_event.fd, current_event.read_data );
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// In the rare cases the current fd is closed, a new one is opened
|
|
213
|
-
// with the same fd and is put in the same location we can just
|
|
214
|
-
// wait for the next select call.
|
|
215
|
-
if ( current_event.fd == event_itr->fd ) {
|
|
216
|
-
event_itr = event_itr + 1;
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
debug( "run_event_handler_once: event fd is changed ( current = %d, new = %d )", current_event.fd, event_itr->fd );
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
run_external_callback();
|
|
224
|
-
|
|
225
|
-
return true;
|
|
226
|
-
}
|
|
227
|
-
bool ( *run_event_handler_once )( int ) = _run_event_handler_once;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
static bool
|
|
231
|
-
_start_event_handler() {
|
|
232
|
-
debug( "Starting event handler." );
|
|
233
|
-
|
|
234
|
-
event_handler_state |= EVENT_HANDLER_RUNNING;
|
|
235
|
-
|
|
236
|
-
int timeout_usec;
|
|
237
|
-
while ( !( event_handler_state & EVENT_HANDLER_STOP ) ) {
|
|
238
|
-
execute_timer_events( &timeout_usec );
|
|
239
|
-
|
|
240
|
-
if ( !run_event_handler_once( timeout_usec ) ) {
|
|
241
|
-
error( "Failed to run main loop." );
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
event_handler_state &= ~EVENT_HANDLER_RUNNING;
|
|
247
|
-
|
|
248
|
-
debug( "Event handler terminated." );
|
|
249
|
-
return true;
|
|
250
|
-
}
|
|
251
|
-
bool ( *start_event_handler )() = _start_event_handler;
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
static void
|
|
255
|
-
_stop_event_handler() {
|
|
256
|
-
debug( "Terminating event handler." );
|
|
257
|
-
event_handler_state |= EVENT_HANDLER_STOP;
|
|
258
|
-
}
|
|
259
|
-
void ( *stop_event_handler )() = _stop_event_handler;
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
static void
|
|
264
|
-
_set_fd_handler( int fd,
|
|
265
|
-
event_fd_callback read_callback, void *read_data,
|
|
266
|
-
event_fd_callback write_callback, void *write_data ) {
|
|
267
|
-
debug( "Adding event handler for fd %i, %p, %p.", fd, read_callback, write_callback );
|
|
268
|
-
|
|
269
|
-
// Currently just issue critical warnings instead of killing the
|
|
270
|
-
// program."
|
|
271
|
-
if ( event_fd_set[ fd ] != NULL ) {
|
|
272
|
-
error( "Tried to add an already active fd event handler." );
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
if ( fd < 0 || fd >= FD_SETSIZE ) {
|
|
277
|
-
error( "Tried to add an invalid fd." );
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
if ( event_last >= event_list + FD_SETSIZE ) {
|
|
282
|
-
error( "Event handler list in invalid state." );
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
event_last->fd = fd;
|
|
287
|
-
event_last->read_callback = read_callback;
|
|
288
|
-
event_last->write_callback = write_callback;
|
|
289
|
-
event_last->read_data = read_data;
|
|
290
|
-
event_last->write_data = write_data;
|
|
291
|
-
|
|
292
|
-
event_fd_set[ fd ] = event_last++;
|
|
293
|
-
|
|
294
|
-
if ( fd >= fd_set_size ) {
|
|
295
|
-
fd_set_size = fd + 1;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
void ( *set_fd_handler )( int fd, event_fd_callback read_callback, void *read_data, event_fd_callback write_callback, void *write_data ) = _set_fd_handler;
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
static void
|
|
302
|
-
_delete_fd_handler( int fd ) {
|
|
303
|
-
debug( "Deleting event handler for fd %i.", fd );
|
|
304
|
-
|
|
305
|
-
event_fd *event = event_list;
|
|
306
|
-
|
|
307
|
-
while ( event != event_last && event->fd != fd ) {
|
|
308
|
-
event++;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
if ( event >= event_last || event_fd_set[ fd ] == NULL ) {
|
|
312
|
-
error( "Tried to delete an inactive fd event handler." );
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
if ( FD_ISSET( fd, &event_read_set ) ) {
|
|
317
|
-
error( "Tried to delete an fd event handler with active read notification." );
|
|
318
|
-
// return;
|
|
319
|
-
FD_CLR( fd, &event_read_set );
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
if ( FD_ISSET( fd, &event_write_set ) ) {
|
|
323
|
-
error( "Tried to delete an fd event handler with active write notification." );
|
|
324
|
-
// return;
|
|
325
|
-
FD_CLR( fd, &event_write_set );
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
FD_CLR( fd, ¤t_read_set );
|
|
329
|
-
FD_CLR( fd, ¤t_write_set );
|
|
330
|
-
|
|
331
|
-
event_fd_set[ fd ] = NULL;
|
|
332
|
-
|
|
333
|
-
if ( event != --event_last ) {
|
|
334
|
-
memcpy( event, event_last, sizeof( event_fd ) );
|
|
335
|
-
event_fd_set[ event->fd ] = event;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
memset( event_last, 0, sizeof( event_fd ) );
|
|
339
|
-
event_last->fd = -1;
|
|
340
|
-
|
|
341
|
-
if ( fd == ( fd_set_size - 1 ) ) {
|
|
342
|
-
int i;
|
|
343
|
-
for ( i = ( fd_set_size - 2 ); i >= 0; --i ) {
|
|
344
|
-
if ( event_fd_set[ i ] != NULL ) {
|
|
345
|
-
break;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
fd_set_size = i + 1;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
void ( *delete_fd_handler )( int fd ) = _delete_fd_handler;
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
static void
|
|
355
|
-
_set_readable( int fd, bool state ) {
|
|
356
|
-
if ( fd < 0 || fd >= FD_SETSIZE ) {
|
|
357
|
-
error( "Invalid fd to set_readable call; %i.", fd );
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
if ( event_fd_set[ fd ] == NULL || event_fd_set[ fd ]->read_callback == NULL ) {
|
|
362
|
-
error( "Found fd in invalid state in set_readable; %i, %p.", fd, event_fd_set[ fd ] );
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
if ( state ) {
|
|
367
|
-
FD_SET( fd, &event_read_set );
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
FD_CLR( fd, &event_read_set );
|
|
371
|
-
FD_CLR( fd, ¤t_read_set );
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
void ( *set_readable )( int fd, bool state ) = _set_readable;
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
static void
|
|
378
|
-
_set_writable( int fd, bool state ) {
|
|
379
|
-
if ( fd < 0 || fd >= FD_SETSIZE ) {
|
|
380
|
-
error( "Invalid fd to notify_writeable_event call; %i.", fd );
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
if ( event_fd_set[ fd ] == NULL || event_fd_set[ fd ]->write_callback == NULL ) {
|
|
385
|
-
error( "Found fd in invalid state in notify_writeable_event; %i, %p.", fd, event_fd_set[ fd ] );
|
|
386
|
-
return;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
if ( state ) {
|
|
390
|
-
FD_SET( fd, &event_write_set );
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
FD_CLR( fd, &event_write_set );
|
|
394
|
-
FD_CLR( fd, ¤t_write_set );
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
void ( *set_writable )( int fd, bool state ) = _set_writable;
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
static bool
|
|
401
|
-
_readable( int fd ) {
|
|
402
|
-
return FD_ISSET( fd, &event_read_set );
|
|
403
|
-
}
|
|
404
|
-
bool ( *readable )( int fd ) = _readable;
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
static bool
|
|
408
|
-
_writable( int fd ) {
|
|
409
|
-
return FD_ISSET( fd, &event_write_set );
|
|
410
|
-
}
|
|
411
|
-
bool ( *writable )( int fd ) = _writable;
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
/*
|
|
415
|
-
* Local variables:
|
|
416
|
-
* c-basic-offset: 2
|
|
417
|
-
* indent-tabs-mode: nil
|
|
418
|
-
* End:
|
|
419
|
-
*/
|