trema 0.4.6 → 0.4.7
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +24 -7
- data/Gemfile +19 -27
- data/Guardfile +6 -0
- data/README.md +13 -5
- data/Rakefile +418 -415
- data/bin/quality +2 -2
- data/bin/trema +103 -105
- data/bin/trema-config +7 -7
- data/build.rb +2 -2
- data/cruise.rb +109 -83
- data/features/dsl/switch_port_specifier.feature +1 -1
- data/features/examples/dumper.feature +9 -41
- data/features/examples/hello_trema.feature +1 -1
- data/features/examples/learning_switch.feature +7 -7
- data/features/examples/list_switches.feature +5 -5
- data/features/examples/message.set_config.feature +11 -11
- data/features/examples/message.vendor-action.feature +7 -7
- data/features/examples/message.vendor-stats-request.feature +1 -1
- data/features/examples/multi_learning_switch.feature +7 -7
- data/features/examples/openflow_message.echo.feature +15 -15
- data/features/examples/openflow_message.features_request.feature +12 -12
- data/features/examples/openflow_message.hello.feature +13 -13
- data/features/examples/packet_in.feature +8 -8
- data/features/examples/patch_panel.feature +1 -1
- data/features/examples/repeater_hub.feature +7 -7
- data/features/examples/switch_info.feature +16 -16
- data/features/examples/switch_monitor.feature +11 -11
- data/features/examples/transparent_firewall.feature +73 -0
- data/features/handlers/switch_ready.feature +1 -1
- data/features/step_definitions/misc_steps.rb +24 -24
- data/features/step_definitions/send_packets_steps.rb +2 -2
- data/features/step_definitions/stats_steps.rb +6 -6
- data/features/support/env.rb +15 -15
- data/features/support/hooks.rb +9 -9
- data/features/switch_event/add_forward_entry.feature +3 -3
- data/features/switch_event/delete_forward_entry.feature +3 -3
- data/features/switch_event/dump_forward_entries.feature +2 -2
- data/features/switch_event/set_forward_entries.feature +2 -2
- data/features/trema_commands/dump_flows.feature +1 -0
- data/features/trema_commands/help.feature +1 -0
- data/features/trema_commands/help_option.feature +1 -0
- data/features/trema_commands/kill.feature +1 -0
- data/features/trema_commands/killall.feature +1 -0
- data/features/trema_commands/port_down.feature +1 -0
- data/features/trema_commands/port_up.feature +1 -0
- data/features/trema_commands/reset_stats.feature +1 -0
- data/features/trema_commands/run.feature +1 -0
- data/features/trema_commands/send_packets.feature +2 -1
- data/features/trema_commands/show_stats.feature +1 -0
- data/features/trema_commands/up.feature +1 -0
- data/features/trema_commands/version.feature +1 -0
- data/features/trema_commands/version_option.feature +1 -0
- data/rubocop-todo.yml +159 -0
- data/ruby/blocker.rb +15 -17
- data/ruby/extconf.rb +19 -19
- data/ruby/sub-process.rb +29 -29
- data/ruby/trema/aggregate-stats-reply.rb +2 -2
- data/ruby/trema/app.rb +13 -13
- data/ruby/trema/cli.rb +45 -45
- data/ruby/trema/command.rb +14 -14
- data/ruby/trema/command/dump_flows.rb +5 -5
- data/ruby/trema/command/kill.rb +13 -13
- data/ruby/trema/command/killall.rb +1 -1
- data/ruby/trema/command/netns.rb +3 -3
- data/ruby/trema/command/port_down.rb +7 -7
- data/ruby/trema/command/port_up.rb +7 -7
- data/ruby/trema/command/reset_stats.rb +6 -6
- data/ruby/trema/command/ruby.rb +2 -2
- data/ruby/trema/command/run.rb +23 -23
- data/ruby/trema/command/send_packets.rb +9 -9
- data/ruby/trema/command/shell.rb +14 -16
- data/ruby/trema/command/show_stats.rb +9 -9
- data/ruby/trema/command/up.rb +4 -4
- data/ruby/trema/command/version.rb +1 -1
- data/ruby/trema/controller.rb +10 -10
- data/ruby/trema/custom-switch.rb +4 -4
- data/ruby/trema/daemon.rb +21 -21
- data/ruby/trema/desc-stats-reply.rb +2 -2
- data/ruby/trema/dsl.rb +5 -5
- data/ruby/trema/dsl/configuration.rb +7 -7
- data/ruby/trema/dsl/context.rb +10 -10
- data/ruby/trema/dsl/custom-switch.rb +3 -3
- data/ruby/trema/dsl/link.rb +2 -2
- data/ruby/trema/dsl/netns.rb +9 -9
- data/ruby/trema/dsl/parser.rb +14 -14
- data/ruby/trema/dsl/rswitch.rb +3 -3
- data/ruby/trema/dsl/run.rb +4 -4
- data/ruby/trema/dsl/runner.rb +20 -20
- data/ruby/trema/dsl/stanza.rb +5 -5
- data/ruby/trema/dsl/switch.rb +14 -14
- data/ruby/trema/dsl/syntax.rb +54 -54
- data/ruby/trema/dsl/vhost.rb +9 -9
- data/ruby/trema/dsl/vswitch.rb +4 -4
- data/ruby/trema/enqueue.rb +11 -11
- data/ruby/trema/exact-match.rb +1 -1
- data/ruby/trema/executables.rb +19 -19
- data/ruby/trema/flow-stats-reply.rb +2 -2
- data/ruby/trema/flow.rb +8 -8
- data/ruby/trema/hardware-switch.rb +2 -2
- data/ruby/trema/host.rb +18 -18
- data/ruby/trema/link.rb +9 -9
- data/ruby/trema/mac.rb +1 -5
- data/ruby/trema/match.c +0 -1
- data/ruby/trema/monkey-patch/integer.rb +3 -3
- data/ruby/trema/monkey-patch/integer/base-conversions.rb +1 -1
- data/ruby/trema/monkey-patch/integer/ranges.rb +2 -2
- data/ruby/trema/monkey-patch/integer/validators.rb +1 -1
- data/ruby/trema/monkey-patch/module.rb +2 -2
- data/ruby/trema/monkey-patch/module/class-method.rb +2 -2
- data/ruby/trema/monkey-patch/module/deprecation.rb +1 -1
- data/ruby/trema/monkey-patch/string.rb +1 -1
- data/ruby/trema/monkey-patch/string/inflectors.rb +7 -7
- data/ruby/trema/netns.rb +6 -6
- data/ruby/trema/network-component.rb +7 -7
- data/ruby/trema/ofctl.rb +13 -13
- data/ruby/trema/open-vswitch.rb +25 -25
- data/ruby/trema/openflow-switch.rb +1 -1
- data/ruby/trema/ordered-hash.rb +8 -8
- data/ruby/trema/packet-in.c +0 -1
- data/ruby/trema/packet-queue.rb +8 -8
- data/ruby/trema/packetin-filter.rb +9 -9
- data/ruby/trema/path.rb +32 -32
- data/ruby/trema/phost.rb +5 -5
- data/ruby/trema/port-mod.c +0 -1
- data/ruby/trema/port-stats-reply.rb +2 -2
- data/ruby/trema/port-status-add.rb +2 -2
- data/ruby/trema/port-status-delete.rb +2 -2
- data/ruby/trema/port-status-modify.rb +2 -2
- data/ruby/trema/port.c +0 -1
- data/ruby/trema/process.rb +7 -7
- data/ruby/trema/queue-stats-reply.rb +2 -2
- data/ruby/trema/ruby-switch.rb +6 -6
- data/ruby/trema/send-out-port.rb +11 -11
- data/ruby/trema/set-eth-addr.rb +5 -5
- data/ruby/trema/set-eth-dst-addr.rb +1 -1
- data/ruby/trema/set-eth-src-addr.rb +1 -1
- data/ruby/trema/set-ip-addr.rb +6 -6
- data/ruby/trema/set-ip-dst-addr.rb +1 -1
- data/ruby/trema/set-ip-src-addr.rb +1 -1
- data/ruby/trema/set-ip-tos.rb +6 -6
- data/ruby/trema/set-transport-dst-port.rb +2 -2
- data/ruby/trema/set-transport-port.rb +7 -7
- data/ruby/trema/set-transport-src-port.rb +3 -3
- data/ruby/trema/set-vlan-priority.rb +6 -6
- data/ruby/trema/set-vlan-vid.rb +6 -6
- data/ruby/trema/shell.rb +10 -10
- data/ruby/trema/shell/down.rb +3 -3
- data/ruby/trema/shell/killall.rb +1 -1
- data/ruby/trema/shell/link.rb +14 -14
- data/ruby/trema/shell/reset_stats.rb +6 -6
- data/ruby/trema/shell/run.rb +7 -7
- data/ruby/trema/shell/send_packets.rb +3 -3
- data/ruby/trema/shell/show_stats.rb +7 -7
- data/ruby/trema/shell/up.rb +5 -5
- data/ruby/trema/shell/vhost.rb +4 -4
- data/ruby/trema/shell/vswitch.rb +7 -7
- data/ruby/trema/stats-helper.rb +3 -3
- data/ruby/trema/stats-reply.c +0 -1
- data/ruby/trema/strip-vlan-header.rb +1 -1
- data/ruby/trema/switch-daemon.rb +9 -9
- data/ruby/trema/switch-manager.rb +9 -9
- data/ruby/trema/switch.rb +7 -7
- data/ruby/trema/table-stats-reply.rb +2 -2
- data/ruby/trema/timers.rb +12 -12
- data/ruby/trema/trema.c +0 -1
- data/ruby/trema/tremashark.rb +1 -1
- data/ruby/trema/util.rb +25 -27
- data/ruby/trema/vendor-action.rb +10 -10
- data/ruby/trema/vendor-stats-reply.rb +2 -2
- data/ruby/trema/version.rb +1 -1
- data/spec/spec_helper.rb +50 -52
- data/spec/support/action.rb +9 -12
- data/spec/support/mandatory-option.rb +15 -18
- data/spec/support/matchers/constant.rb +7 -7
- data/spec/support/openflow-message.rb +76 -79
- data/spec/support/port-status.rb +7 -10
- data/spec/trema/app_spec.rb +27 -27
- data/spec/trema/barrier-reply_spec.rb +10 -10
- data/spec/trema/barrier-request_spec.rb +35 -35
- data/spec/trema/cli_spec.rb +63 -63
- data/spec/trema/controller_spec.rb +3 -3
- data/spec/trema/default-logger_spec.rb +4 -4
- data/spec/trema/dsl/configuration_spec.rb +47 -47
- data/spec/trema/dsl/link_spec.rb +11 -11
- data/spec/trema/dsl/run_spec.rb +19 -19
- data/spec/trema/dsl/runner_spec.rb +91 -91
- data/spec/trema/dsl/switch_spec.rb +16 -16
- data/spec/trema/dsl/syntax_spec.rb +22 -22
- data/spec/trema/dsl/vhost_spec.rb +37 -37
- data/spec/trema/dsl/vswitch_spec.rb +21 -21
- data/spec/trema/echo-reply_spec.rb +29 -29
- data/spec/trema/echo-request_spec.rb +54 -54
- data/spec/trema/enqueue_spec.rb +25 -25
- data/spec/trema/error_spec.rb +30 -30
- data/spec/trema/executables_spec.rb +20 -20
- data/spec/trema/features-reply_spec.rb +41 -41
- data/spec/trema/features-request_spec.rb +35 -35
- data/spec/trema/flow-mod_spec.rb +32 -32
- data/spec/trema/flow-removed_spec.rb +62 -62
- data/spec/trema/get-config-reply_spec.rb +14 -12
- data/spec/trema/get-config-request_spec.rb +35 -35
- data/spec/trema/hardware-switch_spec.rb +12 -12
- data/spec/trema/hello_spec.rb +17 -17
- data/spec/trema/host_spec.rb +71 -71
- data/spec/trema/link_spec.rb +13 -13
- data/spec/trema/list-switches-reply_spec.rb +10 -10
- data/spec/trema/match_spec.rb +41 -41
- data/spec/trema/open-vswitch_spec.rb +45 -45
- data/spec/trema/openflow-error_spec.rb +67 -65
- data/spec/trema/packet-in_spec.rb +450 -446
- data/spec/trema/packet-out_spec.rb +42 -42
- data/spec/trema/packetin-filter_spec.rb +5 -5
- data/spec/trema/port-mod_spec.rb +32 -32
- data/spec/trema/port-status-add_spec.rb +3 -3
- data/spec/trema/port-status-delete_spec.rb +3 -3
- data/spec/trema/port-status-modify_spec.rb +16 -16
- data/spec/trema/port-status_spec.rb +2 -2
- data/spec/trema/port_spec.rb +21 -21
- data/spec/trema/process_spec.rb +22 -22
- data/spec/trema/queue-get-config-reply_spec.rb +21 -20
- data/spec/trema/queue-get-config-request_spec.rb +24 -24
- data/spec/trema/send-out-port_spec.rb +42 -42
- data/spec/trema/set-config_spec.rb +31 -31
- data/spec/trema/set-eth-addr_spec.rb +21 -21
- data/spec/trema/set-ip-addr_spec.rb +29 -29
- data/spec/trema/set-ip-tos_spec.rb +26 -26
- data/spec/trema/set-transport-dst-port_spec.rb +22 -22
- data/spec/trema/set-transport-src-port_spec.rb +22 -22
- data/spec/trema/set-vlan-priority_spec.rb +23 -23
- data/spec/trema/set-vlan-vid_spec.rb +23 -23
- data/spec/trema/shell/vhost_spec.rb +21 -21
- data/spec/trema/shell/vswitch_spec.rb +30 -30
- data/spec/trema/stats-reply_spec.rb +183 -173
- data/spec/trema/stats-request_spec.rb +66 -66
- data/spec/trema/strip-vlan-header_spec.rb +11 -11
- data/spec/trema/switch-daemon_spec.rb +34 -34
- data/spec/trema/switch-disconnected_spec.rb +17 -17
- data/spec/trema/switch-manager_spec.rb +6 -6
- data/spec/trema/tremashark_spec.rb +4 -4
- data/spec/trema/util_spec.rb +35 -35
- data/spec/trema/vendor-action_spec.rb +26 -26
- data/spec/trema/vendor_spec.rb +27 -27
- data/spec/trema_spec.rb +2 -2
- data/src/examples/cbench_switch/cbench-switch.rb +3 -3
- data/src/examples/dumper/dumper.rb +31 -31
- data/src/examples/hello_trema/hello-trema.rb +2 -2
- data/src/examples/learning_switch/fdb.rb +14 -14
- data/src/examples/learning_switch/learning-switch.rb +12 -10
- data/src/examples/learning_switch/learning_switch.c +22 -39
- data/src/examples/list_switches/list-switches.rb +3 -3
- data/src/examples/match_compare/match-compare.rb +20 -20
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +12 -12
- data/src/examples/openflow_message/echo.rb +4 -4
- data/src/examples/openflow_message/example.rb +7 -7
- data/src/examples/openflow_message/features-request.rb +31 -31
- data/src/examples/openflow_message/hello.rb +2 -2
- data/src/examples/openflow_message/set-config.rb +4 -4
- data/src/examples/openflow_message/vendor-action.rb +3 -3
- data/src/examples/openflow_message/vendor-stats-request.rb +9 -9
- data/src/examples/packet_in/packet-in.rb +2 -2
- data/src/examples/patch_panel/patch-panel.rb +9 -9
- data/src/examples/repeater_hub/repeater-hub.rb +4 -4
- data/src/examples/repeater_hub/repeater-hub_spec.rb +65 -65
- data/src/examples/simple_router/arp-table.rb +7 -7
- data/src/examples/simple_router/interface.rb +10 -10
- data/src/examples/simple_router/routing-table.rb +4 -4
- data/src/examples/simple_router/simple-router.rb +3 -3
- data/src/examples/switch_info/switch-info.rb +9 -9
- data/src/examples/switch_monitor/switch-monitor.rb +4 -4
- data/src/examples/traffic_monitor/counter.rb +6 -6
- data/src/examples/traffic_monitor/fdb.rb +4 -4
- data/src/examples/traffic_monitor/traffic-monitor.rb +12 -12
- data/src/examples/transparent_firewall/README.md +61 -0
- data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +713 -0
- data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +3440 -0
- data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +11342 -0
- data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +1937 -0
- data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +7329 -0
- data/src/examples/transparent_firewall/block-rfc1918.rb +86 -0
- data/src/examples/transparent_firewall/pass-delegated.rb +178 -0
- data/src/examples/transparent_firewall/regen_aggregated.sh +53 -0
- data/src/examples/transparent_firewall/stats-to-cidrs.rb +59 -0
- data/src/lib/messenger.c +14 -5
- data/src/lib/openflow_message.c +0 -5
- data/tasks/rubocop.rake +22 -0
- data/trema +1 -1
- data/trema-config +1 -1
- data/trema.gemspec +22 -22
- metadata +30 -16
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require
|
|
19
|
+
require 'trema/stats-helper'
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
module Trema
|
|
@@ -54,7 +54,7 @@ module Trema
|
|
|
54
54
|
# @return [AggregateStatsReply]
|
|
55
55
|
# an object that encapsulates the OFPST_STATS_REPLY(OFPST_AGGREGATE) OpenFlow message.
|
|
56
56
|
#
|
|
57
|
-
def initialize
|
|
57
|
+
def initialize(options)
|
|
58
58
|
super FIELDS, options
|
|
59
59
|
end
|
|
60
60
|
end
|
data/ruby/trema/app.rb
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require
|
|
20
|
-
require
|
|
19
|
+
require 'trema/daemon'
|
|
20
|
+
require 'trema/network-component'
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
module Trema
|
|
@@ -35,7 +35,7 @@ module Trema
|
|
|
35
35
|
attr_reader :stanza
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
command { | app | [
|
|
38
|
+
command { | app | [app.command, app.stanza[ :options]].compact.join ' ' }
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
#
|
|
@@ -48,14 +48,14 @@ module Trema
|
|
|
48
48
|
#
|
|
49
49
|
# @api public
|
|
50
50
|
#
|
|
51
|
-
def initialize
|
|
51
|
+
def initialize(stanza)
|
|
52
52
|
@stanza = stanza
|
|
53
|
-
if /\.rb\Z
|
|
54
|
-
require
|
|
55
|
-
path = @stanza.fetch(
|
|
56
|
-
ARGV.replace [
|
|
57
|
-
$LOAD_PATH << File.dirname(
|
|
58
|
-
Trema.module_eval IO.read(
|
|
53
|
+
if /\.rb\Z/ =~ @stanza.fetch(:name) # ruby?
|
|
54
|
+
require 'trema'
|
|
55
|
+
path = @stanza.fetch(:path)
|
|
56
|
+
ARGV.replace [path]
|
|
57
|
+
$LOAD_PATH << File.dirname(path)
|
|
58
|
+
Trema.module_eval IO.read(path)
|
|
59
59
|
else
|
|
60
60
|
App.add self
|
|
61
61
|
end
|
|
@@ -73,7 +73,7 @@ module Trema
|
|
|
73
73
|
# @api public
|
|
74
74
|
#
|
|
75
75
|
def name
|
|
76
|
-
@stanza[ :name
|
|
76
|
+
@stanza[ :name]
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
|
|
@@ -88,7 +88,7 @@ module Trema
|
|
|
88
88
|
# @api public
|
|
89
89
|
#
|
|
90
90
|
def daemonize!
|
|
91
|
-
sh [
|
|
91
|
+
sh [command, '-d', @stanza[ :options]].compact.join(' ')
|
|
92
92
|
self
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -101,7 +101,7 @@ module Trema
|
|
|
101
101
|
# @api private
|
|
102
102
|
#
|
|
103
103
|
def command
|
|
104
|
-
"#{ @stanza[ :path
|
|
104
|
+
"#{ @stanza[ :path] } --name #{ name }"
|
|
105
105
|
end
|
|
106
106
|
end
|
|
107
107
|
end
|
data/ruby/trema/cli.rb
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
#
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
require
|
|
21
|
+
require 'trema/executables'
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
module Trema
|
|
@@ -35,7 +35,7 @@ module Trema
|
|
|
35
35
|
attr_reader :n_octets
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
def initialize
|
|
38
|
+
def initialize(ip_dst, tp_dst, ip_src, tp_src, n_pkts, n_octets)
|
|
39
39
|
@ip_dst = ip_dst
|
|
40
40
|
@tp_dst = tp_dst.to_i
|
|
41
41
|
@ip_src = ip_src
|
|
@@ -58,36 +58,36 @@ end
|
|
|
58
58
|
|
|
59
59
|
module Trema
|
|
60
60
|
class Cli
|
|
61
|
-
def initialize
|
|
61
|
+
def initialize(host)
|
|
62
62
|
@host = host
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
def send_packets
|
|
67
|
-
if options[ :duration
|
|
68
|
-
|
|
66
|
+
def send_packets(dest, options = {})
|
|
67
|
+
if options[ :duration] && options[ :n_pkts]
|
|
68
|
+
fail '--duration and --n_pkts are exclusive.'
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
sh(
|
|
71
|
+
sh("#{ Executables.cli } -i #{ @host.interface } send_packets " \
|
|
72
72
|
"--ip_src #{ @host.ip } --ip_dst #{ dest.ip } " +
|
|
73
|
-
send_packets_options(
|
|
73
|
+
send_packets_options(options))
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
def show_tx_stats
|
|
78
|
-
puts stats(
|
|
78
|
+
puts stats(:tx)
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
def show_rx_stats
|
|
83
|
-
puts stats(
|
|
83
|
+
puts stats(:rx)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
def tx_stats
|
|
88
|
-
stat = stats(
|
|
88
|
+
stat = stats(:tx).split("\n")[ 1]
|
|
89
89
|
if stat
|
|
90
|
-
Trema::Stats.new
|
|
90
|
+
Trema::Stats.new(*stat.split(','))
|
|
91
91
|
else
|
|
92
92
|
nil
|
|
93
93
|
end
|
|
@@ -95,9 +95,9 @@ module Trema
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
def rx_stats
|
|
98
|
-
stat = stats(
|
|
98
|
+
stat = stats(:rx).split("\n")[ 1]
|
|
99
99
|
if stat
|
|
100
|
-
Trema::Stats.new
|
|
100
|
+
Trema::Stats.new(*stat.split(','))
|
|
101
101
|
else
|
|
102
102
|
Trema::Stats.new nil, nil, nil, nil, 0, 0
|
|
103
103
|
end
|
|
@@ -110,7 +110,7 @@ module Trema
|
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
|
|
113
|
-
def add_arp_entry
|
|
113
|
+
def add_arp_entry(other)
|
|
114
114
|
sh "sudo #{ Executables.cli } -i #{ @host.interface } add_arp_entry --ip_addr #{ other.ip } --mac_addr #{ other.mac }"
|
|
115
115
|
end
|
|
116
116
|
|
|
@@ -130,24 +130,24 @@ module Trema
|
|
|
130
130
|
################################################################################
|
|
131
131
|
|
|
132
132
|
|
|
133
|
-
def send_packets_options
|
|
133
|
+
def send_packets_options(options)
|
|
134
134
|
[
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
].compact.join(
|
|
135
|
+
tp_src(options[ :tp_src] || default_tp_src),
|
|
136
|
+
tp_dst(options[ :tp_dst] || default_tp_dst),
|
|
137
|
+
pps(options[ :pps] || default_pps),
|
|
138
|
+
options[ :n_pkts] ? nil : duration(options[ :duration] || default_duration),
|
|
139
|
+
length(options[ :length] || default_length),
|
|
140
|
+
n_pkts(options[ :n_pkts]),
|
|
141
|
+
inc_ip_src(options[ :inc_ip_src]),
|
|
142
|
+
inc_ip_dst(options[ :inc_ip_dst]),
|
|
143
|
+
inc_tp_src(options[ :inc_tp_src]),
|
|
144
|
+
inc_tp_dst(options[ :inc_tp_dst]),
|
|
145
|
+
inc_payload(options[ :inc_payload])
|
|
146
|
+
].compact.join(' ')
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
|
|
150
|
-
def tp_src
|
|
150
|
+
def tp_src(value)
|
|
151
151
|
"--tp_src #{ value }"
|
|
152
152
|
end
|
|
153
153
|
|
|
@@ -157,7 +157,7 @@ module Trema
|
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
|
|
160
|
-
def tp_dst
|
|
160
|
+
def tp_dst(value)
|
|
161
161
|
"--tp_dst #{ value }"
|
|
162
162
|
end
|
|
163
163
|
|
|
@@ -167,7 +167,7 @@ module Trema
|
|
|
167
167
|
end
|
|
168
168
|
|
|
169
169
|
|
|
170
|
-
def pps
|
|
170
|
+
def pps(value)
|
|
171
171
|
"--pps #{ value }"
|
|
172
172
|
end
|
|
173
173
|
|
|
@@ -177,7 +177,7 @@ module Trema
|
|
|
177
177
|
end
|
|
178
178
|
|
|
179
179
|
|
|
180
|
-
def duration
|
|
180
|
+
def duration(value)
|
|
181
181
|
"--duration #{ value }"
|
|
182
182
|
end
|
|
183
183
|
|
|
@@ -187,7 +187,7 @@ module Trema
|
|
|
187
187
|
end
|
|
188
188
|
|
|
189
189
|
|
|
190
|
-
def length
|
|
190
|
+
def length(value)
|
|
191
191
|
"--length #{ value }"
|
|
192
192
|
end
|
|
193
193
|
|
|
@@ -197,63 +197,63 @@ module Trema
|
|
|
197
197
|
end
|
|
198
198
|
|
|
199
199
|
|
|
200
|
-
def inc_ip_src
|
|
200
|
+
def inc_ip_src(value)
|
|
201
201
|
return nil if value.nil?
|
|
202
202
|
if value == true
|
|
203
|
-
|
|
203
|
+
'--inc_ip_src'
|
|
204
204
|
else
|
|
205
205
|
"--inc_ip_src=#{ value }"
|
|
206
206
|
end
|
|
207
207
|
end
|
|
208
208
|
|
|
209
209
|
|
|
210
|
-
def inc_ip_dst
|
|
210
|
+
def inc_ip_dst(value)
|
|
211
211
|
return nil if value.nil?
|
|
212
212
|
if value == true
|
|
213
|
-
|
|
213
|
+
'--inc_ip_dst'
|
|
214
214
|
else
|
|
215
215
|
"--inc_ip_dst=#{ value }"
|
|
216
216
|
end
|
|
217
217
|
end
|
|
218
218
|
|
|
219
219
|
|
|
220
|
-
def inc_tp_src
|
|
220
|
+
def inc_tp_src(value)
|
|
221
221
|
return nil if value.nil?
|
|
222
222
|
if value == true
|
|
223
|
-
|
|
223
|
+
'--inc_tp_src'
|
|
224
224
|
else
|
|
225
225
|
"--inc_tp_src=#{ value }"
|
|
226
226
|
end
|
|
227
227
|
end
|
|
228
228
|
|
|
229
229
|
|
|
230
|
-
def inc_tp_dst
|
|
230
|
+
def inc_tp_dst(value)
|
|
231
231
|
return nil if value.nil?
|
|
232
232
|
if value == true
|
|
233
|
-
|
|
233
|
+
'--inc_tp_dst'
|
|
234
234
|
else
|
|
235
235
|
"--inc_tp_dst=#{ value }"
|
|
236
236
|
end
|
|
237
237
|
end
|
|
238
238
|
|
|
239
239
|
|
|
240
|
-
def inc_payload
|
|
240
|
+
def inc_payload(value)
|
|
241
241
|
return nil if value.nil?
|
|
242
242
|
if value == true
|
|
243
|
-
|
|
243
|
+
'--inc_payload'
|
|
244
244
|
else
|
|
245
245
|
"--inc_payload=#{ value }"
|
|
246
246
|
end
|
|
247
247
|
end
|
|
248
248
|
|
|
249
249
|
|
|
250
|
-
def n_pkts
|
|
250
|
+
def n_pkts(value)
|
|
251
251
|
return nil if value.nil?
|
|
252
252
|
"--n_pkts=#{ value }"
|
|
253
253
|
end
|
|
254
254
|
|
|
255
255
|
|
|
256
|
-
def stats
|
|
256
|
+
def stats(type)
|
|
257
257
|
`sudo #{ Executables.cli } -i #{ @host.interface } show_stats --#{ type }`
|
|
258
258
|
end
|
|
259
259
|
end
|
data/ruby/trema/command.rb
CHANGED
|
@@ -18,20 +18,20 @@
|
|
|
18
18
|
#
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
require
|
|
22
|
-
require
|
|
23
|
-
require
|
|
24
|
-
require
|
|
25
|
-
require
|
|
26
|
-
require
|
|
27
|
-
require
|
|
28
|
-
require
|
|
29
|
-
require
|
|
30
|
-
require
|
|
31
|
-
require
|
|
32
|
-
require
|
|
33
|
-
require
|
|
34
|
-
require
|
|
21
|
+
require 'trema/command/dump_flows'
|
|
22
|
+
require 'trema/command/kill'
|
|
23
|
+
require 'trema/command/killall'
|
|
24
|
+
require 'trema/command/netns'
|
|
25
|
+
require 'trema/command/port_up'
|
|
26
|
+
require 'trema/command/port_down'
|
|
27
|
+
require 'trema/command/reset_stats'
|
|
28
|
+
require 'trema/command/ruby'
|
|
29
|
+
require 'trema/command/run'
|
|
30
|
+
require 'trema/command/send_packets'
|
|
31
|
+
require 'trema/command/shell'
|
|
32
|
+
require 'trema/command/show_stats'
|
|
33
|
+
require 'trema/command/up'
|
|
34
|
+
require 'trema/command/version'
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
### Local variables:
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require
|
|
20
|
-
require
|
|
19
|
+
require 'trema/ofctl'
|
|
20
|
+
require 'trema/util'
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
module Trema
|
|
@@ -25,11 +25,11 @@ module Trema
|
|
|
25
25
|
include Trema::Util
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
def trema_dump_flows
|
|
28
|
+
def trema_dump_flows(switches)
|
|
29
29
|
switches.each do | each |
|
|
30
|
-
switch = find_switch_by_name(
|
|
30
|
+
switch = find_switch_by_name(each)
|
|
31
31
|
exit_now! "No switch named `#{ each }` found!" if switch.nil?
|
|
32
|
-
puts Trema::Ofctl.new.dump_flows(
|
|
32
|
+
puts Trema::Ofctl.new.dump_flows(switch)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
end
|
data/ruby/trema/command/kill.rb
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
require
|
|
19
|
+
require 'trema/util'
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
module Trema
|
|
@@ -24,8 +24,8 @@ module Trema
|
|
|
24
24
|
include Trema::Util
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
def trema_kill
|
|
28
|
-
unless maybe_kill(
|
|
27
|
+
def trema_kill(name)
|
|
28
|
+
unless maybe_kill(name)
|
|
29
29
|
exit_now! "unknown name: #{ name }"
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -36,31 +36,31 @@ module Trema
|
|
|
36
36
|
############################################################################
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
def maybe_kill
|
|
40
|
-
killed = maybe_kill_app(
|
|
41
|
-
killed ||= maybe_shutdown_host(
|
|
42
|
-
killed ||= maybe_shutdown_switch(
|
|
39
|
+
def maybe_kill(name)
|
|
40
|
+
killed = maybe_kill_app(name) || nil
|
|
41
|
+
killed ||= maybe_shutdown_host(name)
|
|
42
|
+
killed ||= maybe_shutdown_switch(name)
|
|
43
43
|
# [TODO] kill a link by its name. Needs a good naming convension for link.
|
|
44
44
|
killed
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
def maybe_kill_app
|
|
49
|
-
app = find_app_by_name(
|
|
48
|
+
def maybe_kill_app(name)
|
|
49
|
+
app = find_app_by_name(name)
|
|
50
50
|
app.kill! if app
|
|
51
51
|
app
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
def maybe_shutdown_host
|
|
56
|
-
host = find_host_by_name(
|
|
55
|
+
def maybe_shutdown_host(name)
|
|
56
|
+
host = find_host_by_name(name)
|
|
57
57
|
host.shutdown! if host
|
|
58
58
|
host
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
def maybe_shutdown_switch
|
|
63
|
-
switch = find_switch_by_name(
|
|
62
|
+
def maybe_shutdown_switch(name)
|
|
63
|
+
switch = find_switch_by_name(name)
|
|
64
64
|
switch.shutdown if switch
|
|
65
65
|
switch
|
|
66
66
|
end
|