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,14 @@
|
|
|
1
|
+
Feature: reset network stats with `trema reset_stats' command
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to reset network stats with `trema reset_stats' command
|
|
5
|
+
So that I can easily debug trema applications
|
|
6
|
+
|
|
7
|
+
Scenario: trema help reset_stats
|
|
8
|
+
When I try to run "./trema help reset_stats"
|
|
9
|
+
Then the output should be:
|
|
10
|
+
"""
|
|
11
|
+
Usage: ./trema reset_stats [OPTIONS ...]
|
|
12
|
+
-h, --help
|
|
13
|
+
-v, --verbose
|
|
14
|
+
"""
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Feature: run trema application with `trema run' command
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to launch trema applications with `trema run' command
|
|
5
|
+
So that I don't have to mind the details of Trema
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: trema run launches switch_manager and an application
|
|
9
|
+
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
And wait until "dumper" is up
|
|
14
|
+
Then switch_manager is started
|
|
15
|
+
And dumper is started
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Scenario: trema run launches switch_manager and an application with proper options
|
|
19
|
+
When I try trema run "./objects/examples/learning_switch/learning_switch -i 0xabc" with following configuration (backgrounded, verbose):
|
|
20
|
+
"""
|
|
21
|
+
vswitch { datapath_id "0xabc" }
|
|
22
|
+
"""
|
|
23
|
+
And wait until "learning_switch" is up
|
|
24
|
+
Then "switch_manager" should be executed with option = "--daemonize --port=6633 -- port_status::learning_switch packet_in::learning_switch state_notify::learning_switch"
|
|
25
|
+
And "learning_switch" should be executed with option = "--name learning_switch -i 0xabc"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Scenario: switch_manager is killed when trema session is closed
|
|
29
|
+
When I try trema run "/bin/true" with following configuration (verbose):
|
|
30
|
+
"""
|
|
31
|
+
vswitch { datapath_id "0xabc" }
|
|
32
|
+
"""
|
|
33
|
+
Then switch_manager should be killed
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Scenario: trema help run
|
|
37
|
+
When I try to run "./trema help run"
|
|
38
|
+
Then the output should be:
|
|
39
|
+
"""
|
|
40
|
+
Usage: ./trema run [OPTIONS ...]
|
|
41
|
+
-c, --conf FILE
|
|
42
|
+
-d, --daemonize
|
|
43
|
+
|
|
44
|
+
-h, --help
|
|
45
|
+
-v, --verbose
|
|
46
|
+
"""
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
Feature: send packets with `trema send_packets' command
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to send network packets with `trema send_packets' command
|
|
5
|
+
So that I can easily debug trema applications
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given I try trema run "learning_switch" example with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0xabc" }
|
|
12
|
+
|
|
13
|
+
vhost("host1") { ip "192.168.0.1" }
|
|
14
|
+
vhost("host2") { ip "192.168.0.2" }
|
|
15
|
+
|
|
16
|
+
link "0xabc", "host1"
|
|
17
|
+
link "0xabc", "host2"
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Scenario: send_packets error (--source)
|
|
22
|
+
Then "./trema send_packets --source NO_SUCH_HOST --dest host2" exits abnormally with an error message:
|
|
23
|
+
"""
|
|
24
|
+
Unknown host: NO_SUCH_HOST
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Scenario: send_packets error (--dest)
|
|
29
|
+
Then "./trema send_packets --dest host1 --dest NO_SUCH_HOST" exits abnormally with an error message:
|
|
30
|
+
"""
|
|
31
|
+
Unknown host: NO_SUCH_HOST
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Scenario: trema help send_packets
|
|
36
|
+
When I try to run "./trema help send_packets"
|
|
37
|
+
Then the output should be:
|
|
38
|
+
"""
|
|
39
|
+
Usage: ./trema send_packets --source HOSTNAME --dest HOSTNAME [OPTIONS ...]
|
|
40
|
+
-s, --source HOSTNAME
|
|
41
|
+
--inc_ip_src [NUMBER]
|
|
42
|
+
-d, --dest HOSTNAME
|
|
43
|
+
--inc_ip_dst [NUMBER]
|
|
44
|
+
--tp_src NUMBER
|
|
45
|
+
--inc_tp_src [NUMBER]
|
|
46
|
+
--tp_dst NUMBER
|
|
47
|
+
--inc_tp_dst [NUMBER]
|
|
48
|
+
--pps NUMBER
|
|
49
|
+
--n_pkts NUMBER
|
|
50
|
+
--duration NUMBER
|
|
51
|
+
--length NUMBER
|
|
52
|
+
--inc_payload [NUMBER]
|
|
53
|
+
|
|
54
|
+
-h, --help
|
|
55
|
+
-v, --verbose
|
|
56
|
+
"""
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Feature: show network stats with `trema show_stats' command
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to get packet stats with `trema show_stats' command
|
|
5
|
+
So that I can easily debug trema applications
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given I try trema run "learning_switch" example with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0xabc" }
|
|
12
|
+
|
|
13
|
+
vhost("host1") { ip "192.168.0.1" }
|
|
14
|
+
vhost("host2") { ip "192.168.0.2" }
|
|
15
|
+
|
|
16
|
+
link "0xabc", "host1"
|
|
17
|
+
link "0xabc", "host2"
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
Scenario: show_stats
|
|
22
|
+
When I send 1 packet from host1 to host2
|
|
23
|
+
Then the stats of "host1" should be:
|
|
24
|
+
"""
|
|
25
|
+
Sent packets:
|
|
26
|
+
ip_dst,tp_dst,ip_src,tp_src,n_pkts,n_octets
|
|
27
|
+
192.168.0.2,1,192.168.0.1,1,1,50
|
|
28
|
+
Received packets:
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
Scenario: show_stats --tx
|
|
33
|
+
When I send 1 packet from host1 to host2
|
|
34
|
+
Then the tx stats of "host1" should be:
|
|
35
|
+
"""
|
|
36
|
+
ip_dst,tp_dst,ip_src,tp_src,n_pkts,n_octets
|
|
37
|
+
192.168.0.2,1,192.168.0.1,1,1,50
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
Scenario: show_stats --rx
|
|
42
|
+
When I send 1 packet from host1 to host2
|
|
43
|
+
Then the rx stats of "host2" should be:
|
|
44
|
+
"""
|
|
45
|
+
ip_dst,tp_dst,ip_src,tp_src,n_pkts,n_octets
|
|
46
|
+
192.168.0.2,1,192.168.0.1,1,1,50
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
Scenario: show_stats error
|
|
51
|
+
Then "./trema show_stats NO_SUCH_HOST" exits abnormally with an error message:
|
|
52
|
+
"""
|
|
53
|
+
Unknown host: NO_SUCH_HOST
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
Scenario: trema help show_stats
|
|
58
|
+
When I try to run "./trema help show_stats"
|
|
59
|
+
Then the output should be:
|
|
60
|
+
"""
|
|
61
|
+
Usage: ./trema show_stats HOSTNAME [OPTIONS ...]
|
|
62
|
+
-t, --tx
|
|
63
|
+
-r, --rx
|
|
64
|
+
|
|
65
|
+
-h, --help
|
|
66
|
+
-v, --verbose
|
|
67
|
+
"""
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Feature: Hello trema sample application
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to write "hello trema" application
|
|
5
|
+
So that I can learn how to write minimum trema application
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Hello trema in C
|
|
9
|
+
When I try trema run "./objects/examples/hello_trema/hello_trema" with following configuration:
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
Then the output should include:
|
|
14
|
+
"""
|
|
15
|
+
Hello 0xabc from ./objects/examples/hello_trema/hello_trema!
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Scenario: Hello trema in Ruby
|
|
20
|
+
When I try trema run "./src/examples/hello_trema/hello_trema.rb" with following configuration:
|
|
21
|
+
"""
|
|
22
|
+
vswitch { datapath_id "0xabc" }
|
|
23
|
+
"""
|
|
24
|
+
Then the output should include:
|
|
25
|
+
"""
|
|
26
|
+
Hello 0xabc from ./src/examples/hello_trema/hello_trema.rb!
|
|
27
|
+
"""
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
Feature: Tutorial: Handling packet_in events example
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to respond to packet_in events
|
|
5
|
+
So that I can handle unknown packets
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Handle packet_in
|
|
9
|
+
When I try trema run "./objects/examples/packet_in/packet_in" with following configuration (backgrounded):
|
|
10
|
+
"""
|
|
11
|
+
vswitch("packet_in") { dpid "0xabc" }
|
|
12
|
+
|
|
13
|
+
vhost("host1")
|
|
14
|
+
vhost("host2")
|
|
15
|
+
|
|
16
|
+
link "packet_in", "host1"
|
|
17
|
+
link "packet_in", "host2"
|
|
18
|
+
"""
|
|
19
|
+
And wait until "packet_in" is up
|
|
20
|
+
And I try to run "./trema send_packets --source host1 --dest host2"
|
|
21
|
+
And *** sleep 2 ***
|
|
22
|
+
And I terminated all trema services
|
|
23
|
+
Then the output should include:
|
|
24
|
+
"""
|
|
25
|
+
received a packet_in
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Scenario: Handle packet_in in Ruby
|
|
30
|
+
When I try trema run "./src/examples/packet_in/packet_in.rb" with following configuration (backgrounded):
|
|
31
|
+
"""
|
|
32
|
+
vswitch("packet_in") { dpid "0xabc" }
|
|
33
|
+
|
|
34
|
+
vhost("host1")
|
|
35
|
+
vhost("host2")
|
|
36
|
+
|
|
37
|
+
link "packet_in", "host1"
|
|
38
|
+
link "packet_in", "host2"
|
|
39
|
+
"""
|
|
40
|
+
And wait until "PacketinDumper" is up
|
|
41
|
+
And I try to run "./trema send_packets --source host1 --dest host2"
|
|
42
|
+
And *** sleep 2 ***
|
|
43
|
+
And I terminated all trema services
|
|
44
|
+
Then the output should include:
|
|
45
|
+
"""
|
|
46
|
+
received a packet_in
|
|
47
|
+
"""
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
Feature: "Getting switch info" sample application
|
|
2
|
+
|
|
3
|
+
As a Trema user
|
|
4
|
+
I want to write "Getting switch info" application
|
|
5
|
+
So that I can learn how to acquire the information of openflow switches
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Scenario: Getting switch info in C
|
|
9
|
+
When I try trema run "./objects/examples/switch_info/switch_info" with following configuration:
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id "0xabc" }
|
|
12
|
+
"""
|
|
13
|
+
Then the output should include:
|
|
14
|
+
"""
|
|
15
|
+
datapath_id: 0xabc
|
|
16
|
+
#ports: 1
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Scenario: Getting switch info in C
|
|
21
|
+
When I try trema run "./objects/examples/switch_info/switch_info" with following configuration:
|
|
22
|
+
"""
|
|
23
|
+
vswitch { datapath_id "0xabc" }
|
|
24
|
+
vswitch { datapath_id "0xdef" }
|
|
25
|
+
link "0xabc", "0xdef"
|
|
26
|
+
"""
|
|
27
|
+
Then the output should include:
|
|
28
|
+
"""
|
|
29
|
+
#ports: 2
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
Scenario: Getting switch info in Ruby
|
|
34
|
+
When I try trema run "./src/examples/switch_info/switch_info.rb" with following configuration:
|
|
35
|
+
"""
|
|
36
|
+
vswitch { datapath_id "0xabc" }
|
|
37
|
+
"""
|
|
38
|
+
Then the output should include:
|
|
39
|
+
"""
|
|
40
|
+
datapath_id: 0xabc
|
|
41
|
+
ports: 65534
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
Scenario: Getting switch info in Ruby
|
|
46
|
+
When I try trema run "./src/examples/switch_info/switch_info.rb" with following configuration:
|
|
47
|
+
"""
|
|
48
|
+
vswitch { datapath_id "0xabc" }
|
|
49
|
+
vswitch { datapath_id "0xdef" }
|
|
50
|
+
link "0xabc", "0xdef"
|
|
51
|
+
"""
|
|
52
|
+
Then the output should include:
|
|
53
|
+
"""
|
|
54
|
+
ports: 1, 65534
|
|
55
|
+
"""
|
data/ruby/.gitignore
ADDED
data/ruby/blocker.rb
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Executes a block exclusively.
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# == Example:
|
|
6
|
+
#
|
|
7
|
+
# Blocker.start do
|
|
8
|
+
# # do smething here.
|
|
9
|
+
# end
|
|
10
|
+
#
|
|
11
|
+
#
|
|
12
|
+
# == Credit:
|
|
13
|
+
#
|
|
14
|
+
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
15
|
+
#
|
|
16
|
+
# Copyright (C) 2008-2012 NEC Corporation
|
|
17
|
+
#
|
|
18
|
+
# This program is free software; you can redistribute it and/or modify
|
|
19
|
+
# it under the terms of the GNU General Public License, version 2, as
|
|
20
|
+
# published by the Free Software Foundation.
|
|
21
|
+
#
|
|
22
|
+
# This program is distributed in the hope that it will be useful,
|
|
23
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
24
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
25
|
+
# GNU General Public License for more details.
|
|
26
|
+
#
|
|
27
|
+
# You should have received a copy of the GNU General Public License along
|
|
28
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
29
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
30
|
+
#
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Blocker
|
|
34
|
+
class BlockerError < RuntimeError; end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
PATH = "/tmp/cruise.lock"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def self.start &code_block
|
|
41
|
+
begin
|
|
42
|
+
block
|
|
43
|
+
code_block.call
|
|
44
|
+
rescue BlockerError, Errno::EACCES
|
|
45
|
+
$stderr.puts "Another process is already running. Please wait for a while."
|
|
46
|
+
sleep 10
|
|
47
|
+
retry
|
|
48
|
+
ensure
|
|
49
|
+
release
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def self.block
|
|
55
|
+
lock = File.open( PATH, "a+" )
|
|
56
|
+
locked = lock.flock( File::LOCK_EX | File::LOCK_NB )
|
|
57
|
+
unless locked
|
|
58
|
+
lock.close
|
|
59
|
+
raise BlockerError
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def self.release
|
|
65
|
+
File.open( PATH, "w" ) do | lock |
|
|
66
|
+
lock.flock( File::LOCK_UN | File::LOCK_NB )
|
|
67
|
+
lock.close
|
|
68
|
+
File.delete lock.path
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### Local variables:
|
|
75
|
+
### mode: Ruby
|
|
76
|
+
### coding: utf-8-unix
|
|
77
|
+
### indent-tabs-mode: nil
|
|
78
|
+
### End:
|
data/ruby/extconf.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
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 "mkmf"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
$CFLAGS = "-g -std=gnu99 -D_GNU_SOURCE -fno-strict-aliasing -Wall -Wextra -Wformat=2 -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wfloat-equal -Wpointer-arith"
|
|
25
|
+
$LDFLAGS = "-Wl,-Bsymbolic"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
dir_config "trema"
|
|
29
|
+
dir_config "openflow"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def error_exit message
|
|
33
|
+
$stderr.puts message
|
|
34
|
+
exit false
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def error_lib_missing lib, package
|
|
39
|
+
return <<-EOF
|
|
40
|
+
ERROR: #{ lib } not found!
|
|
41
|
+
|
|
42
|
+
Please install #{ package } with following command:
|
|
43
|
+
% sudo apt-get install #{ package }
|
|
44
|
+
EOF
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
unless find_library( "rt", "clock_gettime" )
|
|
49
|
+
error_exit error_lib_missing( "librt", "libc6-dev" )
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
unless find_library( "dl", "dlopen" )
|
|
53
|
+
error_exit error_lib_missing( "libdl", "libc6-dev" )
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
unless find_library( "sqlite3", "sqlite3_open" )
|
|
57
|
+
error_exit error_lib_missing( "libsqlite3", "libsqlite3-dev" )
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
unless find_library( "trema", "create_hello" )
|
|
61
|
+
error_exit <<-EOF
|
|
62
|
+
ERROR: Trema is not compiled yet!
|
|
63
|
+
|
|
64
|
+
Please try the following command:
|
|
65
|
+
% ./build.rb
|
|
66
|
+
EOF
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
create_makefile "trema", "trema"
|
|
71
|
+
|