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,83 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author: Nick Karanatsios <nickkaranatsios@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 File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
+
require "trema"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
describe BarrierRequest, ".new( OPTIONAL OPTION MISSING )" do
|
|
26
|
+
it_should_behave_like "any Openflow message with default transaction ID"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
describe BarrierRequest, ".new( VALID OPTION )" do
|
|
31
|
+
subject { BarrierRequest.new :transaction_id => transaction_id }
|
|
32
|
+
it_should_behave_like "any OpenFlow message with transaction_id option"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
context "when #barrier_request" do
|
|
36
|
+
it "should #barrier_reply" do
|
|
37
|
+
class BarrierController < Controller; end
|
|
38
|
+
network {
|
|
39
|
+
vswitch { datapath_id 0xabc }
|
|
40
|
+
}.run( BarrierController ) {
|
|
41
|
+
controller( "BarrierController" ).should_receive( :barrier_reply )
|
|
42
|
+
controller( "BarrierController" ).send_message( 0xabc, BarrierRequest.new )
|
|
43
|
+
sleep 2 # FIXME: wait to send_message
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
describe BarrierRequest, ".new( OPTIONAL OPTION ) - transaction_id" do
|
|
51
|
+
context "when #barrier_request" do
|
|
52
|
+
it "should #barrier_reply with transaction_id == value" do
|
|
53
|
+
class BarrierController < Controller; end
|
|
54
|
+
network {
|
|
55
|
+
vswitch { datapath_id 0xabc }
|
|
56
|
+
}.run( BarrierController ) {
|
|
57
|
+
controller( "BarrierController" ).should_receive( :barrier_reply ) do | message |
|
|
58
|
+
message.datapath_id.should == 0xabc
|
|
59
|
+
message.transaction_id.should == 1234
|
|
60
|
+
end
|
|
61
|
+
barrier_request = BarrierRequest.new( :transaction_id => 1234 )
|
|
62
|
+
controller( "BarrierController" ).send_message( 0xabc, barrier_request )
|
|
63
|
+
sleep 2 # FIXME: wait to send_message
|
|
64
|
+
}
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
describe BarrierRequest, ".new( INVALID_OPTION )" do
|
|
71
|
+
it "should raise TypeError" do
|
|
72
|
+
expect {
|
|
73
|
+
BarrierRequest.new "INVALID_OPTION"
|
|
74
|
+
}.to raise_error( TypeError )
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### Local variables:
|
|
80
|
+
### mode: Ruby
|
|
81
|
+
### coding: utf-8-unix
|
|
82
|
+
### indent-tabs-mode: nil
|
|
83
|
+
### End:
|
|
@@ -0,0 +1,160 @@
|
|
|
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 File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
+
require "trema/cli"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
module Trema
|
|
26
|
+
describe Cli do
|
|
27
|
+
before :each do
|
|
28
|
+
@source = mock( "source", :interface => "trema-0", :ip => "192.168.0.1" )
|
|
29
|
+
@dest = mock( "dest", :interface => "trema-1", :ip => "192.168.0.2" )
|
|
30
|
+
@cli = Cli.new( @source )
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
context "when sending packets" do
|
|
35
|
+
it "should send packets (default)" do
|
|
36
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22$/ )
|
|
37
|
+
@cli.send_packets( @dest )
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
it "should send packets (inc_ip_src)" do
|
|
42
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_src$/ )
|
|
43
|
+
@cli.send_packets( @dest, :inc_ip_src => true )
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
it "should send packets (inc_ip_src = 1)" do
|
|
48
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_src=1$/ )
|
|
49
|
+
@cli.send_packets( @dest, :inc_ip_src => 1 )
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
it "should send packets (inc_ip_dst)" do
|
|
54
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_dst$/ )
|
|
55
|
+
@cli.send_packets( @dest, :inc_ip_dst => true )
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
it "should send packets (inc_ip_dst = 1)" do
|
|
60
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_ip_dst=1$/ )
|
|
61
|
+
@cli.send_packets( @dest, :inc_ip_dst => 1 )
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
it "should send_packets (tp_src = 60000)" do
|
|
66
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 60000 --tp_dst 1 --pps 1 --duration 1 --length 22$/ )
|
|
67
|
+
@cli.send_packets( @dest, :tp_src => 60000 )
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
it "should send_packets (tp_dst = 10000)" do
|
|
72
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 10000 --pps 1 --duration 1 --length 22$/ )
|
|
73
|
+
@cli.send_packets( @dest, :tp_dst => 10000 )
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
it "should send packets (inc_tp_src)" do
|
|
78
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_src$/ )
|
|
79
|
+
@cli.send_packets( @dest, :inc_tp_src => true )
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
it "should send packets (inc_tp_src = 1)" do
|
|
84
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_src=1$/ )
|
|
85
|
+
@cli.send_packets( @dest, :inc_tp_src => 1 )
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
it "should send_packets (pps = 100)" do
|
|
90
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 100 --duration 1 --length 22$/ )
|
|
91
|
+
@cli.send_packets( @dest, :pps => 100 )
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
it "should send packets (duration = 10)" do
|
|
96
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 10 --length 22$/ )
|
|
97
|
+
@cli.send_packets( @dest, :duration => 10 )
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
it "should send packets (length = 1000)" do
|
|
102
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 1000$/ )
|
|
103
|
+
@cli.send_packets( @dest, :length => 1000 )
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
it "should send_packets (inc_tp_dst)" do
|
|
108
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_dst$/ )
|
|
109
|
+
@cli.send_packets( @dest, :inc_tp_dst => true )
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
it "should send_packets (inc_tp_dst = 65534)" do
|
|
114
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_tp_dst=65534$/ )
|
|
115
|
+
@cli.send_packets( @dest, :inc_tp_dst => 65534 )
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
it "should send_packets (inc_payload)" do
|
|
120
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_payload$/ )
|
|
121
|
+
@cli.send_packets( @dest, :inc_payload => true )
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
it "should send_packets (inc_payload = 1000)" do
|
|
126
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --duration 1 --length 22 --inc_payload=1000$/ )
|
|
127
|
+
@cli.send_packets( @dest, :inc_payload => 1000 )
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
it "should send_packets (n_pkts = 10)" do
|
|
132
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 send_packets --ip_src 192.168.0.1 --ip_dst 192.168.0.2 --tp_src 1 --tp_dst 1 --pps 1 --length 22 --n_pkts=10$/ )
|
|
133
|
+
@cli.send_packets( @dest, :n_pkts => 10 )
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
it "should raise if both --duration and --n_pkts are specified" do
|
|
138
|
+
lambda do
|
|
139
|
+
@cli.send_packets( @dest, :duration => 10, :n_pkts => 10 )
|
|
140
|
+
end.should raise_error( "--duration and --n_pkts are exclusive." )
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
context "when resetting stats" do
|
|
146
|
+
it "should reset_stats" do
|
|
147
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 reset_stats --tx$/ )
|
|
148
|
+
@cli.should_receive( :sh ).with( /cli -i trema-0 reset_stats --rx$/ )
|
|
149
|
+
@cli.reset_stats
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
### Local variables:
|
|
157
|
+
### mode: Ruby
|
|
158
|
+
### coding: utf-8-unix
|
|
159
|
+
### indent-tabs-mode: nil
|
|
160
|
+
### End:
|
|
@@ -0,0 +1,100 @@
|
|
|
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 File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
+
require "trema"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
module Trema
|
|
26
|
+
describe Controller do
|
|
27
|
+
context "when using OpenFlow constants" do
|
|
28
|
+
subject { Controller.constants }
|
|
29
|
+
|
|
30
|
+
it { should include "OFPP_MAX" }
|
|
31
|
+
it { should include "OFPP_IN_PORT" }
|
|
32
|
+
it { should include "OFPP_TABLE" }
|
|
33
|
+
it { should include "OFPP_NORMAL" }
|
|
34
|
+
it { should include "OFPP_FLOOD" }
|
|
35
|
+
it { should include "OFPP_ALL" }
|
|
36
|
+
it { should include "OFPP_CONTROLLER" }
|
|
37
|
+
it { should include "OFPP_LOCAL" }
|
|
38
|
+
it { should include "OFPP_NONE" }
|
|
39
|
+
|
|
40
|
+
it { should include "OFPPR_ADD" }
|
|
41
|
+
it { should include "OFPPR_DELETE" }
|
|
42
|
+
it { should include "OFPPR_MODIFY" }
|
|
43
|
+
|
|
44
|
+
it { should include "OFPC_FLOW_STATS" }
|
|
45
|
+
it { should include "OFPC_TABLE_STATS" }
|
|
46
|
+
it { should include "OFPC_PORT_STATS" }
|
|
47
|
+
it { should include "OFPC_STP" }
|
|
48
|
+
it { should include "OFPC_RESERVED" }
|
|
49
|
+
it { should include "OFPC_IP_REASM" }
|
|
50
|
+
it { should include "OFPC_QUEUE_STATS" }
|
|
51
|
+
it { should include "OFPC_ARP_MATCH_IP" }
|
|
52
|
+
|
|
53
|
+
it { should include "OFPAT_OUTPUT" }
|
|
54
|
+
it { should include "OFPAT_SET_VLAN_VID" }
|
|
55
|
+
it { should include "OFPAT_SET_VLAN_PCP" }
|
|
56
|
+
it { should include "OFPAT_STRIP_VLAN" }
|
|
57
|
+
it { should include "OFPAT_SET_DL_SRC" }
|
|
58
|
+
it { should include "OFPAT_SET_DL_DST" }
|
|
59
|
+
it { should include "OFPAT_SET_NW_SRC" }
|
|
60
|
+
it { should include "OFPAT_SET_NW_DST" }
|
|
61
|
+
it { should include "OFPAT_SET_NW_TOS" }
|
|
62
|
+
it { should include "OFPAT_SET_TP_DST" }
|
|
63
|
+
it { should include "OFPAT_ENQUEUE" }
|
|
64
|
+
it { should include "OFPAT_VENDOR" }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
context "when logging" do
|
|
69
|
+
subject { Controller.new }
|
|
70
|
+
|
|
71
|
+
it { should respond_to :critical }
|
|
72
|
+
it { should respond_to :error }
|
|
73
|
+
it { should respond_to :warn }
|
|
74
|
+
it { should respond_to :notice }
|
|
75
|
+
it { should respond_to :info }
|
|
76
|
+
it { should respond_to :debug }
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
context "when sending flow_mod messages" do
|
|
81
|
+
it "should send a flow_mod_add message" do
|
|
82
|
+
class FlowModAddController < Controller; end
|
|
83
|
+
|
|
84
|
+
network {
|
|
85
|
+
vswitch { datapath_id 0xabc }
|
|
86
|
+
}.run( FlowModAddController ) {
|
|
87
|
+
controller( "FlowModAddController" ).send_flow_mod_add( 0xabc )
|
|
88
|
+
vswitch( "0xabc" ).should have( 1 ).flows
|
|
89
|
+
}
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
### Local variables:
|
|
97
|
+
### mode: Ruby
|
|
98
|
+
### coding: utf-8-unix
|
|
99
|
+
### indent-tabs-mode: nil
|
|
100
|
+
### End:
|
|
@@ -0,0 +1,122 @@
|
|
|
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 File.join( File.dirname( __FILE__ ), "..", "..", "spec_helper" )
|
|
22
|
+
require "trema/dsl/configuration"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
module Trema
|
|
26
|
+
module DSL
|
|
27
|
+
describe Configuration do
|
|
28
|
+
before :each do
|
|
29
|
+
@context = Configuration.new
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
context "when parsing trema configurations" do
|
|
34
|
+
it "should remember apps" do
|
|
35
|
+
@context.should have( 0 ).apps
|
|
36
|
+
|
|
37
|
+
Trema::App.add mock( "app #0", :name => "app #0" )
|
|
38
|
+
Trema::App.add mock( "app #1", :name => "app #1" )
|
|
39
|
+
Trema::App.add mock( "app #2", :name => "app #2" )
|
|
40
|
+
|
|
41
|
+
@context.should have( 3 ).apps
|
|
42
|
+
|
|
43
|
+
@context.apps[ "app #0" ].name.should == "app #0"
|
|
44
|
+
@context.apps[ "app #1" ].name.should == "app #1"
|
|
45
|
+
@context.apps[ "app #2" ].name.should == "app #2"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
it "should remember hosts" do
|
|
50
|
+
@context.should have( 0 ).hosts
|
|
51
|
+
|
|
52
|
+
Trema::Host.add mock( "host #0", :name => "host #0" )
|
|
53
|
+
Trema::Host.add mock( "host #1", :name => "host #1" )
|
|
54
|
+
Trema::Host.add mock( "host #2", :name => "host #2" )
|
|
55
|
+
|
|
56
|
+
@context.should have( 3 ).hosts
|
|
57
|
+
|
|
58
|
+
@context.hosts[ "host #0" ].name.should == "host #0"
|
|
59
|
+
@context.hosts[ "host #1" ].name.should == "host #1"
|
|
60
|
+
@context.hosts[ "host #2" ].name.should == "host #2"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
it "should remember links" do
|
|
65
|
+
@context.should have( 0 ).links
|
|
66
|
+
|
|
67
|
+
Trema::Link.add mock( "link #0", :name => "link #0" )
|
|
68
|
+
Trema::Link.add mock( "link #1", :name => "link #1" )
|
|
69
|
+
Trema::Link.add mock( "link #2", :name => "link #2" )
|
|
70
|
+
|
|
71
|
+
@context.should have( 3 ).links
|
|
72
|
+
|
|
73
|
+
@context.links[ "link #0" ].name.should == "link #0"
|
|
74
|
+
@context.links[ "link #1" ].name.should == "link #1"
|
|
75
|
+
@context.links[ "link #2" ].name.should == "link #2"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
it "should remember filter settings" do
|
|
80
|
+
@context.packetin_filter.should be_nil
|
|
81
|
+
|
|
82
|
+
packetin_filter = mock( "filter", :name => "filter" )
|
|
83
|
+
Trema::PacketinFilter.add packetin_filter
|
|
84
|
+
|
|
85
|
+
@context.packetin_filter.should == packetin_filter
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
it "should remember switch manager" do
|
|
90
|
+
@context.switch_manager.should be_nil
|
|
91
|
+
|
|
92
|
+
switch_manager = mock( "switch manager", :name => "switch manager" )
|
|
93
|
+
Trema::SwitchManager.add switch_manager
|
|
94
|
+
|
|
95
|
+
@context.switch_manager.should == switch_manager
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
it "should remember switches" do
|
|
100
|
+
@context.should have( 0 ).switches
|
|
101
|
+
|
|
102
|
+
Trema::Switch.add mock( "switch #0", :name => "switch #0" )
|
|
103
|
+
Trema::Switch.add mock( "switch #1", :name => "switch #1" )
|
|
104
|
+
Trema::Switch.add mock( "switch #2", :name => "switch #2" )
|
|
105
|
+
|
|
106
|
+
@context.should have( 3 ).switches
|
|
107
|
+
|
|
108
|
+
@context.switches[ "switch #0" ].name.should == "switch #0"
|
|
109
|
+
@context.switches[ "switch #1" ].name.should == "switch #1"
|
|
110
|
+
@context.switches[ "switch #2" ].name.should == "switch #2"
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
### Local variables:
|
|
119
|
+
### mode: Ruby
|
|
120
|
+
### coding: utf-8-unix
|
|
121
|
+
### indent-tabs-mode: nil
|
|
122
|
+
### End:
|