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,142 @@
|
|
|
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 Error, ".new( VALID OPTIONS )" do
|
|
26
|
+
context "when using Error constants" do
|
|
27
|
+
subject { Error.constants }
|
|
28
|
+
it { should include "OFPET_HELLO_FAILED" }
|
|
29
|
+
it { should include "OFPET_BAD_REQUEST" }
|
|
30
|
+
it { should include "OFPET_BAD_ACTION" }
|
|
31
|
+
it { should include "OFPET_FLOW_MOD_FAILED" }
|
|
32
|
+
it { should include "OFPET_PORT_MOD_FAILED" }
|
|
33
|
+
it { should include "OFPET_QUEUE_OP_FAILED" }
|
|
34
|
+
|
|
35
|
+
it { should include "OFPHFC_INCOMPATIBLE" }
|
|
36
|
+
it { should include "OFPHFC_EPERM" }
|
|
37
|
+
|
|
38
|
+
it { should include "OFPBRC_BAD_VERSION" }
|
|
39
|
+
it { should include "OFPBRC_BAD_TYPE" }
|
|
40
|
+
it { should include "OFPBRC_BAD_STAT" }
|
|
41
|
+
it { should include "OFPBRC_BAD_VENDOR" }
|
|
42
|
+
it { should include "OFPBRC_BAD_SUBTYPE" }
|
|
43
|
+
it { should include "OFPBRC_EPERM" }
|
|
44
|
+
it { should include "OFPBRC_BAD_LEN" }
|
|
45
|
+
it { should include "OFPBRC_BUFFER_EMPTY" }
|
|
46
|
+
it { should include "OFPBRC_BUFFER_UNKNOWN" }
|
|
47
|
+
|
|
48
|
+
it { should include "OFPBAC_BAD_TYPE" }
|
|
49
|
+
it { should include "OFPBAC_BAD_LEN" }
|
|
50
|
+
it { should include "OFPBAC_BAD_VENDOR" }
|
|
51
|
+
it { should include "OFPBAC_BAD_VENDOR_TYPE" }
|
|
52
|
+
it { should include "OFPBAC_BAD_OUT_PORT" }
|
|
53
|
+
it { should include "OFPBAC_BAD_ARGUMENT" }
|
|
54
|
+
it { should include "OFPBAC_EPERM" }
|
|
55
|
+
it { should include "OFPBAC_TOO_MANY" }
|
|
56
|
+
it { should include "OFPBAC_BAD_QUEUE" }
|
|
57
|
+
|
|
58
|
+
it { should include "OFPFMFC_ALL_TABLES_FULL" }
|
|
59
|
+
it { should include "OFPFMFC_OVERLAP" }
|
|
60
|
+
it { should include "OFPFMFC_OVERLAP" }
|
|
61
|
+
it { should include "OFPFMFC_BAD_EMERG_TIMEOUT" }
|
|
62
|
+
it { should include "OFPFMFC_BAD_COMMAND" }
|
|
63
|
+
it { should include "OFPFMFC_UNSUPPORTED" }
|
|
64
|
+
|
|
65
|
+
it { should include "OFPPMFC_BAD_PORT" }
|
|
66
|
+
it { should include "OFPPMFC_BAD_HW_ADDR" }
|
|
67
|
+
|
|
68
|
+
it { should include "OFPQOFC_BAD_PORT" }
|
|
69
|
+
it { should include "OFPQOFC_BAD_QUEUE" }
|
|
70
|
+
it { should include "OFPQOFC_EPERM" }
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
describe Error, ".new( MANDATORY OPTIONS MISSING ) - type, code" do
|
|
76
|
+
subject{ Error.new }
|
|
77
|
+
exception = "Type and code are mandatory options"
|
|
78
|
+
it "should raise '#{ exception }'" do
|
|
79
|
+
expect { subject }.to raise_error( exception )
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
describe Error, ".new( MANDATORY OPTION MISSING ) - code" do
|
|
85
|
+
subject { Error.new( :type => Error::OFPET_BAD_REQUEST ) }
|
|
86
|
+
exception = "Code is a mandatory option"
|
|
87
|
+
it "should raise '#{ exception }'" do
|
|
88
|
+
expect { subject }.to raise_error( exception )
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
describe Error, ".new( MANDATORY OPTION MISSING ) - type" do
|
|
95
|
+
subject { Error.new( :code => Error::OFPBRC_BAD_TYPE ) }
|
|
96
|
+
exception = "Type is a mandatory option"
|
|
97
|
+
it "should raise '#{ exception }'" do
|
|
98
|
+
expect { subject }.to raise_error( exception )
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
describe Error, ".new( OPTIONAL OPTION MISSING ) - transaction_id" do
|
|
104
|
+
subject { Error.new( :type => Error::OFPET_BAD_REQUEST, :code => Error::OFPBRC_BAD_TYPE ) }
|
|
105
|
+
it_should_behave_like "any Openflow message with default transaction ID"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
describe Error, ".new( OPTIONAL OPTION MISSING ) - user_data" do
|
|
110
|
+
subject do
|
|
111
|
+
Error.new(
|
|
112
|
+
:type => Error::OFPET_BAD_REQUEST,
|
|
113
|
+
:code => Error::OFPBRC_BAD_TYPE,
|
|
114
|
+
:transaction_id => 123
|
|
115
|
+
)
|
|
116
|
+
end
|
|
117
|
+
its( :user_data ) { should be_nil }
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
describe Error, ".new( VALID OPTIONS )" do
|
|
122
|
+
subject do
|
|
123
|
+
Error.new(
|
|
124
|
+
:type => Error::OFPET_BAD_REQUEST,
|
|
125
|
+
:code => Error::OFPBRC_BAD_TYPE,
|
|
126
|
+
:transaction_id => transaction_id,
|
|
127
|
+
:user_data => "this is a test"
|
|
128
|
+
)
|
|
129
|
+
end
|
|
130
|
+
let( :transaction_id ) { 1234 }
|
|
131
|
+
its( :error_type ) { should == Error::OFPET_BAD_REQUEST }
|
|
132
|
+
its( :code ) { should == Error::OFPBRC_BAD_TYPE }
|
|
133
|
+
its( :user_data ) { should eq "this is a test" }
|
|
134
|
+
it_should_behave_like "any OpenFlow message with transaction_id option"
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
### Local variables:
|
|
139
|
+
### mode: Ruby
|
|
140
|
+
### coding: utf-8-unix
|
|
141
|
+
### indent-tabs-mode: nil
|
|
142
|
+
### End:
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
3
|
+
#
|
|
4
|
+
# Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License, version 2, as
|
|
8
|
+
# published by the Free Software Foundation.
|
|
9
|
+
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU General Public License along
|
|
16
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
|
|
22
|
+
require "trema/executables"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
describe Trema::Executables do
|
|
26
|
+
it "should know the path of tremashark executable" do
|
|
27
|
+
Trema::Executables.should respond_to( :tremashark )
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
it "should know the path of switch_manager executable" do
|
|
32
|
+
Trema::Executables.should respond_to( :switch_manager )
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
it "should know the path of switch_manager executable" do
|
|
37
|
+
Trema::Executables.should respond_to( :switch_manager )
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
it "should know the path of packetin_filter executable" do
|
|
42
|
+
Trema::Executables.should respond_to( :packetin_filter )
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
it "should know the path of phost executable" do
|
|
47
|
+
Trema::Executables.should respond_to( :phost )
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
it "should know the path of phost's cli executable" do
|
|
52
|
+
Trema::Executables.should respond_to( :cli )
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
it "should know the path of ovs-openflowd executable" do
|
|
57
|
+
Trema::Executables.should respond_to( :ovs_openflowd )
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
it "should detect if all executables are compled or not" do
|
|
62
|
+
FileTest.stub!( :executable? ).and_return( true )
|
|
63
|
+
Trema::Executables.compiled?.should be_true
|
|
64
|
+
|
|
65
|
+
FileTest.stub!( :executable? ).and_return( false )
|
|
66
|
+
Trema::Executables.compiled?.should be_false
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### Local variables:
|
|
72
|
+
### mode: Ruby
|
|
73
|
+
### coding: utf-8-unix
|
|
74
|
+
### indent-tabs-mode: nil
|
|
75
|
+
### End:
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
describe FeaturesReply, ".new( VALID OPTIONS )" do
|
|
26
|
+
subject { FeaturesReply.new( :datapath_id => 123,
|
|
27
|
+
:transaction_id => 1234,
|
|
28
|
+
:n_buffers => 256,
|
|
29
|
+
:n_tables => 2,
|
|
30
|
+
:capabilities => 135,
|
|
31
|
+
:actions => 2047,
|
|
32
|
+
:ports => ports
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
its( :datapath_id ) { should == 123 }
|
|
36
|
+
its( :transaction_id ) { should == 1234 }
|
|
37
|
+
its( :n_buffers ) { should == 256 }
|
|
38
|
+
its( :n_tables ) { should == 2 }
|
|
39
|
+
its( :capabilities ) { should == 135 }
|
|
40
|
+
its( :actions ) { should == 2047 }
|
|
41
|
+
let( :ports ) { [ mock( "port #0" ), mock( "port #1" ), mock( "port #2" ) ] }
|
|
42
|
+
its( :ports ) { subject.size.should == 3 }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
describe FeaturesReply, ".new( MANDATORY OPTIONS MISSING)" do
|
|
47
|
+
it "should raise ArgumentError" do
|
|
48
|
+
expect { subject }.to raise_error( ArgumentError )
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Local variables:
|
|
54
|
+
### mode: Ruby
|
|
55
|
+
### coding: utf-8-unix
|
|
56
|
+
### indent-tabs-mode: nil
|
|
57
|
+
### End:
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
describe FeaturesRequest, ".new( OPTIONAL OPTION MISSING )" do
|
|
26
|
+
it_should_behave_like "any Openflow message with default transaction ID"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
describe FeaturesRequest, ".new( VALID OPTION )" do
|
|
31
|
+
subject { FeaturesRequest.new :transaction_id => transaction_id }
|
|
32
|
+
it_should_behave_like "any OpenFlow message with transaction_id option"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
context "when #features_request is sent with transaction ID(1234)" do
|
|
36
|
+
it "should receive #features_reply with transaction ID(1234)" do
|
|
37
|
+
class FeaturesController < Controller; end
|
|
38
|
+
network {
|
|
39
|
+
vswitch { datapath_id 0xabc }
|
|
40
|
+
}.run( FeaturesController ) {
|
|
41
|
+
features_request = FeaturesRequest.new( :transaction_id => 1234 )
|
|
42
|
+
controller( "FeaturesController" ).send_message( 0xabc, features_request )
|
|
43
|
+
controller( "FeaturesController" ).should_receive( :features_reply ) do | arg |
|
|
44
|
+
arg.datapath_id.should == 0xabc
|
|
45
|
+
arg.transaction_id.should == 1234
|
|
46
|
+
end
|
|
47
|
+
}
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
describe FeaturesRequest, ".new( INVALID OPTION )" do
|
|
54
|
+
it "should raise TypeError" do
|
|
55
|
+
expect {
|
|
56
|
+
FeaturesRequest.new "INVALID_OPTION"
|
|
57
|
+
}.to raise_error( TypeError )
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### Local variables:
|
|
63
|
+
### mode: Ruby
|
|
64
|
+
### coding: utf-8-unix
|
|
65
|
+
### indent-tabs-mode: nil
|
|
66
|
+
### End:
|
|
@@ -0,0 +1,146 @@
|
|
|
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 Trema::FlowRemoved, ".new( VALID OPTIONS )" do
|
|
26
|
+
context "when an instance is created" do
|
|
27
|
+
subject do
|
|
28
|
+
match = Match.new(
|
|
29
|
+
:in_port => 1,
|
|
30
|
+
:dl_src => "00:00:00:00:00:01",
|
|
31
|
+
:dl_dst => "00:00:00:00:00:02",
|
|
32
|
+
:dl_vlan => 65535,
|
|
33
|
+
:dl_vlan_pcp => 0,
|
|
34
|
+
:dl_type => 0x800,
|
|
35
|
+
:nw_tos => 0,
|
|
36
|
+
:nw_proto => 17,
|
|
37
|
+
:nw_src => "192.168.0.1",
|
|
38
|
+
:nw_dst => "192.168.0.2",
|
|
39
|
+
:tp_src => 1,
|
|
40
|
+
:tp_dst => 1
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
FlowRemoved.new(
|
|
44
|
+
:datapath_id=>2748,
|
|
45
|
+
:transaction_id=>0,
|
|
46
|
+
:match => match,
|
|
47
|
+
:cookie => 123456789,
|
|
48
|
+
:priority => 65535,
|
|
49
|
+
:reason => 0,
|
|
50
|
+
:duration_sec=>1,
|
|
51
|
+
:duration_nsec=>779000000,
|
|
52
|
+
:idle_timeout=>1,
|
|
53
|
+
:packet_count=> 6,
|
|
54
|
+
:byte_count => 256
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
its ( :datapath_id ) { should == 2748 }
|
|
58
|
+
its ( :transaction_id ) { should == 0 }
|
|
59
|
+
its ( :match ) { should be_instance_of( Match ) }
|
|
60
|
+
its ( :cookie ) { should == 123456789 }
|
|
61
|
+
its ( :priority ) { should == 65535 }
|
|
62
|
+
its ( :reason ) { should == 0 }
|
|
63
|
+
its ( :duration_sec ) { should == 1 }
|
|
64
|
+
its ( :duration_nsec ) { should == 779000000 }
|
|
65
|
+
its ( :idle_timeout ) { should == 1 }
|
|
66
|
+
its ( :packet_count ) { should == 6 }
|
|
67
|
+
its ( :byte_count ) { should == 256 }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
context "when a flow expires" do
|
|
72
|
+
it "should #flow_removed" do
|
|
73
|
+
class FlowRemovedController < Controller; end
|
|
74
|
+
network {
|
|
75
|
+
vswitch { datapath_id 0xabc }
|
|
76
|
+
}.run( FlowRemovedController ) {
|
|
77
|
+
controller( "FlowRemovedController" ).should_receive( :flow_removed )
|
|
78
|
+
controller( "FlowRemovedController" ).send_flow_mod_add(
|
|
79
|
+
0xabc,
|
|
80
|
+
:idle_timeout => 1,
|
|
81
|
+
:send_flow_rem => true
|
|
82
|
+
)
|
|
83
|
+
sleep 2 # FIXME: wait to receive flow_removed
|
|
84
|
+
}
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
it "should #flow_removed with valid attributes as per flow mod add" do
|
|
89
|
+
class FlowRemovedController < Controller; end
|
|
90
|
+
match = Match.new(
|
|
91
|
+
:in_port=> 1,
|
|
92
|
+
:dl_src => "00:00:00:00:00:01",
|
|
93
|
+
:dl_dst => "00:00:00:00:00:02",
|
|
94
|
+
:dl_type => 0x800,
|
|
95
|
+
:dl_vlan => 65535,
|
|
96
|
+
:dl_vlan_pcp => 0,
|
|
97
|
+
:nw_tos => 0,
|
|
98
|
+
:nw_proto => 17,
|
|
99
|
+
:nw_src => "192.168.0.1",
|
|
100
|
+
:nw_dst => "192.168.0.2",
|
|
101
|
+
:tp_src => 1,
|
|
102
|
+
:tp_dst => 1
|
|
103
|
+
)
|
|
104
|
+
network {
|
|
105
|
+
vswitch { datapath_id 0xabc }
|
|
106
|
+
}.run( FlowRemovedController ) {
|
|
107
|
+
controller( "FlowRemovedController" ).should_receive( :flow_removed ) do | datapath_id, message |
|
|
108
|
+
datapath_id.should == 0xabc
|
|
109
|
+
message.match.in_port.should == 1
|
|
110
|
+
message.match.dl_src.to_s.should == "00:00:00:00:00:01"
|
|
111
|
+
message.match.dl_dst.to_s.should == "00:00:00:00:00:02"
|
|
112
|
+
message.match.dl_type.should == 0x800
|
|
113
|
+
message.match.dl_vlan.should == 65535
|
|
114
|
+
message.match.dl_vlan_pcp.should == 0
|
|
115
|
+
message.match.nw_tos.should == 0
|
|
116
|
+
message.match.nw_proto.should == 17
|
|
117
|
+
Trema::IP.new( message.match.nw_src ).to_s.should == "192.168.0.1"
|
|
118
|
+
Trema::IP.new( message.match.nw_dst ).to_s.should == "192.168.0.2"
|
|
119
|
+
message.match.tp_src.should == 1
|
|
120
|
+
message.match.tp_dst.should == 1
|
|
121
|
+
message.cookie.should == 123456789
|
|
122
|
+
message.idle_timeout.should == 1
|
|
123
|
+
message.reason.should == 0
|
|
124
|
+
message.duration_sec.should >= 1
|
|
125
|
+
message.packet_count.should == 0
|
|
126
|
+
message.byte_count.should == 0
|
|
127
|
+
end
|
|
128
|
+
controller( "FlowRemovedController" ).send_flow_mod_add(
|
|
129
|
+
0xabc,
|
|
130
|
+
:match => match,
|
|
131
|
+
:cookie => 123456789,
|
|
132
|
+
:idle_timeout => 1,
|
|
133
|
+
:send_flow_rem => true
|
|
134
|
+
)
|
|
135
|
+
sleep 2 # FIXME: wait to receive flow_removed
|
|
136
|
+
}
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
### Local variables:
|
|
143
|
+
### mode: Ruby
|
|
144
|
+
### coding: utf-8-unix
|
|
145
|
+
### indent-tabs-mode: nil
|
|
146
|
+
### End:
|