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,40 @@
|
|
|
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
|
+
#ifndef ACTION_ENQUEUE_H
|
|
22
|
+
#define ACTION_ENQUEUE_H
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
#include "ruby.h"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
extern VALUE cActionEnqueue;
|
|
29
|
+
void Init_action_enqueue( void );
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
#endif // ACTION_ENQUEUE_H
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* Local variables:
|
|
37
|
+
* c-basic-offset: 2
|
|
38
|
+
* indent-tabs-mode: nil
|
|
39
|
+
* End:
|
|
40
|
+
*/
|
|
@@ -0,0 +1,169 @@
|
|
|
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
|
+
#include "trema.h"
|
|
22
|
+
#include "ruby.h"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
extern VALUE mTrema;
|
|
26
|
+
VALUE cActionOutput;
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
* An action to output a packet to a port.
|
|
31
|
+
*
|
|
32
|
+
* @overload initialize(options={})
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ActionOutput.new( 1 )
|
|
36
|
+
* ActionOutput.new( :port => 1, :max_len => 256 )
|
|
37
|
+
* ActionOutput.new( :port => 1 )
|
|
38
|
+
* ActionOutput.new( :port => 1, :max_len => 256 )
|
|
39
|
+
*
|
|
40
|
+
* @param [Hash] options
|
|
41
|
+
* the options hash to create this action class instance with.
|
|
42
|
+
*
|
|
43
|
+
* @option options [Number] :port
|
|
44
|
+
* port number an index into switch's physical port list. There are also
|
|
45
|
+
* fake output ports. For example a port number set to +OFPP_FLOOD+ would
|
|
46
|
+
* output packets to all physical ports except input port and ports
|
|
47
|
+
* disabled by STP.
|
|
48
|
+
*
|
|
49
|
+
* @option options [Number] :max_len
|
|
50
|
+
* the maximum number of bytes from a packet to send to controller when port
|
|
51
|
+
* is set to +OFPP_CONTROLLER+. A zero length means no bytes of the packet
|
|
52
|
+
* should be sent. It defaults to 64K.
|
|
53
|
+
*
|
|
54
|
+
* @raise [ArgumentError] if port is not an unsigned 16-bit integer.
|
|
55
|
+
* @raise [ArgumentError] if max_len is not an unsigned 16-bit integer.
|
|
56
|
+
*
|
|
57
|
+
* @return [ActionOutput] self
|
|
58
|
+
* an object that encapsulates this action.
|
|
59
|
+
*/
|
|
60
|
+
static VALUE
|
|
61
|
+
action_output_init( VALUE self, VALUE options ) {
|
|
62
|
+
if ( rb_obj_is_kind_of( options, rb_cHash ) ) {
|
|
63
|
+
VALUE port;
|
|
64
|
+
if ( ( port = rb_hash_aref( options, ID2SYM( rb_intern( "port" ) ) ) ) != Qnil ) {
|
|
65
|
+
if ( rb_funcall( port, rb_intern( "unsigned_16bit?" ), 0 ) == Qfalse ) {
|
|
66
|
+
rb_raise( rb_eArgError, "Port must be an unsigned 16-bit integer" );
|
|
67
|
+
}
|
|
68
|
+
rb_iv_set( self, "@port", port );
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
rb_raise( rb_eArgError, "Port is a mandatory option" );
|
|
72
|
+
}
|
|
73
|
+
VALUE max_len;
|
|
74
|
+
if ( ( max_len = rb_hash_aref( options, ID2SYM( rb_intern( "max_len" ) ) ) ) != Qnil ) {
|
|
75
|
+
if ( rb_funcall( max_len, rb_intern( "unsigned_16bit?" ), 0 ) == Qfalse ) {
|
|
76
|
+
rb_raise( rb_eArgError, "Maximum length must be an unsigned 16-bit integer" );
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
max_len = UINT2NUM( UINT16_MAX );
|
|
81
|
+
}
|
|
82
|
+
rb_iv_set( self, "@max_len", max_len );
|
|
83
|
+
}
|
|
84
|
+
else if ( rb_obj_is_kind_of( options, rb_cInteger ) ) {
|
|
85
|
+
if ( rb_funcall( options, rb_intern( "unsigned_16bit?" ), 0 ) == Qfalse ) {
|
|
86
|
+
rb_raise( rb_eArgError, "Port must be an unsigned 16-bit integer" );
|
|
87
|
+
}
|
|
88
|
+
rb_iv_set( self, "@port", options );
|
|
89
|
+
rb_iv_set( self, "@max_len", UINT2NUM( UINT16_MAX ) );
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
rb_raise( rb_eArgError, "Invalid option" );
|
|
93
|
+
}
|
|
94
|
+
return self;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* The index into switch's physical port list.
|
|
100
|
+
*
|
|
101
|
+
* @return [Number] the value of port.
|
|
102
|
+
*/
|
|
103
|
+
static VALUE
|
|
104
|
+
action_output_port( VALUE self ) {
|
|
105
|
+
return rb_iv_get( self, "@port" );
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
/*
|
|
110
|
+
* The maximum number of bytes from a packet to send to controller when port
|
|
111
|
+
* is set to +OFPP_CONTROLLER+.
|
|
112
|
+
*
|
|
113
|
+
* @return [Number] the value of max_len.
|
|
114
|
+
*/
|
|
115
|
+
static VALUE
|
|
116
|
+
action_output_max_len( VALUE self ) {
|
|
117
|
+
return rb_iv_get( self, "@max_len" );
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
/*
|
|
122
|
+
* Appends its action(output to port) to the list of actions.
|
|
123
|
+
*
|
|
124
|
+
* @return [ActionOutput] self
|
|
125
|
+
*/
|
|
126
|
+
static VALUE
|
|
127
|
+
action_output_append( VALUE self, VALUE action_ptr ) {
|
|
128
|
+
uint16_t port = ( uint16_t ) NUM2UINT( action_output_port( self ) );
|
|
129
|
+
uint16_t max_len = ( uint16_t ) NUM2UINT( action_output_max_len( self ) );
|
|
130
|
+
|
|
131
|
+
openflow_actions *actions;
|
|
132
|
+
Data_Get_Struct( action_ptr, openflow_actions, actions );
|
|
133
|
+
|
|
134
|
+
append_action_output( actions, port, max_len );
|
|
135
|
+
return self;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
/*
|
|
140
|
+
* (see ActionEnqueue#inspect)
|
|
141
|
+
*/
|
|
142
|
+
static VALUE
|
|
143
|
+
action_output_inspect( VALUE self ) {
|
|
144
|
+
uint16_t port = ( uint16_t ) NUM2UINT( action_output_port( self ) );
|
|
145
|
+
uint16_t max_len = ( uint16_t ) NUM2UINT( action_output_max_len( self ) );
|
|
146
|
+
|
|
147
|
+
char str[ 64 ];
|
|
148
|
+
sprintf( str, "#<%s port=%u,max_len=%u>", rb_obj_classname( self ), port, max_len );
|
|
149
|
+
return rb_str_new2( str );
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
void
|
|
154
|
+
Init_action_output() {
|
|
155
|
+
cActionOutput = rb_define_class_under( mTrema, "ActionOutput", rb_cObject );
|
|
156
|
+
rb_define_method( cActionOutput, "initialize", action_output_init, 1 );
|
|
157
|
+
rb_define_method( cActionOutput, "port", action_output_port, 0 );
|
|
158
|
+
rb_define_method( cActionOutput, "max_len", action_output_max_len, 0 );
|
|
159
|
+
rb_define_method( cActionOutput, "append", action_output_append, 1 );
|
|
160
|
+
rb_define_method( cActionOutput, "inspect", action_output_inspect, 0 );
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
/*
|
|
165
|
+
* Local variables:
|
|
166
|
+
* c-basic-offset: 2
|
|
167
|
+
* indent-tabs-mode: nil
|
|
168
|
+
* End:
|
|
169
|
+
*/
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
3
|
+
*
|
|
4
|
+
* Copyright (C) 2008-2012 NEC Corporation
|
|
5
|
+
*
|
|
6
|
+
* This program is free software; you can redistribute it and/or modify
|
|
7
|
+
* it under the terms of the GNU General Public License, version 2, as
|
|
8
|
+
* published by the Free Software Foundation.
|
|
9
|
+
*
|
|
10
|
+
* This program is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
* GNU General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU General Public License along
|
|
16
|
+
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
+
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
#ifndef ACTION_OUTPUT_H
|
|
22
|
+
#define ACTION_OUTPUT_H
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
#include "ruby.h"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
extern VALUE cActionOutput;
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
void Init_action_output( void );
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
#endif // ACTION_OUTPUT_H
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* Local variables:
|
|
39
|
+
* c-basic-offset: 2
|
|
40
|
+
* indent-tabs-mode: nil
|
|
41
|
+
* End:
|
|
42
|
+
*/
|
|
@@ -0,0 +1,131 @@
|
|
|
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
|
+
#include "trema.h"
|
|
22
|
+
#include "ruby.h"
|
|
23
|
+
#include "action-common.h"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
extern VALUE mTrema;
|
|
27
|
+
VALUE cActionSetDlDst;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* An action to modify the destination Ethernet address of a packet.
|
|
32
|
+
*
|
|
33
|
+
* @overload initialize(options={})
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ActionSetDlDst.new( :dl_dst => Mac.new( "11:22:33:44:55:66" )
|
|
37
|
+
* ActionSetDlDst.new( :dl_dst => Mac.new( 0x112233445566 )
|
|
38
|
+
*
|
|
39
|
+
* @param [Hash] options
|
|
40
|
+
* the options hash to create this action class instance with.
|
|
41
|
+
*
|
|
42
|
+
* @option options [Mac] :dl_dst
|
|
43
|
+
* a destination Ethernet address encapsulated as a {Mac} object.
|
|
44
|
+
*
|
|
45
|
+
* @raise [ArgumentError] if dl_dst argument is not supplied.
|
|
46
|
+
* @raise [TypeError] if dl_dst argument is not a {Mac} object instance.
|
|
47
|
+
* @raise [TypeError] if options is not a Hash.
|
|
48
|
+
*
|
|
49
|
+
* @return [ActionSetDlDst] self
|
|
50
|
+
* an object that encapsulates this action.
|
|
51
|
+
*/
|
|
52
|
+
static VALUE
|
|
53
|
+
action_set_dl_dst_init( int argc, VALUE *argv, VALUE self ) {
|
|
54
|
+
VALUE options;
|
|
55
|
+
|
|
56
|
+
if ( rb_scan_args( argc, argv, "10", &options ) == 1 ) {
|
|
57
|
+
Check_Type( options, T_HASH );
|
|
58
|
+
VALUE dl_dst;
|
|
59
|
+
if ( ( dl_dst = rb_hash_aref( options, ID2SYM( rb_intern( "dl_dst" ) ) ) ) != Qnil ) {
|
|
60
|
+
if ( rb_obj_is_instance_of( dl_dst, rb_eval_string( "Trema::Mac" ) ) == Qfalse ) {
|
|
61
|
+
rb_raise( rb_eTypeError, "dl dst address should be a Mac object" );
|
|
62
|
+
}
|
|
63
|
+
rb_iv_set( self, "@dl_dst", dl_dst );
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
rb_raise( rb_eArgError, "dl dst address is a mandatory option" );
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return self;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
* A destination Ethernet address encapsulated as a {Mac} object.
|
|
75
|
+
*
|
|
76
|
+
* @return [Mac] the value of dl_dst.
|
|
77
|
+
*/
|
|
78
|
+
static VALUE
|
|
79
|
+
action_get_dl_dst( VALUE self ) {
|
|
80
|
+
return rb_iv_get( self, "@dl_dst" );
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* Appends its action(set_dl_dst) to the list of actions.
|
|
86
|
+
*
|
|
87
|
+
* @return [ActionSetDlDst] self
|
|
88
|
+
*/
|
|
89
|
+
static VALUE
|
|
90
|
+
action_set_dl_dst_append( VALUE self, VALUE action_ptr ) {
|
|
91
|
+
openflow_actions *actions;
|
|
92
|
+
Data_Get_Struct( action_ptr, openflow_actions, actions );
|
|
93
|
+
|
|
94
|
+
uint8_t dl_dst[ OFP_ETH_ALEN ];
|
|
95
|
+
uint8_t *ptr;
|
|
96
|
+
ptr = ( uint8_t* ) dl_addr_short( action_get_dl_dst( self ), dl_dst );
|
|
97
|
+
append_action_set_dl_dst( actions, ptr );
|
|
98
|
+
return self;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
/*
|
|
103
|
+
* (see ActionEnqueue#inspect)
|
|
104
|
+
*/
|
|
105
|
+
static VALUE
|
|
106
|
+
action_set_dl_dst_inspect( VALUE self ) {
|
|
107
|
+
VALUE mac_obj = action_get_dl_dst( self );
|
|
108
|
+
VALUE dl_dst_str = rb_funcall( mac_obj, rb_intern( "to_s" ), 0 );
|
|
109
|
+
|
|
110
|
+
char str[ 64 ];
|
|
111
|
+
sprintf( str, "#<%s dl_dst=%s>", rb_obj_classname( self ), RSTRING_PTR( dl_dst_str ) );
|
|
112
|
+
return rb_str_new2( str );
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
void
|
|
117
|
+
Init_action_set_dl_dst() {
|
|
118
|
+
cActionSetDlDst = rb_define_class_under( mTrema, "ActionSetDlDst", rb_cObject );
|
|
119
|
+
rb_define_method( cActionSetDlDst, "initialize", action_set_dl_dst_init, -1 );
|
|
120
|
+
rb_define_method( cActionSetDlDst, "dl_dst", action_get_dl_dst, 0 );
|
|
121
|
+
rb_define_method( cActionSetDlDst, "append", action_set_dl_dst_append, 1 );
|
|
122
|
+
rb_define_method( cActionSetDlDst, "inspect", action_set_dl_dst_inspect, 0 );
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
/*
|
|
127
|
+
* Local variables:
|
|
128
|
+
* c-basic-offset: 2
|
|
129
|
+
* indent-tabs-mode: nil
|
|
130
|
+
* End:
|
|
131
|
+
*/
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Prototype for setting the destination data link address flow action.
|
|
3
|
+
*
|
|
4
|
+
* Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
5
|
+
*
|
|
6
|
+
* Copyright (C) 2008-2012 NEC Corporation
|
|
7
|
+
*
|
|
8
|
+
* This program is free software; you can redistribute it and/or modify
|
|
9
|
+
* it under the terms of the GNU General Public License, version 2, as
|
|
10
|
+
* published by the Free Software Foundation.
|
|
11
|
+
*
|
|
12
|
+
* This program is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
+
* GNU General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU General Public License along
|
|
18
|
+
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
19
|
+
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#ifndef ACTION_SET_DL_DST_H
|
|
24
|
+
#define ACTION_SET_DL_DST_H
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
#include "ruby.h"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
extern VALUE cActionSetDlDst;
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
void Init_action_set_dl_dst( void );
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
#endif // ACTION_SET_DL_DST_H
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* Local variables:
|
|
41
|
+
* c-basic-offset: 2
|
|
42
|
+
* indent-tabs-mode: nil
|
|
43
|
+
* End:
|
|
44
|
+
*/
|
|
@@ -0,0 +1,131 @@
|
|
|
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
|
+
#include "trema.h"
|
|
22
|
+
#include "ruby.h"
|
|
23
|
+
#include "action-common.h"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
extern VALUE mTrema;
|
|
27
|
+
VALUE cActionSetDlSrc;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* An action to modify the source Ethernet address of a packet.
|
|
32
|
+
*
|
|
33
|
+
* @overload initialize(options={})
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ActionSetDlSrc.new( :dl_src => Mac.new( "11:22:33:44:55:66" )
|
|
37
|
+
* ActionSetDlSrc.new( :dl_src => Mac.new( 0x112233445566 )
|
|
38
|
+
*
|
|
39
|
+
* @param [Hash] options
|
|
40
|
+
* the options hash to create this action class instance with.
|
|
41
|
+
*
|
|
42
|
+
* @option options [Mac] :dl_src
|
|
43
|
+
* a source Ethernet address encapsulated as a {Mac} object.
|
|
44
|
+
*
|
|
45
|
+
* @raise [ArgumentError] if dl_src argument is not supplied.
|
|
46
|
+
* @raise [TypeError] if dl_src argument is not a {Mac} object instance.
|
|
47
|
+
* @raise [TypeError] if options is not a Hash.
|
|
48
|
+
*
|
|
49
|
+
* @return [ActionSetDlSrc] self
|
|
50
|
+
* an object that encapsulates this action.
|
|
51
|
+
*/
|
|
52
|
+
static VALUE
|
|
53
|
+
action_set_dl_src_init( int argc, VALUE *argv, VALUE self ) {
|
|
54
|
+
VALUE options;
|
|
55
|
+
|
|
56
|
+
if ( rb_scan_args( argc, argv, "10", &options ) == 1 ) {
|
|
57
|
+
Check_Type( options, T_HASH );
|
|
58
|
+
VALUE dl_src;
|
|
59
|
+
if ( ( dl_src = rb_hash_aref( options, ID2SYM( rb_intern( "dl_src" ) ) ) ) != Qnil ) {
|
|
60
|
+
if ( rb_obj_is_instance_of( dl_src, rb_eval_string( "Trema::Mac" ) ) == Qfalse ) {
|
|
61
|
+
rb_raise( rb_eTypeError, "dl src address should be a Mac object" );
|
|
62
|
+
}
|
|
63
|
+
rb_iv_set( self, "@dl_src", dl_src );
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
rb_raise( rb_eArgError, "dl src address is a mandatory option" );
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return self;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
* A source Ethernet address encapsulated as a {Mac} object.
|
|
75
|
+
*
|
|
76
|
+
* @return [Mac] the value of dl_src.
|
|
77
|
+
*/
|
|
78
|
+
static VALUE
|
|
79
|
+
action_get_dl_src( VALUE self ) {
|
|
80
|
+
return rb_iv_get( self, "@dl_src" );
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* Appends its action(set_dl_src) to the list of actions.
|
|
86
|
+
*
|
|
87
|
+
* @return [ActionSetDlSrc] self
|
|
88
|
+
*/
|
|
89
|
+
static VALUE
|
|
90
|
+
action_set_dl_src_append( VALUE self, VALUE action_ptr ) {
|
|
91
|
+
openflow_actions *actions;
|
|
92
|
+
Data_Get_Struct( action_ptr, openflow_actions, actions );
|
|
93
|
+
|
|
94
|
+
uint8_t dl_src[ OFP_ETH_ALEN ];
|
|
95
|
+
uint8_t *ptr;
|
|
96
|
+
ptr = ( uint8_t* ) dl_addr_short( action_get_dl_src( self ), dl_src );
|
|
97
|
+
append_action_set_dl_src( actions, ptr );
|
|
98
|
+
return self;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
/*
|
|
103
|
+
* (see ActionEnqueue#inspect)
|
|
104
|
+
*/
|
|
105
|
+
static VALUE
|
|
106
|
+
action_set_dl_src_inspect( VALUE self ) {
|
|
107
|
+
VALUE mac_obj = action_get_dl_src( self );
|
|
108
|
+
|
|
109
|
+
VALUE dl_src_str = rb_funcall( mac_obj, rb_intern( "to_s" ), 0 );
|
|
110
|
+
char str[ 64 ];
|
|
111
|
+
sprintf( str, "#<%s dl_src=%s>", rb_obj_classname( self ), RSTRING_PTR( dl_src_str ) );
|
|
112
|
+
return rb_str_new2( str );
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
void
|
|
117
|
+
Init_action_set_dl_src() {
|
|
118
|
+
cActionSetDlSrc = rb_define_class_under( mTrema, "ActionSetDlSrc", rb_cObject );
|
|
119
|
+
rb_define_method( cActionSetDlSrc, "initialize", action_set_dl_src_init, -1 );
|
|
120
|
+
rb_define_method( cActionSetDlSrc, "dl_src", action_get_dl_src, 0 );
|
|
121
|
+
rb_define_method( cActionSetDlSrc, "append", action_set_dl_src_append, 1 );
|
|
122
|
+
rb_define_method( cActionSetDlSrc, "inspect", action_set_dl_src_inspect, 0 );
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
/*
|
|
127
|
+
* Local variables:
|
|
128
|
+
* c-basic-offset: 2
|
|
129
|
+
* indent-tabs-mode: nil
|
|
130
|
+
* End:
|
|
131
|
+
*/
|