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,39 @@
|
|
|
1
|
+
Feature: control one openflow switch using learning-switch controller
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to control one openflow switch using learning-switch controller
|
|
5
|
+
So that I can send and receive packets
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Send and receive packets
|
|
9
|
+
Given I try trema run "learning_switch" example with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("learning") { datapath_id "0xabc" }
|
|
12
|
+
|
|
13
|
+
vhost("host1")
|
|
14
|
+
vhost("host2")
|
|
15
|
+
|
|
16
|
+
link "learning", "host1"
|
|
17
|
+
link "learning", "host2"
|
|
18
|
+
"""
|
|
19
|
+
When I send 1 packet from host1 to host2
|
|
20
|
+
And I try to run "./trema show_stats host1 --tx" (log = "host1.learning_switch.log")
|
|
21
|
+
And I try to run "./trema show_stats host2 --rx" (log = "host2.learning_switch.log")
|
|
22
|
+
Then the content of "host1.learning_switch.log" and "host2.learning_switch.log" should be identical
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
Scenario: Send and receive packets (in Ruby)
|
|
26
|
+
Given I try trema run "learning-switch.rb" example with following configuration (backgrounded):
|
|
27
|
+
"""
|
|
28
|
+
vswitch("learning") { datapath_id "0xabc" }
|
|
29
|
+
|
|
30
|
+
vhost("host1")
|
|
31
|
+
vhost("host2")
|
|
32
|
+
|
|
33
|
+
link "learning", "host1"
|
|
34
|
+
link "learning", "host2"
|
|
35
|
+
"""
|
|
36
|
+
When I send 1 packet from host1 to host2
|
|
37
|
+
And I try to run "./trema show_stats host1 --tx" (log = "host1.LearningSwitch.log")
|
|
38
|
+
And I try to run "./trema show_stats host2 --rx" (log = "host2.LearningSwitch.log")
|
|
39
|
+
Then the content of "host1.LearningSwitch.log" and "host2.LearningSwitch.log" should be identical
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Feature: Get the list of openflow switches with list_switches
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to get the list of openflow switches
|
|
5
|
+
So that I can check how many switches are connected to my controller
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Get the list of openflow switches
|
|
9
|
+
Given I try trema run "./objects/examples/list_switches/list_switches" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0x1" }
|
|
12
|
+
vswitch { datapath_id "0x2" }
|
|
13
|
+
vswitch { datapath_id "0x3" }
|
|
14
|
+
vswitch { datapath_id "0x4" }
|
|
15
|
+
"""
|
|
16
|
+
And wait until "list_switches" is up
|
|
17
|
+
And *** sleep 2 ***
|
|
18
|
+
And I terminated all trema services
|
|
19
|
+
Then the output should include:
|
|
20
|
+
"""
|
|
21
|
+
switches = 0x1, 0x2, 0x3, 0x4
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
Scenario: Get the list of openflow switches (in Ruby)
|
|
25
|
+
Given I try trema run "./src/examples/list_switches/list-switches.rb" with following configuration (backgrounded):
|
|
26
|
+
"""
|
|
27
|
+
vswitch { datapath_id "0x1" }
|
|
28
|
+
vswitch { datapath_id "0x2" }
|
|
29
|
+
vswitch { datapath_id "0x3" }
|
|
30
|
+
vswitch { datapath_id "0x4" }
|
|
31
|
+
"""
|
|
32
|
+
And wait until "ListSwitches" is up
|
|
33
|
+
And *** sleep 2 ***
|
|
34
|
+
And I terminated all trema services
|
|
35
|
+
Then the output should include:
|
|
36
|
+
"""
|
|
37
|
+
switches = 0x1, 0x2, 0x3, 0x4
|
|
38
|
+
"""
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Feature: Send echo reply messages
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to send echo reply messages to openflow switches
|
|
5
|
+
Because I want to reply to echo requests from openflow switches
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Send echo reply x 10
|
|
9
|
+
When I try trema run "./objects/examples/openflow_message/echo_reply 10" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("echo_reply") { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
And wait until "echo_reply" is up
|
|
14
|
+
And *** sleep 2 ***
|
|
15
|
+
Then the log file "openflowd.echo_reply.log" should include "received: OFPT_ECHO_REPLY" x 10
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Scenario: Send echo reply x 10 in Ruby
|
|
19
|
+
When I try trema run "./src/examples/openflow_message/echo-reply.rb 0xabc, 10" with following configuration (backgrounded):
|
|
20
|
+
"""
|
|
21
|
+
vswitch("echo-reply") { datapath_id "0xabc" }
|
|
22
|
+
"""
|
|
23
|
+
And wait until "EchoReplyController" is up
|
|
24
|
+
And *** sleep 2 ***
|
|
25
|
+
Then the log file "openflowd.echo-reply.log" should include "received: OFPT_ECHO_REPLY" x 10
|
|
26
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Feature: Send echo request messages
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to send echo request messages to openflow switches
|
|
5
|
+
So that I can receive echo reply messages from openflow switches
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Send echo request x 10
|
|
9
|
+
When I try trema run "./objects/examples/openflow_message/echo_request 10" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("echo_request") { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
And wait until "echo_request" is up
|
|
14
|
+
And *** sleep 2 ***
|
|
15
|
+
Then the log file "openflowd.echo_request.log" should include "received: OFPT_ECHO_REQUEST" x 10
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Scenario: Send echo request x 10 in Ruby
|
|
19
|
+
When I try trema run "./src/examples/openflow_message/echo-request.rb 0xabc, 10" with following configuration (backgrounded):
|
|
20
|
+
"""
|
|
21
|
+
vswitch("echo-request") { datapath_id "0xabc" }
|
|
22
|
+
"""
|
|
23
|
+
And wait until "EchoRequestController" is up
|
|
24
|
+
And *** sleep 2 ***
|
|
25
|
+
Then the log file "openflowd.echo-request.log" should include "received: OFPT_ECHO_REQUEST" x 10
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Feature: Send a features request message
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to send a features request message to openflow switches
|
|
5
|
+
So that I can get the list of switch features
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Send a features request
|
|
9
|
+
When I try trema run "./objects/examples/openflow_message/features_request" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch( "features_request" ) { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
And wait until "features_request" is up
|
|
14
|
+
And I terminated all trema services
|
|
15
|
+
Then the output should include:
|
|
16
|
+
"""
|
|
17
|
+
datapath_id: 0xabc
|
|
18
|
+
n_buffers: 256
|
|
19
|
+
n_tables: 1
|
|
20
|
+
capabilities:
|
|
21
|
+
OFPC_FLOW_STATS
|
|
22
|
+
OFPC_TABLE_STATS
|
|
23
|
+
OFPC_PORT_STATS
|
|
24
|
+
OFPC_ARP_MATCH_IP
|
|
25
|
+
actions:
|
|
26
|
+
OFPAT_OUTPUT
|
|
27
|
+
OFPAT_SET_VLAN_VID
|
|
28
|
+
OFPAT_SET_VLAN_PCP
|
|
29
|
+
OFPAT_STRIP_VLAN
|
|
30
|
+
OFPAT_SET_DL_SRC
|
|
31
|
+
OFPAT_SET_DL_DST
|
|
32
|
+
OFPAT_SET_NW_SRC
|
|
33
|
+
OFPAT_SET_NW_DST
|
|
34
|
+
OFPAT_SET_NW_TOS
|
|
35
|
+
OFPAT_SET_TP_SRC
|
|
36
|
+
OFPAT_SET_TP_DST
|
|
37
|
+
port_no: 65534
|
|
38
|
+
name = vsw_0xabc
|
|
39
|
+
config = 0x1
|
|
40
|
+
state = 0x1
|
|
41
|
+
curr = 0x82
|
|
42
|
+
advertised = 0
|
|
43
|
+
supported = 0
|
|
44
|
+
peer = 0
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
Scenario: Send a features request in Ruby
|
|
48
|
+
When I try trema run "./src/examples/openflow_message/features-request.rb" with following configuration (backgrounded):
|
|
49
|
+
"""
|
|
50
|
+
vswitch( "features-request" ) { datapath_id "0xabc" }
|
|
51
|
+
"""
|
|
52
|
+
And wait until "FeaturesRequestController" is up
|
|
53
|
+
And I terminated all trema services
|
|
54
|
+
Then the output should include:
|
|
55
|
+
"""
|
|
56
|
+
datapath_id: 0xabc
|
|
57
|
+
n_buffers: 256
|
|
58
|
+
n_tables: 1
|
|
59
|
+
capabilities:
|
|
60
|
+
OFPC_FLOW_STATS
|
|
61
|
+
OFPC_TABLE_STATS
|
|
62
|
+
OFPC_PORT_STATS
|
|
63
|
+
OFPC_ARP_MATCH_IP
|
|
64
|
+
actions:
|
|
65
|
+
OFPAT_OUTPUT
|
|
66
|
+
OFPAT_SET_VLAN_VID
|
|
67
|
+
OFPAT_SET_VLAN_PCP
|
|
68
|
+
OFPAT_STRIP_VLAN
|
|
69
|
+
OFPAT_SET_DL_SRC
|
|
70
|
+
OFPAT_SET_DL_DST
|
|
71
|
+
OFPAT_SET_NW_SRC
|
|
72
|
+
OFPAT_SET_NW_DST
|
|
73
|
+
OFPAT_SET_NW_TOS
|
|
74
|
+
OFPAT_SET_TP_SRC
|
|
75
|
+
OFPAT_SET_TP_DST
|
|
76
|
+
port_no: 65534
|
|
77
|
+
name = vsw_0xabc
|
|
78
|
+
config = 0x1
|
|
79
|
+
state = 0x1
|
|
80
|
+
curr = 0x82
|
|
81
|
+
advertised = 0x0
|
|
82
|
+
supported = 0x0
|
|
83
|
+
peer = 0x0
|
|
84
|
+
"""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Feature: Send hello messages
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to send hello messages to openflow switches
|
|
5
|
+
So that I can start transactions with switches
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Hello trema
|
|
9
|
+
When I try trema run "./objects/examples/openflow_message/hello 10" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("hello") { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
And wait until "hello" is up
|
|
14
|
+
And I terminated all trema services
|
|
15
|
+
Then the log file "openflowd.hello.log" should include "received: OFPT_HELLO" x 11
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Scenario: Hello trema in Ruby
|
|
19
|
+
When I try trema run "./src/examples/openflow_message/hello.rb 0xabc, 10" with following configuration (backgrounded):
|
|
20
|
+
"""
|
|
21
|
+
vswitch("hello-r") { datapath_id "0xabc" }
|
|
22
|
+
"""
|
|
23
|
+
And wait until "HelloController" is up
|
|
24
|
+
And I terminated all trema services
|
|
25
|
+
Then the log file "openflowd.hello-r.log" should include "received: OFPT_HELLO" x 11
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Feature: Send set config messages
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to send set config messages to openflow switches
|
|
5
|
+
So that I can set configuration parameters of openflow switches
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: set config x 10
|
|
9
|
+
When I try trema run "./objects/examples/openflow_message/set_config 10" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("set_config") { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
And wait until "set_config" is up
|
|
14
|
+
And *** sleep 2 ***
|
|
15
|
+
And I terminated all trema services
|
|
16
|
+
Then the log file "openflowd.set_config.log" should include "received: OFPT_SET_CONFIG" x 11
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Scenario: set config x 10 in Ruby
|
|
20
|
+
When I try trema run "./src/examples/openflow_message/set-config.rb 0xabc, 10" with following configuration (backgrounded):
|
|
21
|
+
"""
|
|
22
|
+
vswitch("set-config") { datapath_id "0xabc" }
|
|
23
|
+
"""
|
|
24
|
+
And wait until "SetConfigController" is up
|
|
25
|
+
And *** sleep 2 ***
|
|
26
|
+
And I terminated all trema services
|
|
27
|
+
Then the log file "openflowd.set-config.log" should include "received: OFPT_SET_CONFIG" x 11
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
Feature: control multiple openflow switches using multi learning switch controller
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to control multiple openflow switches using multi learning switch controller
|
|
5
|
+
So that I can send and receive packets
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Send and receive packets
|
|
9
|
+
Given I try trema run "./objects/examples/multi_learning_switch/multi_learning_switch" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("multi_learning1") { datapath_id "0x1" }
|
|
12
|
+
vswitch("multi_learning2") { datapath_id "0x2" }
|
|
13
|
+
vswitch("multi_learning3") { datapath_id "0x3" }
|
|
14
|
+
vswitch("multi_learning4") { datapath_id "0x4" }
|
|
15
|
+
|
|
16
|
+
vhost("host1")
|
|
17
|
+
vhost("host2")
|
|
18
|
+
vhost("host3")
|
|
19
|
+
vhost("host4")
|
|
20
|
+
|
|
21
|
+
link "multi_learning1", "host1"
|
|
22
|
+
link "multi_learning2", "host2"
|
|
23
|
+
link "multi_learning3", "host3"
|
|
24
|
+
link "multi_learning4", "host4"
|
|
25
|
+
link "multi_learning1", "multi_learning2"
|
|
26
|
+
link "multi_learning2", "multi_learning3"
|
|
27
|
+
link "multi_learning3", "multi_learning4"
|
|
28
|
+
"""
|
|
29
|
+
And wait until "multi_learning_switch" is up
|
|
30
|
+
And *** sleep 1 ***
|
|
31
|
+
|
|
32
|
+
When I send 2 packets from host1 to host2
|
|
33
|
+
Then the total number of tx packets should be:
|
|
34
|
+
| host1 | host2 | host3 | host4 |
|
|
35
|
+
| 2 | 0 | 0 | 0 |
|
|
36
|
+
And the total number of rx packets should be:
|
|
37
|
+
| host1 | host2 | host3 | host4 |
|
|
38
|
+
| 0 | 2 | 0 | 0 |
|
|
39
|
+
|
|
40
|
+
When I send 3 packets from host3 to host4
|
|
41
|
+
Then the total number of tx packets should be:
|
|
42
|
+
| host1 | host2 | host3 | host4 |
|
|
43
|
+
| 2 | 0 | 3 | 0 |
|
|
44
|
+
And the total number of rx packets should be:
|
|
45
|
+
| host1 | host2 | host3 | host4 |
|
|
46
|
+
| 0 | 2 | 0 | 3 |
|
|
47
|
+
|
|
48
|
+
When I send 2 packets from host4 to host1
|
|
49
|
+
Then the total number of tx packets should be:
|
|
50
|
+
| host1 | host2 | host3 | host4 |
|
|
51
|
+
| 2 | 0 | 3 | 2 |
|
|
52
|
+
And the total number of rx packets should be:
|
|
53
|
+
| host1 | host2 | host3 | host4 |
|
|
54
|
+
| 2 | 2 | 0 | 3 |
|
|
55
|
+
|
|
56
|
+
When I send 4 packets from host2 to host3
|
|
57
|
+
Then the total number of tx packets should be:
|
|
58
|
+
| host1 | host2 | host3 | host4 |
|
|
59
|
+
| 2 | 4 | 3 | 2 |
|
|
60
|
+
And the total number of rx packets should be:
|
|
61
|
+
| host1 | host2 | host3 | host4 |
|
|
62
|
+
| 2 | 2 | 4 | 3 |
|
|
63
|
+
|
|
64
|
+
When I send 1 packets from host1 to host4
|
|
65
|
+
Then the total number of tx packets should be:
|
|
66
|
+
| host1 | host2 | host3 | host4 |
|
|
67
|
+
| 3 | 4 | 3 | 2 |
|
|
68
|
+
And the total number of rx packets should be:
|
|
69
|
+
| host1 | host2 | host3 | host4 |
|
|
70
|
+
| 2 | 2 | 4 | 4 |
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
Scenario: Send and receive packets
|
|
74
|
+
Given I try trema run "./src/examples/multi_learning_switch/multi-learning-switch.rb" with following configuration (backgrounded):
|
|
75
|
+
"""
|
|
76
|
+
vswitch("multi_learning1") { datapath_id "0x1" }
|
|
77
|
+
vswitch("multi_learning2") { datapath_id "0x2" }
|
|
78
|
+
vswitch("multi_learning3") { datapath_id "0x3" }
|
|
79
|
+
vswitch("multi_learning4") { datapath_id "0x4" }
|
|
80
|
+
|
|
81
|
+
vhost("host1")
|
|
82
|
+
vhost("host2")
|
|
83
|
+
vhost("host3")
|
|
84
|
+
vhost("host4")
|
|
85
|
+
|
|
86
|
+
link "multi_learning1", "host1"
|
|
87
|
+
link "multi_learning2", "host2"
|
|
88
|
+
link "multi_learning3", "host3"
|
|
89
|
+
link "multi_learning4", "host4"
|
|
90
|
+
link "multi_learning1", "multi_learning2"
|
|
91
|
+
link "multi_learning2", "multi_learning3"
|
|
92
|
+
link "multi_learning3", "multi_learning4"
|
|
93
|
+
"""
|
|
94
|
+
And wait until "MultiLearningSwitch" is up
|
|
95
|
+
And *** sleep 1 ***
|
|
96
|
+
|
|
97
|
+
When I send 2 packets from host1 to host2
|
|
98
|
+
Then the total number of tx packets should be:
|
|
99
|
+
| host1 | host2 | host3 | host4 |
|
|
100
|
+
| 2 | 0 | 0 | 0 |
|
|
101
|
+
And the total number of rx packets should be:
|
|
102
|
+
| host1 | host2 | host3 | host4 |
|
|
103
|
+
| 0 | 2 | 0 | 0 |
|
|
104
|
+
|
|
105
|
+
When I send 3 packets from host3 to host4
|
|
106
|
+
Then the total number of tx packets should be:
|
|
107
|
+
| host1 | host2 | host3 | host4 |
|
|
108
|
+
| 2 | 0 | 3 | 0 |
|
|
109
|
+
And the total number of rx packets should be:
|
|
110
|
+
| host1 | host2 | host3 | host4 |
|
|
111
|
+
| 0 | 2 | 0 | 3 |
|
|
112
|
+
|
|
113
|
+
When I send 2 packets from host4 to host1
|
|
114
|
+
Then the total number of tx packets should be:
|
|
115
|
+
| host1 | host2 | host3 | host4 |
|
|
116
|
+
| 2 | 0 | 3 | 2 |
|
|
117
|
+
And the total number of rx packets should be:
|
|
118
|
+
| host1 | host2 | host3 | host4 |
|
|
119
|
+
| 2 | 2 | 0 | 3 |
|
|
120
|
+
|
|
121
|
+
When I send 4 packets from host2 to host3
|
|
122
|
+
Then the total number of tx packets should be:
|
|
123
|
+
| host1 | host2 | host3 | host4 |
|
|
124
|
+
| 2 | 4 | 3 | 2 |
|
|
125
|
+
And the total number of rx packets should be:
|
|
126
|
+
| host1 | host2 | host3 | host4 |
|
|
127
|
+
| 2 | 2 | 4 | 3 |
|
|
128
|
+
|
|
129
|
+
When I send 1 packets from host1 to host4
|
|
130
|
+
Then the total number of tx packets should be:
|
|
131
|
+
| host1 | host2 | host3 | host4 |
|
|
132
|
+
| 3 | 4 | 3 | 2 |
|
|
133
|
+
And the total number of rx packets should be:
|
|
134
|
+
| host1 | host2 | host3 | host4 |
|
|
135
|
+
| 2 | 2 | 4 | 4 |
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
Feature: Packet-In filter configuration example
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to configure packetin_filter
|
|
5
|
+
So that I can configuration filters of packetin_filter
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: add filter
|
|
9
|
+
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
event :port_status => "dumper", :packet_in => "filter", :state_notify => "dumper"
|
|
12
|
+
filter :lldp => "dumper", :packet_in => "dumper"
|
|
13
|
+
"""
|
|
14
|
+
And wait until "dumper" is up
|
|
15
|
+
And *** sleep 2 ***
|
|
16
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/add_filter"
|
|
17
|
+
Then the output should include:
|
|
18
|
+
"""
|
|
19
|
+
A packetin filter was added ( match = [wildcards = 0xc, in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 65535, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper ).
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
Scenario: dump filter
|
|
23
|
+
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
24
|
+
"""
|
|
25
|
+
event :port_status => "dumper", :packet_in => "filter", :state_notify => "dumper"
|
|
26
|
+
filter :lldp => "dumper", :packet_in => "dumper"
|
|
27
|
+
"""
|
|
28
|
+
And wait until "dumper" is up
|
|
29
|
+
And *** sleep 2 ***
|
|
30
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/dump_filter"
|
|
31
|
+
Then the output should include:
|
|
32
|
+
"""
|
|
33
|
+
2 packetin filters found ( match = [wildcards = 0x3fffff, in_port = 0, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0, dl_vlan_pcp = 0, dl_type = 0, nw_tos = 0, nw_proto = 0, nw_src = 0.0.0.0/0, nw_dst = 0.0.0.0/0, tp_src = 0, tp_dst = 0], service_name = dumper, strict = false ).
|
|
34
|
+
[#0] match = [wildcards = 0x3fffef, in_port = 0, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0, dl_vlan_pcp = 0, dl_type = 0x88cc, nw_tos = 0, nw_proto = 0, nw_src = 0.0.0.0/0, nw_dst = 0.0.0.0/0, tp_src = 0, tp_dst = 0], priority = 32768, service_name = dumper.
|
|
35
|
+
[#1] match = [wildcards = 0x3fffff, in_port = 0, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0, dl_vlan_pcp = 0, dl_type = 0, nw_tos = 0, nw_proto = 0, nw_src = 0.0.0.0/0, nw_dst = 0.0.0.0/0, tp_src = 0, tp_dst = 0], priority = 0, service_name = dumper.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
Scenario: dump filter strict
|
|
39
|
+
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
40
|
+
"""
|
|
41
|
+
event :port_status => "dumper", :packet_in => "filter", :state_notify => "dumper"
|
|
42
|
+
filter :lldp => "dumper", :packet_in => "dumper"
|
|
43
|
+
"""
|
|
44
|
+
And wait until "dumper" is up
|
|
45
|
+
And *** sleep 2 ***
|
|
46
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/dump_filter_strict"
|
|
47
|
+
Then the output should include:
|
|
48
|
+
"""
|
|
49
|
+
0 packetin filter found ( match = [wildcards = 0xc, in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 65535, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
50
|
+
"""
|
|
51
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/add_filter"
|
|
52
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/dump_filter_strict"
|
|
53
|
+
Then the output should include:
|
|
54
|
+
"""
|
|
55
|
+
1 packetin filter found ( match = [wildcards = 0xc, in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 65535, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
56
|
+
[#0] match = [wildcards = 0xc, in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 65535, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], priority = 65535, service_name = dumper.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
Scenario: delete filter strict
|
|
60
|
+
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
61
|
+
"""
|
|
62
|
+
event :port_status => "dumper", :packet_in => "filter", :state_notify => "dumper"
|
|
63
|
+
filter :lldp => "dumper", :packet_in => "dumper"
|
|
64
|
+
"""
|
|
65
|
+
And wait until "dumper" is up
|
|
66
|
+
And *** sleep 2 ***
|
|
67
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/delete_filter_strict"
|
|
68
|
+
Then the output should include:
|
|
69
|
+
"""
|
|
70
|
+
0 packetin filter was deleted ( match = [wildcards = 0xc, in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 65535, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
71
|
+
"""
|
|
72
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/add_filter"
|
|
73
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/delete_filter_strict"
|
|
74
|
+
Then the output should include:
|
|
75
|
+
"""
|
|
76
|
+
1 packetin filter was deleted ( match = [wildcards = 0xc, in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 65535, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
Scenario: delete filter
|
|
80
|
+
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
81
|
+
"""
|
|
82
|
+
event :port_status => "dumper", :packet_in => "filter", :state_notify => "dumper"
|
|
83
|
+
filter :lldp => "dumper", :packet_in => "dumper"
|
|
84
|
+
"""
|
|
85
|
+
And wait until "dumper" is up
|
|
86
|
+
And *** sleep 2 ***
|
|
87
|
+
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/delete_filter"
|
|
88
|
+
Then the output should include:
|
|
89
|
+
"""
|
|
90
|
+
2 packetin filters were deleted ( match = [wildcards = 0x3fffff, in_port = 0, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0, dl_vlan_pcp = 0, dl_type = 0, nw_tos = 0, nw_proto = 0, nw_src = 0.0.0.0/0, nw_dst = 0.0.0.0/0, tp_src = 0, tp_dst = 0], service_name = dumper, strict = false ).
|
|
91
|
+
"""
|