trema 0.1.3
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.
- data/.mono.rant +4107 -0
- data/.rspec +1 -0
- data/.yardopts +4 -0
- data/Doxyfile +1679 -0
- data/GPL2 +339 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +71 -0
- data/README.md +135 -0
- data/Rakefile +140 -0
- data/Rantfile +834 -0
- data/VERSION +1 -0
- data/build.rb +32 -0
- data/cruise.rb +389 -0
- data/features/example.dumper.feature +87 -0
- data/features/example.learning_switch.feature +39 -0
- data/features/example.list_switches.feature +38 -0
- data/features/example.message.echo_reply.feature +26 -0
- data/features/example.message.echo_request.feature +25 -0
- data/features/example.message.features_request.feature +84 -0
- data/features/example.message.hello.feature +25 -0
- data/features/example.message.set_config.feature +27 -0
- data/features/example.multi_learning_switch.feature +135 -0
- data/features/example.packetin_filter_config.feature +91 -0
- data/features/example.repeater_hub.feature +49 -0
- data/features/example.switch_monitor.feature +39 -0
- data/features/packetin_filter.feature +49 -0
- data/features/step_definitions/kill_steps.rb +30 -0
- data/features/step_definitions/log_steps.rb +90 -0
- data/features/step_definitions/misc_steps.rb +64 -0
- data/features/step_definitions/off_steps.rb +30 -0
- data/features/step_definitions/run_steps.rb +91 -0
- data/features/step_definitions/send_packets_steps.rb +42 -0
- data/features/step_definitions/show_stats_steps.rb +43 -0
- data/features/step_definitions/stats_steps.rb +39 -0
- data/features/support/env.rb +75 -0
- data/features/support/hooks.rb +8 -0
- data/features/switch_manager.feature +35 -0
- data/features/trema-config.feature +68 -0
- data/features/trema.dump_flows.feature +25 -0
- data/features/trema.feature +25 -0
- data/features/trema.kill.feature +53 -0
- data/features/trema.killall.feature +30 -0
- data/features/trema.reset_stats.feature +14 -0
- data/features/trema.run.feature +46 -0
- data/features/trema.send_packets.feature +56 -0
- data/features/trema.show_stats.feature +67 -0
- data/features/tutorial.hello_trema.feature +27 -0
- data/features/tutorial.packet_in.feature +47 -0
- data/features/tutorial.switch_info.feature +55 -0
- data/ruby/.gitignore +4 -0
- data/ruby/blocker.rb +78 -0
- data/ruby/extconf.rb +71 -0
- data/ruby/sub-process.rb +291 -0
- data/ruby/trema/action-common.c +60 -0
- data/ruby/trema/action-common.h +42 -0
- data/ruby/trema/action-enqueue.c +161 -0
- data/ruby/trema/action-enqueue.h +40 -0
- data/ruby/trema/action-output.c +169 -0
- data/ruby/trema/action-output.h +42 -0
- data/ruby/trema/action-set-dl-dst.c +131 -0
- data/ruby/trema/action-set-dl-dst.h +44 -0
- data/ruby/trema/action-set-dl-src.c +131 -0
- data/ruby/trema/action-set-dl-src.h +44 -0
- data/ruby/trema/action-set-nw-dst.c +135 -0
- data/ruby/trema/action-set-nw-dst.h +42 -0
- data/ruby/trema/action-set-nw-src.c +140 -0
- data/ruby/trema/action-set-nw-src.h +42 -0
- data/ruby/trema/action-set-nw-tos.c +124 -0
- data/ruby/trema/action-set-nw-tos.h +42 -0
- data/ruby/trema/action-set-tp-dst.c +122 -0
- data/ruby/trema/action-set-tp-dst.h +42 -0
- data/ruby/trema/action-set-tp-src.c +124 -0
- data/ruby/trema/action-set-tp-src.h +42 -0
- data/ruby/trema/action-set-vlan-pcp.c +128 -0
- data/ruby/trema/action-set-vlan-pcp.h +42 -0
- data/ruby/trema/action-set-vlan-vid.c +125 -0
- data/ruby/trema/action-set-vlan-vid.h +42 -0
- data/ruby/trema/action-strip-vlan.c +81 -0
- data/ruby/trema/action-strip-vlan.h +42 -0
- data/ruby/trema/action-vendor.c +121 -0
- data/ruby/trema/action-vendor.h +42 -0
- data/ruby/trema/aggregate-stats-reply.rb +70 -0
- data/ruby/trema/app.rb +112 -0
- data/ruby/trema/barrier-reply.c +99 -0
- data/ruby/trema/barrier-reply.h +46 -0
- data/ruby/trema/barrier-request.c +108 -0
- data/ruby/trema/barrier-request.h +44 -0
- data/ruby/trema/cli.rb +269 -0
- data/ruby/trema/command.rb +40 -0
- data/ruby/trema/command/dump_flows.rb +62 -0
- data/ruby/trema/command/kill.rb +71 -0
- data/ruby/trema/command/killall.rb +56 -0
- data/ruby/trema/command/reset_stats.rb +61 -0
- data/ruby/trema/command/ruby.rb +55 -0
- data/ruby/trema/command/run.rb +120 -0
- data/ruby/trema/command/send_packets.rb +130 -0
- data/ruby/trema/command/shell.rb +61 -0
- data/ruby/trema/command/show_stats.rb +84 -0
- data/ruby/trema/command/usage.rb +61 -0
- data/ruby/trema/command/version.rb +39 -0
- data/ruby/trema/controller.c +595 -0
- data/ruby/trema/controller.h +44 -0
- data/ruby/trema/controller.rb +81 -0
- data/ruby/trema/daemon.rb +167 -0
- data/ruby/trema/dsl.rb +34 -0
- data/ruby/trema/dsl/configuration.rb +153 -0
- data/ruby/trema/dsl/context.rb +71 -0
- data/ruby/trema/dsl/link.rb +41 -0
- data/ruby/trema/dsl/parser.rb +70 -0
- data/ruby/trema/dsl/run.rb +49 -0
- data/ruby/trema/dsl/runner.rb +165 -0
- data/ruby/trema/dsl/stanza.rb +53 -0
- data/ruby/trema/dsl/switch.rb +78 -0
- data/ruby/trema/dsl/syntax-error.rb +33 -0
- data/ruby/trema/dsl/syntax.rb +109 -0
- data/ruby/trema/dsl/vhost.rb +108 -0
- data/ruby/trema/dsl/vswitch.rb +47 -0
- data/ruby/trema/echo-reply.c +107 -0
- data/ruby/trema/echo-reply.h +42 -0
- data/ruby/trema/echo-request.c +140 -0
- data/ruby/trema/echo-request.h +42 -0
- data/ruby/trema/error.c +253 -0
- data/ruby/trema/error.h +44 -0
- data/ruby/trema/exact-match.rb +36 -0
- data/ruby/trema/executables.rb +95 -0
- data/ruby/trema/features-reply.c +238 -0
- data/ruby/trema/features-reply.h +60 -0
- data/ruby/trema/features-request.c +109 -0
- data/ruby/trema/features-request.h +44 -0
- data/ruby/trema/flow-removed.c +275 -0
- data/ruby/trema/flow-removed.h +46 -0
- data/ruby/trema/flow-stats-reply.rb +109 -0
- data/ruby/trema/flow.rb +56 -0
- data/ruby/trema/get-config-reply.c +159 -0
- data/ruby/trema/get-config-reply.h +52 -0
- data/ruby/trema/get-config-request.c +107 -0
- data/ruby/trema/get-config-request.h +44 -0
- data/ruby/trema/hello.c +110 -0
- data/ruby/trema/hello.h +44 -0
- data/ruby/trema/host.rb +257 -0
- data/ruby/trema/ip.rb +101 -0
- data/ruby/trema/link.rb +176 -0
- data/ruby/trema/list-switches-reply.c +46 -0
- data/ruby/trema/list-switches-reply.h +40 -0
- data/ruby/trema/logger.c +162 -0
- data/ruby/trema/logger.h +44 -0
- data/ruby/trema/mac.rb +151 -0
- data/ruby/trema/match.c +594 -0
- data/ruby/trema/match.h +36 -0
- data/ruby/trema/monkey-patch/integer.rb +35 -0
- data/ruby/trema/monkey-patch/integer/base-conversions.rb +36 -0
- data/ruby/trema/monkey-patch/integer/ranges.rb +51 -0
- data/ruby/trema/monkey-patch/module.rb +33 -0
- data/ruby/trema/monkey-patch/module/deprecation.rb +41 -0
- data/ruby/trema/monkey-patch/string.rb +33 -0
- data/ruby/trema/monkey-patch/string/inflectors.rb +54 -0
- data/ruby/trema/network-component.rb +153 -0
- data/ruby/trema/ofctl.rb +62 -0
- data/ruby/trema/open-vswitch.rb +154 -0
- data/ruby/trema/openflow-error.c +191 -0
- data/ruby/trema/openflow-error.h +53 -0
- data/ruby/trema/openflow-switch.rb +88 -0
- data/ruby/trema/ordered-hash.rb +74 -0
- data/ruby/trema/packet-queue.rb +178 -0
- data/ruby/trema/packet_in.c +736 -0
- data/ruby/trema/packet_in.h +46 -0
- data/ruby/trema/packetin-filter.rb +126 -0
- data/ruby/trema/path.rb +135 -0
- data/ruby/trema/phost.rb +69 -0
- data/ruby/trema/port-mod.c +226 -0
- data/ruby/trema/port-mod.h +36 -0
- data/ruby/trema/port-stats-reply.rb +111 -0
- data/ruby/trema/port-status.c +156 -0
- data/ruby/trema/port-status.h +45 -0
- data/ruby/trema/port.c +295 -0
- data/ruby/trema/port.h +47 -0
- data/ruby/trema/process.rb +76 -0
- data/ruby/trema/queue-get-config-reply.c +200 -0
- data/ruby/trema/queue-get-config-reply.h +47 -0
- data/ruby/trema/queue-get-config-request.c +141 -0
- data/ruby/trema/queue-get-config-request.h +44 -0
- data/ruby/trema/queue-stats-reply.rb +78 -0
- data/ruby/trema/set-config.c +171 -0
- data/ruby/trema/set-config.h +44 -0
- data/ruby/trema/shell.rb +39 -0
- data/ruby/trema/shell/down.rb +39 -0
- data/ruby/trema/shell/killall.rb +40 -0
- data/ruby/trema/shell/link.rb +61 -0
- data/ruby/trema/shell/reset_stats.rb +50 -0
- data/ruby/trema/shell/run.rb +67 -0
- data/ruby/trema/shell/send_packets.rb +42 -0
- data/ruby/trema/shell/show_stats.rb +49 -0
- data/ruby/trema/shell/up.rb +43 -0
- data/ruby/trema/shell/vhost.rb +44 -0
- data/ruby/trema/shell/vswitch.rb +49 -0
- data/ruby/trema/stats-helper.rb +65 -0
- data/ruby/trema/stats-reply.c +483 -0
- data/ruby/trema/stats-reply.h +53 -0
- data/ruby/trema/stats-request.c +634 -0
- data/ruby/trema/stats-request.h +42 -0
- data/ruby/trema/switch-daemon.rb +74 -0
- data/ruby/trema/switch-disconnected.c +40 -0
- data/ruby/trema/switch-disconnected.h +38 -0
- data/ruby/trema/switch-manager.rb +121 -0
- data/ruby/trema/switch.rb +37 -0
- data/ruby/trema/table-stats-reply.rb +87 -0
- data/ruby/trema/timers.rb +97 -0
- data/ruby/trema/trema.c +122 -0
- data/ruby/trema/tremashark.rb +39 -0
- data/ruby/trema/util.rb +84 -0
- data/ruby/trema/vendor-request.c +193 -0
- data/ruby/trema/vendor-request.h +44 -0
- data/ruby/trema/vendor-stats-reply.rb +62 -0
- data/ruby/trema/vendor.c +152 -0
- data/ruby/trema/vendor.h +52 -0
- data/ruby/trema/version.rb +30 -0
- data/spec/spec_helper.rb +153 -0
- data/spec/support/openflow-message.rb +94 -0
- data/spec/trema/action-enqueue_spec.rb +100 -0
- data/spec/trema/action-output_spec.rb +116 -0
- data/spec/trema/action-set-dl-dst_spec.rb +95 -0
- data/spec/trema/action-set-dl-src_spec.rb +92 -0
- data/spec/trema/action-set-nw-dst_spec.rb +96 -0
- data/spec/trema/action-set-nw-src_spec.rb +97 -0
- data/spec/trema/action-set-nw-tos_spec.rb +88 -0
- data/spec/trema/action-set-tp-dst_spec.rb +88 -0
- data/spec/trema/action-set-tp-src_spec.rb +88 -0
- data/spec/trema/action-set-vlan-pcp_spec.rb +91 -0
- data/spec/trema/action-set-vlan-vid_spec.rb +91 -0
- data/spec/trema/action-strip-vlan_spec.rb +57 -0
- data/spec/trema/action-vendor_spec.rb +90 -0
- data/spec/trema/app_spec.rb +90 -0
- data/spec/trema/barrier-reply_spec.rb +45 -0
- data/spec/trema/barrier-request_spec.rb +83 -0
- data/spec/trema/cli_spec.rb +160 -0
- data/spec/trema/controller_spec.rb +100 -0
- data/spec/trema/dsl/configuration_spec.rb +122 -0
- data/spec/trema/dsl/link_spec.rb +54 -0
- data/spec/trema/dsl/run_spec.rb +78 -0
- data/spec/trema/dsl/runner_spec.rb +239 -0
- data/spec/trema/dsl/switch_spec.rb +77 -0
- data/spec/trema/dsl/syntax_spec.rb +121 -0
- data/spec/trema/dsl/vhost_spec.rb +148 -0
- data/spec/trema/dsl/vswitch_spec.rb +90 -0
- data/spec/trema/echo-reply_spec.rb +49 -0
- data/spec/trema/echo-request_spec.rb +75 -0
- data/spec/trema/error_spec.rb +142 -0
- data/spec/trema/executables_spec.rb +75 -0
- data/spec/trema/features-reply_spec.rb +57 -0
- data/spec/trema/features-request_spec.rb +66 -0
- data/spec/trema/flow-removed_spec.rb +146 -0
- data/spec/trema/get-config-reply_spec.rb +43 -0
- data/spec/trema/get-config-request_spec.rb +82 -0
- data/spec/trema/hello_spec.rb +49 -0
- data/spec/trema/host_spec.rb +193 -0
- data/spec/trema/link_spec.rb +64 -0
- data/spec/trema/list-switches-reply_spec.rb +48 -0
- data/spec/trema/logger_spec.rb +48 -0
- data/spec/trema/mac_spec.rb +115 -0
- data/spec/trema/match_spec.rb +113 -0
- data/spec/trema/open-vswitch_spec.rb +123 -0
- data/spec/trema/openflow-error_spec.rb +141 -0
- data/spec/trema/openflow-switch_spec.rb +56 -0
- data/spec/trema/packet-in_spec.rb +168 -0
- data/spec/trema/packet-out_spec.rb +128 -0
- data/spec/trema/packetin-filter_spec.rb +41 -0
- data/spec/trema/port-mod_spec.rb +101 -0
- data/spec/trema/port-status_spec.rb +108 -0
- data/spec/trema/port_spec.rb +61 -0
- data/spec/trema/process_spec.rb +71 -0
- data/spec/trema/queue-get-config-reply_spec.rb +66 -0
- data/spec/trema/queue-get-config-request_spec.rb +69 -0
- data/spec/trema/set-config_spec.rb +80 -0
- data/spec/trema/shell/vhost_spec.rb +57 -0
- data/spec/trema/shell/vswitch_spec.rb +89 -0
- data/spec/trema/stats-reply_spec.rb +306 -0
- data/spec/trema/stats-request_spec.rb +151 -0
- data/spec/trema/switch-disconnected_spec.rb +58 -0
- data/spec/trema/switch-manager_spec.rb +43 -0
- data/spec/trema/tremashark_spec.rb +41 -0
- data/spec/trema/util_spec.rb +93 -0
- data/spec/trema/vendor-request_spec.rb +79 -0
- data/src/examples/cbench_switch/README +21 -0
- data/src/examples/cbench_switch/cbench-switch.rb +39 -0
- data/src/examples/cbench_switch/cbench_switch.c +68 -0
- data/src/examples/dumper/dumper.c +370 -0
- data/src/examples/dumper/dumper.conf +7 -0
- data/src/examples/dumper/dumper.rb +196 -0
- data/src/examples/hello_trema/README +13 -0
- data/src/examples/hello_trema/hello_trema.c +51 -0
- data/src/examples/hello_trema/hello_trema.conf +3 -0
- data/src/examples/hello_trema/hello_trema.rb +35 -0
- data/src/examples/learning_switch/README +15 -0
- data/src/examples/learning_switch/fdb.rb +112 -0
- data/src/examples/learning_switch/learning-switch.rb +88 -0
- data/src/examples/learning_switch/learning_switch.c +236 -0
- data/src/examples/learning_switch/learning_switch.conf +18 -0
- data/src/examples/list_switches/README +19 -0
- data/src/examples/list_switches/list-switches.rb +45 -0
- data/src/examples/list_switches/list_switches.c +81 -0
- data/src/examples/list_switches/list_switches.conf +15 -0
- data/src/examples/match_compare/match-compare.conf +30 -0
- data/src/examples/match_compare/match-compare.rb +99 -0
- data/src/examples/multi_learning_switch/README +14 -0
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +96 -0
- data/src/examples/multi_learning_switch/multi_learning_switch.c +296 -0
- data/src/examples/multi_learning_switch/multi_learning_switch.conf +17 -0
- data/src/examples/openflow_message/README +11 -0
- data/src/examples/openflow_message/echo-reply.rb +59 -0
- data/src/examples/openflow_message/echo-request.rb +58 -0
- data/src/examples/openflow_message/echo_reply.c +70 -0
- data/src/examples/openflow_message/echo_request.c +70 -0
- data/src/examples/openflow_message/example.rb +63 -0
- data/src/examples/openflow_message/features-request.rb +97 -0
- data/src/examples/openflow_message/features_request.c +168 -0
- data/src/examples/openflow_message/hello.c +70 -0
- data/src/examples/openflow_message/hello.rb +58 -0
- data/src/examples/openflow_message/set-config.rb +59 -0
- data/src/examples/openflow_message/set_config.c +70 -0
- data/src/examples/packet_in/README +15 -0
- data/src/examples/packet_in/packet_in.c +55 -0
- data/src/examples/packet_in/packet_in.conf +15 -0
- data/src/examples/packet_in/packet_in.rb +34 -0
- data/src/examples/packetin_filter_config/README +12 -0
- data/src/examples/packetin_filter_config/add_filter.c +73 -0
- data/src/examples/packetin_filter_config/delete_filter.c +65 -0
- data/src/examples/packetin_filter_config/delete_filter_strict.c +75 -0
- data/src/examples/packetin_filter_config/dump_filter.c +65 -0
- data/src/examples/packetin_filter_config/dump_filter_strict.c +75 -0
- data/src/examples/packetin_filter_config/packetin_filter_config.c +134 -0
- data/src/examples/packetin_filter_config/packetin_filter_config.conf +7 -0
- data/src/examples/packetin_filter_config/utils.c +102 -0
- data/src/examples/packetin_filter_config/utils.h +42 -0
- data/src/examples/repeater_hub/README +8 -0
- data/src/examples/repeater_hub/repeater-hub.rb +43 -0
- data/src/examples/repeater_hub/repeater-hub_spec.rb +156 -0
- data/src/examples/repeater_hub/repeater_hub.c +83 -0
- data/src/examples/repeater_hub/repeater_hub.conf +28 -0
- data/src/examples/switch_info/README +13 -0
- data/src/examples/switch_info/switch_info.c +80 -0
- data/src/examples/switch_info/switch_info.conf +3 -0
- data/src/examples/switch_info/switch_info.rb +46 -0
- data/src/examples/switch_monitor/switch-monitor.conf +3 -0
- data/src/examples/switch_monitor/switch-monitor.rb +58 -0
- data/src/examples/switch_monitor/switch_monitor.c +154 -0
- data/src/examples/traffic_monitor/counter.c +74 -0
- data/src/examples/traffic_monitor/counter.h +48 -0
- data/src/examples/traffic_monitor/counter.rb +46 -0
- data/src/examples/traffic_monitor/fdb.c +76 -0
- data/src/examples/traffic_monitor/fdb.h +50 -0
- data/src/examples/traffic_monitor/fdb.rb +44 -0
- data/src/examples/traffic_monitor/traffic-monitor.rb +100 -0
- data/src/examples/traffic_monitor/traffic_monitor.c +163 -0
- data/src/examples/traffic_monitor/traffic_monitor.conf +16 -0
- data/src/lib/arp.h +61 -0
- data/src/lib/bool.h +49 -0
- data/src/lib/buffer.c +305 -0
- data/src/lib/buffer.h +56 -0
- data/src/lib/byteorder.c +547 -0
- data/src/lib/byteorder.h +110 -0
- data/src/lib/checks.h +42 -0
- data/src/lib/daemon.c +302 -0
- data/src/lib/daemon.h +42 -0
- data/src/lib/doubly_linked_list.c +281 -0
- data/src/lib/doubly_linked_list.h +88 -0
- data/src/lib/ether.c +48 -0
- data/src/lib/ether.h +94 -0
- data/src/lib/etherip.h +46 -0
- data/src/lib/event_handler.c +389 -0
- data/src/lib/event_handler.h +64 -0
- data/src/lib/hash_table.c +417 -0
- data/src/lib/hash_table.h +138 -0
- data/src/lib/icmp.h +74 -0
- data/src/lib/igmp.h +50 -0
- data/src/lib/ipv4.h +50 -0
- data/src/lib/linked_list.c +199 -0
- data/src/lib/linked_list.h +84 -0
- data/src/lib/log.c +402 -0
- data/src/lib/log.h +78 -0
- data/src/lib/match.h +84 -0
- data/src/lib/match_table.c +608 -0
- data/src/lib/match_table.h +51 -0
- data/src/lib/message_queue.c +143 -0
- data/src/lib/message_queue.h +61 -0
- data/src/lib/messenger.c +1714 -0
- data/src/lib/messenger.h +145 -0
- data/src/lib/openflow_application_interface.c +1673 -0
- data/src/lib/openflow_application_interface.h +329 -0
- data/src/lib/openflow_message.c +4051 -0
- data/src/lib/openflow_message.h +288 -0
- data/src/lib/openflow_service_interface.h +59 -0
- data/src/lib/packet_info.c +230 -0
- data/src/lib/packet_info.h +209 -0
- data/src/lib/packet_parser.c +502 -0
- data/src/lib/packetin_filter_interface.c +294 -0
- data/src/lib/packetin_filter_interface.h +127 -0
- data/src/lib/persistent_storage.c +480 -0
- data/src/lib/persistent_storage.h +46 -0
- data/src/lib/stat.c +213 -0
- data/src/lib/stat.h +44 -0
- data/src/lib/tcp.h +67 -0
- data/src/lib/timer.c +350 -0
- data/src/lib/timer.h +53 -0
- data/src/lib/trema.c +710 -0
- data/src/lib/trema.h +79 -0
- data/src/lib/trema_private.c +177 -0
- data/src/lib/trema_private.h +60 -0
- data/src/lib/trema_wrapper.c +56 -0
- data/src/lib/trema_wrapper.h +64 -0
- data/src/lib/udp.h +43 -0
- data/src/lib/utility.c +515 -0
- data/src/lib/utility.h +67 -0
- data/src/lib/wrapper.c +100 -0
- data/src/lib/wrapper.h +76 -0
- data/src/packetin_filter/README +17 -0
- data/src/packetin_filter/packetin_filter.c +575 -0
- data/src/switch_manager/README +20 -0
- data/src/switch_manager/cookie_table.c +292 -0
- data/src/switch_manager/cookie_table.h +72 -0
- data/src/switch_manager/dpid_table.c +110 -0
- data/src/switch_manager/dpid_table.h +46 -0
- data/src/switch_manager/management_interface.h +44 -0
- data/src/switch_manager/ofpmsg_recv.c +482 -0
- data/src/switch_manager/ofpmsg_recv.h +42 -0
- data/src/switch_manager/ofpmsg_send.c +235 -0
- data/src/switch_manager/ofpmsg_send.h +50 -0
- data/src/switch_manager/secure_channel_listener.c +281 -0
- data/src/switch_manager/secure_channel_listener.h +42 -0
- data/src/switch_manager/secure_channel_receiver.c +126 -0
- data/src/switch_manager/secure_channel_receiver.h +43 -0
- data/src/switch_manager/secure_channel_sender.c +126 -0
- data/src/switch_manager/secure_channel_sender.h +43 -0
- data/src/switch_manager/service_interface.c +181 -0
- data/src/switch_manager/service_interface.h +46 -0
- data/src/switch_manager/switch.c +538 -0
- data/src/switch_manager/switch.h +51 -0
- data/src/switch_manager/switch_manager.c +448 -0
- data/src/switch_manager/switch_manager.h +63 -0
- data/src/switch_manager/switchinfo.h +72 -0
- data/src/switch_manager/xid_table.c +184 -0
- data/src/switch_manager/xid_table.h +56 -0
- data/src/tremashark/README +78 -0
- data/src/tremashark/packet_capture.c +357 -0
- data/src/tremashark/pcap_private.h +47 -0
- data/src/tremashark/pcap_queue.c +197 -0
- data/src/tremashark/pcap_queue.h +58 -0
- data/src/tremashark/plugin/.gitignore +6 -0
- data/src/tremashark/plugin/packet-trema/.gitignore +5 -0
- data/src/tremashark/plugin/packet-trema/Makefile +77 -0
- data/src/tremashark/plugin/packet-trema/Makefile.am +110 -0
- data/src/tremashark/plugin/packet-trema/Makefile.common +31 -0
- data/src/tremashark/plugin/packet-trema/moduleinfo.h +41 -0
- data/src/tremashark/plugin/packet-trema/packet-trema.c +1659 -0
- data/src/tremashark/plugin/packet-trema/plugin.c +31 -0
- data/src/tremashark/plugin/user_dlts +2 -0
- data/src/tremashark/queue.c +168 -0
- data/src/tremashark/queue.h +60 -0
- data/src/tremashark/stdin_relay.c +257 -0
- data/src/tremashark/syslog_relay.c +247 -0
- data/src/tremashark/tremashark.c +556 -0
- data/trema +93 -0
- data/trema-config +61 -0
- data/unittests/buffer_stubs.c +74 -0
- data/unittests/cmockery_trema.c +123 -0
- data/unittests/cmockery_trema.h +96 -0
- data/unittests/lib/buffer_test.c +370 -0
- data/unittests/lib/byteorder_test.c +1717 -0
- data/unittests/lib/daemon_test.c +664 -0
- data/unittests/lib/doubly_linked_list_test.c +346 -0
- data/unittests/lib/ether_test.c +127 -0
- data/unittests/lib/hash_table_test.c +278 -0
- data/unittests/lib/linked_list_test.c +343 -0
- data/unittests/lib/log_test.c +459 -0
- data/unittests/lib/match_table_test.c +1509 -0
- data/unittests/lib/message_queue_test.c +379 -0
- data/unittests/lib/messenger_test.c +438 -0
- data/unittests/lib/openflow_application_interface_test.c +3488 -0
- data/unittests/lib/openflow_message_test.c +7337 -0
- data/unittests/lib/packet_info_test.c +544 -0
- data/unittests/lib/packet_parser_test.c +703 -0
- data/unittests/lib/packetin_filter_interface_test.c +723 -0
- data/unittests/lib/persistent_storage_test.c +802 -0
- data/unittests/lib/stat_test.c +291 -0
- 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/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/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 +248 -0
- data/unittests/lib/trema_private_test.c +323 -0
- data/unittests/lib/trema_test.c +985 -0
- data/unittests/lib/utility_test.c +628 -0
- data/unittests/lib/wrapper_test.c +201 -0
- data/unittests/packetin_filter/packetin_filter_test.c +477 -0
- data/unittests/switch_manager/switch_manager_test.c +1178 -0
- data/unittests/wrapper_stubs.c +39 -0
- data/vendor/.gitignore +6 -0
- data/vendor/README +30 -0
- data/vendor/cmockery-20110428.tar.gz +0 -0
- data/vendor/oflops-0.03.tar.gz +0 -0
- data/vendor/oflops_no_snmp+1.0.0.patch +340 -0
- data/vendor/openflow-1.0.0.tar.gz +0 -0
- data/vendor/openflow.git.tar.gz +0 -0
- data/vendor/openvswitch-1.2.2.tar.gz +0 -0
- data/vendor/ruby-ifconfig-1.2/COPYING +340 -0
- data/vendor/ruby-ifconfig-1.2/Changelog +16 -0
- data/vendor/ruby-ifconfig-1.2/INSTALL +239 -0
- data/vendor/ruby-ifconfig-1.2/README +38 -0
- data/vendor/ruby-ifconfig-1.2/Rakefile +14 -0
- data/vendor/ruby-ifconfig-1.2/TODO +8 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/darwin.txt +17 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd.txt +10 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd_netstat.txt +14 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd.txt +17 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd_netstat.txt +24 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux.txt +60 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux_ethernet.txt +20 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/netbsd.txt +10 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/openbsd.txt +36 -0
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/sunos.txt +10 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig.rb +71 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/ifconfig.rb +72 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/interface_types.rb +69 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/network_types.rb +3 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/ifconfig.rb +84 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/interface_types.rb +130 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/network_types.rb +49 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/ifconfig.rb +43 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/interface_types.rb +112 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/network_types.rb +55 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/ifconfig.rb +38 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/interface_types.rb +77 -0
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/network_types.rb +4 -0
- data/vendor/ruby-ifconfig-1.2/setup.rb +1306 -0
- data/vendor/ruby-ifconfig-1.2/test/test_bsd.rb +35 -0
- data/vendor/ruby-ifconfig-1.2/test/test_darwin.rb +33 -0
- data/vendor/ruby-ifconfig-1.2/test/test_dragonflybsd.rb +35 -0
- data/vendor/ruby-ifconfig-1.2/test/test_helper.rb +4 -0
- data/vendor/ruby-ifconfig-1.2/test/test_linux.rb +31 -0
- data/vendor/ruby-ifconfig-1.2/test/test_netbsd.rb +33 -0
- data/vendor/ruby-ifconfig-1.2/test/test_openbsd.rb +33 -0
- data/vendor/ruby-ifconfig-1.2/test/test_sunos.rb +35 -0
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_darwin.rb +40 -0
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_dragonflybsd.rb +39 -0
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_freebsd.rb +40 -0
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_linux.rb +49 -0
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_netbsd.rb +39 -0
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_openbsd.rb +39 -0
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_sunos.rb +44 -0
- metadata +856 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
3
|
+
#
|
|
4
|
+
# Copyright (C) 2008-2012 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
|
+
When /^I send (\d+) packets from (.+) to (.+)$/ do | n_packets, host_a, host_b |
|
|
22
|
+
run "./trema send_packets --source #{ host_a } --dest #{ host_b } --n_pkts #{ n_packets }"
|
|
23
|
+
sleep 1 # ensure that all packets are sent
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
When /^I send 1 packet from (.+) to (.+)$/ do | host_a, host_b |
|
|
28
|
+
step "I send 1 packets from #{ host_a } to #{ host_b }"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
When /^I send packets from (.+) to (.+) \(duration = (\d+)\)$/ do | host_a, host_b, duration |
|
|
33
|
+
run "./trema send_packets --source #{ host_a } --dest #{ host_b } --duration #{ duration }"
|
|
34
|
+
sleep 1 # ensure that all packets are sent
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Local variables:
|
|
39
|
+
### mode: Ruby
|
|
40
|
+
### coding: utf-8-unix
|
|
41
|
+
### indent-tabs-mode: nil
|
|
42
|
+
### End:
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
3
|
+
#
|
|
4
|
+
# Copyright (C) 2008-2012 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
|
+
Then /^the stats of "([^"]*)" should be:$/ do | host, string |
|
|
22
|
+
step %{I try to run "./trema show_stats #{ host }" (log = "show_stats.log")}
|
|
23
|
+
step %{the content of "show_stats.log" should be:}, string
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Then /^the tx stats of "([^"]*)" should be:$/ do | host, string |
|
|
28
|
+
step %{I try to run "./trema show_stats #{ host } --tx" (log = "show_stats.log")}
|
|
29
|
+
step %{the content of "show_stats.log" should be:}, string
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
Then /^the rx stats of "([^"]*)" should be:$/ do | host, string |
|
|
34
|
+
step %{I try to run "./trema show_stats #{ host } --rx" (log = "show_stats.log")}
|
|
35
|
+
step %{the content of "show_stats.log" should be:}, string
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Local variables:
|
|
40
|
+
### mode: Ruby
|
|
41
|
+
### coding: utf-8-unix
|
|
42
|
+
### indent-tabs-mode: nil
|
|
43
|
+
### End:
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
3
|
+
#
|
|
4
|
+
# Copyright (C) 2008-2012 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
|
+
Then /^the total number of tx packets should be:$/ do | table |
|
|
22
|
+
table.hashes[ 0 ].each_pair do | host, n |
|
|
23
|
+
count_packets( `./trema show_stats #{ host } --tx` ).should == n.to_i
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Then /^the total number of rx packets should be:$/ do | table |
|
|
29
|
+
table.hashes[ 0 ].each_pair do | host, n |
|
|
30
|
+
count_packets( `./trema show_stats #{ host } --rx` ).should == n.to_i
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Local variables:
|
|
36
|
+
### mode: Ruby
|
|
37
|
+
### coding: utf-8-unix
|
|
38
|
+
### indent-tabs-mode: nil
|
|
39
|
+
### End:
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
3
|
+
#
|
|
4
|
+
# Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License, version 2, as
|
|
8
|
+
# published by the Free Software Foundation.
|
|
9
|
+
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU General Public License along
|
|
16
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
require "bundler"
|
|
22
|
+
begin
|
|
23
|
+
Bundler.setup :default, :development
|
|
24
|
+
rescue Bundler::BundlerError => e
|
|
25
|
+
$stderr.puts e.message
|
|
26
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
|
27
|
+
exit e.status_code
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
$LOAD_PATH.unshift( File.expand_path( File.dirname( __FILE__ ) + "/../../ruby" ) )
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
require "rspec"
|
|
35
|
+
require "tempfile"
|
|
36
|
+
require "trema/executables"
|
|
37
|
+
require "trema/monkey-patch/string"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def run command
|
|
41
|
+
raise "Failed to execute #{ command }" unless system( command )
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def ps_entry_of name
|
|
46
|
+
`ps -ef | grep -w "#{ name } " | grep -v grep`
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def cucumber_log name
|
|
51
|
+
File.join Trema.log_directory, name
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def new_tmp_log
|
|
56
|
+
system "rm #{ Trema.log_directory }/tmp.*" # cleanup
|
|
57
|
+
`mktemp --tmpdir=#{ Trema.log_directory }`.chomp
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# show_stats output format:
|
|
62
|
+
# ip_dst,tp_dst,ip_src,tp_src,n_pkts,n_octets
|
|
63
|
+
def count_packets stats
|
|
64
|
+
return 0 if stats.split.size <= 1
|
|
65
|
+
stats.split[ 1..-1 ].inject( 0 ) do | sum, each |
|
|
66
|
+
sum += each.split( "," )[ 4 ].to_i
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### Local variables:
|
|
72
|
+
### mode: Ruby
|
|
73
|
+
### coding: utf-8-unix
|
|
74
|
+
### indent-tabs-mode: nil
|
|
75
|
+
### End:
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Feature: switch_manager help
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to see the help message of switch_manager command
|
|
5
|
+
So that I can learn how to use switch_manager
|
|
6
|
+
|
|
7
|
+
Scenario: switch_manager --help
|
|
8
|
+
When I try to run "./objects/switch_manager/switch_manager --help"
|
|
9
|
+
Then the output should be:
|
|
10
|
+
"""
|
|
11
|
+
OpenFlow Switch Manager.
|
|
12
|
+
Usage: switch_manager [OPTION]... [-- SWITCH_MANAGER_OPTION]...
|
|
13
|
+
|
|
14
|
+
-s, --switch=PATH the command path of switch
|
|
15
|
+
-n, --name=SERVICE_NAME service name
|
|
16
|
+
-p, --port=PORT server listen port (default 6633)
|
|
17
|
+
-d, --daemonize run in the background
|
|
18
|
+
-l, --logging_level=LEVEL set logging level
|
|
19
|
+
-h, --help display this help and exit
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
Scenario: switch_manager -h
|
|
23
|
+
When I try to run "./objects/switch_manager/switch_manager -h"
|
|
24
|
+
Then the output should be:
|
|
25
|
+
"""
|
|
26
|
+
OpenFlow Switch Manager.
|
|
27
|
+
Usage: switch_manager [OPTION]... [-- SWITCH_MANAGER_OPTION]...
|
|
28
|
+
|
|
29
|
+
-s, --switch=PATH the command path of switch
|
|
30
|
+
-n, --name=SERVICE_NAME service name
|
|
31
|
+
-p, --port=PORT server listen port (default 6633)
|
|
32
|
+
-d, --daemonize run in the background
|
|
33
|
+
-l, --logging_level=LEVEL set logging level
|
|
34
|
+
-h, --help display this help and exit
|
|
35
|
+
"""
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Feature: trema-config compile helper
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to compile trema apps like: gcc -o hello_trema hello_trema.c `trema-config --cflags --libs`
|
|
5
|
+
So that I can compile trema apps without specifying Trema-specific flags and options.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: trema-config --cflags
|
|
9
|
+
When I try to run "gcc -c src/examples/hello_trema/hello_trema.c `./trema-config --cflags` -o tmp/hello_trema.o"
|
|
10
|
+
Then I should not get errors
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
Scenario: trema-config -c
|
|
14
|
+
When I try to run "gcc -c src/examples/hello_trema/hello_trema.c `./trema-config -c` -o tmp/hello_trema.o"
|
|
15
|
+
Then I should not get errors
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Scenario: trema-config --libs
|
|
19
|
+
When I try to run "gcc -c src/examples/hello_trema/hello_trema.c `./trema-config --cflags` -o tmp/hello_trema.o"
|
|
20
|
+
And I try to run "gcc tmp/hello_trema.o `./trema-config --libs` -o tmp/hello_trema"
|
|
21
|
+
Then I should not get errors
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
Scenario: trema-config -l
|
|
25
|
+
When I try to run "gcc -c src/examples/hello_trema/hello_trema.c `./trema-config --cflags` -o tmp/hello_trema.o"
|
|
26
|
+
And I try to run "gcc tmp/hello_trema.o `./trema-config -l` -o tmp/hello_trema"
|
|
27
|
+
Then I should not get errors
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
Scenario: trema-config --cflags --libs
|
|
31
|
+
When I try to run "gcc -c src/examples/hello_trema/hello_trema.c `./trema-config -c` -o tmp/hello_trema.o"
|
|
32
|
+
And I try to run "gcc tmp/hello_trema.o `./trema-config --cflags --libs` -o tmp/hello_trema"
|
|
33
|
+
Then I should not get errors
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Scenario: trema-config -c --libs
|
|
37
|
+
When I try to run "gcc src/examples/hello_trema/hello_trema.c `./trema-config -c --libs` -o tmp/hello_trema"
|
|
38
|
+
Then I should not get errors
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
Scenario: trema-config --cflags -l
|
|
42
|
+
When I try to run "gcc src/examples/hello_trema/hello_trema.c `./trema-config --cflags -l` -o tmp/hello_trema"
|
|
43
|
+
Then I should not get errors
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
Scenario: trema-config -c -l
|
|
47
|
+
When I try to run "gcc src/examples/hello_trema/hello_trema.c `./trema-config -c -l` -o tmp/hello_trema"
|
|
48
|
+
Then I should not get errors
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
Scenario: trema-config --help
|
|
52
|
+
When I try to run "./trema-config --help"
|
|
53
|
+
Then the output should be:
|
|
54
|
+
"""
|
|
55
|
+
Usage: ./trema-config [OPTIONS ...]
|
|
56
|
+
-c, --cflags
|
|
57
|
+
-l, --libs
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
Scenario: trema-config -h
|
|
62
|
+
When I try to run "./trema-config -h"
|
|
63
|
+
Then the output should be:
|
|
64
|
+
"""
|
|
65
|
+
Usage: ./trema-config [OPTIONS ...]
|
|
66
|
+
-c, --cflags
|
|
67
|
+
-l, --libs
|
|
68
|
+
"""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Feature: trema dump_flows command
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to dump the flow table of OpenFlow switch
|
|
5
|
+
So that I can debug my Trema apps
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: run trema dump_flows
|
|
9
|
+
When I try trema run "./objects/examples/repeater_hub/repeater_hub" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("repeater_hub") { datapath_id "0xabc" }
|
|
12
|
+
|
|
13
|
+
vhost("host1")
|
|
14
|
+
vhost("host2")
|
|
15
|
+
vhost("host3")
|
|
16
|
+
|
|
17
|
+
link "repeater_hub", "host1"
|
|
18
|
+
link "repeater_hub", "host2"
|
|
19
|
+
link "repeater_hub", "host3"
|
|
20
|
+
"""
|
|
21
|
+
And wait until "repeater_hub" is up
|
|
22
|
+
And I try to run "./trema send_packets --source host1 --dest host2"
|
|
23
|
+
And *** sleep 1 ***
|
|
24
|
+
And I try to run "./trema dump_flows repeater_hub" (log = "dump_flows.log")
|
|
25
|
+
Then "dump_flows.log" should contain some flow entries
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Feature: trema help
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to see the help message of trema command
|
|
5
|
+
So that I can learn how to use trema
|
|
6
|
+
|
|
7
|
+
Scenario: trema help
|
|
8
|
+
When I try to run "./trema help"
|
|
9
|
+
Then the output should be:
|
|
10
|
+
"""
|
|
11
|
+
usage: ./trema <COMMAND> [OPTIONS ...]
|
|
12
|
+
|
|
13
|
+
Trema command-line tool
|
|
14
|
+
Type './trema help <COMMAND>' for help on a specific command.
|
|
15
|
+
|
|
16
|
+
Available commands:
|
|
17
|
+
run - runs a trema application.
|
|
18
|
+
kill - terminates a trema process.
|
|
19
|
+
killall - terminates all trema processes.
|
|
20
|
+
send_packets - sends UDP packets to destination host.
|
|
21
|
+
show_stats - shows stats of packets.
|
|
22
|
+
reset_stats - resets stats of packets.
|
|
23
|
+
dump_flows - print all flow entries.
|
|
24
|
+
ruby - opens in your browser Trema's Ruby API documentation.
|
|
25
|
+
"""
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Feature: kill a trema process with `trema kill' command
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to kill a trema processes with `trema kill' command
|
|
5
|
+
So that I can emulate failures on switch/host/link
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: kill a switch
|
|
9
|
+
Given I try trema run "./src/examples/switch_monitor/switch-monitor.rb" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0x1" }
|
|
12
|
+
vswitch { datapath_id "0x2" }
|
|
13
|
+
vswitch { datapath_id "0x3" }
|
|
14
|
+
"""
|
|
15
|
+
And wait until "SwitchMonitor" is up
|
|
16
|
+
When I try to run "./trema kill 0x1"
|
|
17
|
+
And *** sleep 1 ***
|
|
18
|
+
Then vswitch 0x1 is terminated
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Scenario: kill a host
|
|
22
|
+
Given I try trema run "./src/examples/switch_monitor/switch-monitor.rb" with following configuration (backgrounded):
|
|
23
|
+
"""
|
|
24
|
+
vswitch { datapath_id "0x1" }
|
|
25
|
+
vhost "host"
|
|
26
|
+
link "0x1", "host"
|
|
27
|
+
"""
|
|
28
|
+
And wait until "SwitchMonitor" is up
|
|
29
|
+
When I try to run "./trema kill host"
|
|
30
|
+
And *** sleep 1 ***
|
|
31
|
+
Then host is terminated
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
Scenario: kill a controller
|
|
35
|
+
Given I try trema run "./src/examples/switch_monitor/switch-monitor.rb" with following configuration (backgrounded):
|
|
36
|
+
"""
|
|
37
|
+
vswitch { datapath_id "0x1" }
|
|
38
|
+
"""
|
|
39
|
+
And wait until "SwitchMonitor" is up
|
|
40
|
+
When I try to run "./trema kill SwitchMonitor"
|
|
41
|
+
And *** sleep 1 ***
|
|
42
|
+
Then SwitchMonitor is terminated
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
Scenario: trema help kill
|
|
46
|
+
When I try to run "./trema help kill"
|
|
47
|
+
Then the output should be:
|
|
48
|
+
"""
|
|
49
|
+
Usage: ./trema kill NAME [OPTIONS ...]
|
|
50
|
+
-h, --help
|
|
51
|
+
-v, --verbose
|
|
52
|
+
|
|
53
|
+
"""
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Feature: kill all trema processes with `trema killall' command
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to kill all trema processes with `trema killall' command
|
|
5
|
+
So that I can close trema sessions cleanly
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: trema killall
|
|
9
|
+
Given I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
And wait until "dumper" is up
|
|
14
|
+
When I try to run "./trema killall"
|
|
15
|
+
And *** sleep 1 ***
|
|
16
|
+
Then switch_manager is terminated
|
|
17
|
+
And switch is terminated
|
|
18
|
+
And ovs-openflowd is terminated
|
|
19
|
+
And dumper is terminated
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
Scenario: trema help killall
|
|
23
|
+
When I try to run "./trema help killall"
|
|
24
|
+
Then the output should be:
|
|
25
|
+
"""
|
|
26
|
+
Usage: ./trema killall [OPTIONS ...]
|
|
27
|
+
-h, --help
|
|
28
|
+
-v, --verbose
|
|
29
|
+
|
|
30
|
+
"""
|