trema 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
data/bin/trema CHANGED
@@ -148,6 +148,23 @@ command :send_packets do | c |
148
148
  end
149
149
 
150
150
 
151
+ desc "Brings a switch's specified port up"
152
+ command :port_up do | c |
153
+ c.desc "switch name"
154
+ c.flag [ :s, :switch ]
155
+
156
+ c.desc "port"
157
+ c.flag [ :p, :port ]
158
+
159
+ c.action do | global_options, options, args |
160
+ raise "--switch option is mandatory" if options[ :switch ].nil?
161
+ raise "--port option is mandatory" if options[ :port ].nil?
162
+
163
+ trema_port_up options[ :switch ], options[ :port ]
164
+ end
165
+ end
166
+
167
+
151
168
  desc "Brings a switch's specified port down"
152
169
  command :port_down do | c |
153
170
  c.desc "switch name"
data/features/.nav CHANGED
@@ -6,6 +6,7 @@
6
6
  - up.feature
7
7
  - killall.feature
8
8
  - send_packets.feature
9
+ - port_up.feature
9
10
  - port_down.feature
10
11
  - show_stats.feature
11
12
  - reset_stats.feature
@@ -0,0 +1,74 @@
1
+ Feature: port_up command
2
+
3
+ Use this command to ensure that your controller detects network
4
+ topology changes i.e., failures in switches.
5
+
6
+ Trema emulated network offers a set of commands that can change the
7
+ status of any arbitrary switch port. The `trema port_up` is one such
8
+ command and its command syntax is as follows:
9
+
10
+ $ trema port_up --switch DATAPATH_ID --port PORT_NUMBER
11
+
12
+ The above command brings the switch's specified port up. By using
13
+ this command one can easily test the :port_status handler defined in
14
+ controllers.
15
+
16
+ Background:
17
+ Given a file named "sample.conf" with:
18
+ """
19
+ vswitch { datapath_id 0x1 }
20
+ vswitch { datapath_id 0x2 }
21
+
22
+ link "0x1", "0x2"
23
+ """
24
+ And a file named "port-observer.rb" with:
25
+ """
26
+ class PortObserver < Controller
27
+ def switch_ready dpid
28
+ info "Switch %#x is UP", dpid
29
+ end
30
+
31
+
32
+ def port_status dpid, message
33
+ if message.phy_port.up?
34
+ info "Port #{ message.phy_port.number } (Switch %#x) is UP", dpid
35
+ elsif message.phy_port.down?
36
+ info "Port #{ message.phy_port.number } (Switch %#x) is DOWN", dpid
37
+ end
38
+ end
39
+ end
40
+ """
41
+
42
+ @slow_process
43
+ Scenario: trema port_up --switch 0x1 --port 1
44
+ Given I run `trema run ./port-observer.rb -c sample.conf` interactively
45
+ And I wait for output to contain "Switch 0x1 is UP"
46
+ And I run `trema port_down --switch 0x1 --port 1`
47
+ And I wait for output to contain "Port 1 (Switch 0x1) is DOWN"
48
+ When I run `trema port_up --switch 0x1 --port 1`
49
+ Then the output should contain "Port 1 (Switch 0x1) is UP" within the timeout period
50
+
51
+ @slow_process
52
+ Scenario: trema port_up --switch UNKNOWN --port 1 (unknown switch error)
53
+ Given I run `trema run ./port-observer.rb -c sample.conf -d`
54
+ When I run `trema port_up --switch UNKNOWN --port 1`
55
+ Then the output should contain "error: unknown switch: UNKNOWN"
56
+
57
+ @slow_process
58
+ Scenario: trema port_up --switch 0x1 --port 100 (unknown port error)
59
+ Given I run `trema run ./port-observer.rb -c sample.conf -d`
60
+ When I run `trema port_up --switch 0x1 --port 100`
61
+ Then the output should contain "error: ovs-ofctl: vsw_0x1: couldn't find port `100'"
62
+
63
+ @slow_process
64
+ Scenario: trema port_up --switch 0x1 (no --port option error)
65
+ Given I run `trema run ./port-observer.rb -c sample.conf -d`
66
+ When I run `trema port_up --switch 0x1`
67
+ Then the output should contain "error: --port option is mandatory"
68
+
69
+ @slow_process
70
+ Scenario: trema port_up --port 1 (no --switch option error)
71
+ Given I run `trema run ./port-observer.rb -c sample.conf -d`
72
+ When I run `trema port_up --port 1`
73
+ Then the output should contain "error: --switch option is mandatory"
74
+
@@ -22,6 +22,7 @@ require "trema/command/dump_flows"
22
22
  require "trema/command/kill"
23
23
  require "trema/command/killall"
24
24
  require "trema/command/netns"
25
+ require "trema/command/port_up"
25
26
  require "trema/command/port_down"
26
27
  require "trema/command/reset_stats"
27
28
  require "trema/command/ruby"
@@ -0,0 +1,43 @@
1
+ #
2
+ # Copyright (C) 2008-2012 NEC Corporation
3
+ #
4
+ # This program is free software; you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License, version 2, as
6
+ # published by the Free Software Foundation.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+ #
17
+
18
+
19
+ require "trema/cli"
20
+ require "trema/util"
21
+
22
+
23
+ module Trema
24
+ module Command
25
+ include Trema::Util
26
+
27
+
28
+ def trema_port_up switch_name, port
29
+ switch = find_switch_by_name( switch_name )
30
+ raise "unknown switch: #{ switch_name }" if switch.nil?
31
+
32
+ error = switch.bring_port_up( port.to_i )
33
+ raise error if $?.exitstatus != 0
34
+ end
35
+ end
36
+ end
37
+
38
+
39
+ ### Local variables:
40
+ ### mode: Ruby
41
+ ### coding: utf-8
42
+ ### indent-tabs-mode: nil
43
+ ### End:
data/ruby/trema/ofctl.rb CHANGED
@@ -53,6 +53,11 @@ module Trema
53
53
  end
54
54
 
55
55
 
56
+ def bring_port_up switch, port_number
57
+ `sudo #{ Executables.ovs_ofctl } mod-port #{ switch.network_device } #{ port_number } up 2>&1`
58
+ end
59
+
60
+
56
61
  def bring_port_down switch, port_number
57
62
  `sudo #{ Executables.ovs_ofctl } mod-port #{ switch.network_device } #{ port_number } down 2>&1`
58
63
  end
@@ -97,6 +97,11 @@ module Trema
97
97
  end
98
98
 
99
99
 
100
+ def bring_port_up port_number
101
+ Ofctl.new.bring_port_up self, port_number
102
+ end
103
+
104
+
100
105
  def bring_port_down port_number
101
106
  Ofctl.new.bring_port_down self, port_number
102
107
  end
data/ruby/trema/path.rb CHANGED
@@ -66,10 +66,10 @@ module Trema
66
66
  dir :tmp, "pid"
67
67
  dir :tmp, "sock"
68
68
  dir :vendor, "cmockery-20110428", :vendor_cmockery
69
- dir :vendor, "oflops-0.03", :vendor_oflops
69
+ dir :vendor, "oflops-0.03.trema1", :vendor_oflops
70
70
  dir :vendor, "openflow-1.0.0", :vendor_openflow
71
71
  dir :vendor, "openflow.git", :vendor_openflow_git
72
- dir :vendor, "openvswitch-1.2.2", :vendor_openvswitch
72
+ dir :vendor, "openvswitch-1.2.2.trema1", :vendor_openvswitch
73
73
  dir :vendor, "phost", :vendor_phost
74
74
  dir :vendor, "ruby-ifconfig-1.2", :vendor_ruby_ifconfig
75
75
  file :cmockery, "include/google/cmockery.h"
@@ -17,7 +17,7 @@
17
17
 
18
18
 
19
19
  module Trema
20
- VERSION = "0.3.8"
20
+ VERSION = "0.3.9"
21
21
  end
22
22
 
23
23
 
data/vendor/.gitignore CHANGED
@@ -1,6 +1,6 @@
1
1
  /cmockery-20110428
2
- /oflops-0.03
2
+ /oflops-0.03.trema1
3
3
  /openflow-1.0.0
4
4
  /openflow.git
5
- /openvswitch-1.2.2
5
+ /openvswitch-1.2.2.trema1
6
6
  /phost
data/vendor/README.md CHANGED
@@ -18,3 +18,12 @@ of this OpenFlow controller platform, we disabled the functions. In addition,
18
18
  because there are some issues on OpenFlow messages that cbench (a performance
19
19
  measurement tool for OpenFlow controllers) sends, we fixed them. Any changes
20
20
  from the repository of oflops can be found in oflops_no_snmp+1.0.0.patch.
21
+
22
+ Notes on Open vSwitch (vendor/openvswitch)
23
+ ------------------------------------------
24
+
25
+ In the recent glibc, we need to link librt to use POSIX timer functions
26
+ such as "timer_create" or "timer_settime". To use openvswitch-1.2.2
27
+ on distributions with the recent glibc, we modified "configure" to
28
+ search librt and Open vSwitch tarball distributed with Trema contains
29
+ the fix. The change can be found in openvswitch-1.2.2_librt-check.diff.
Binary file
@@ -0,0 +1,21 @@
1
+ diff --git a/configure.ac b/configure.ac
2
+ index 99ed8f0..de43aae 100644
3
+ --- a/configure.ac
4
+ +++ b/configure.ac
5
+ @@ -13,7 +13,7 @@
6
+ # limitations under the License.
7
+
8
+ AC_PREREQ(2.64)
9
+ -AC_INIT(openvswitch, 1.2.2, ovs-bugs@openvswitch.org)
10
+ +AC_INIT(openvswitch, 1.2.2.trema1, ovs-bugs@openvswitch.org)
11
+ NX_BUILDNR
12
+ AC_CONFIG_SRCDIR([datapath/datapath.c])
13
+ AC_CONFIG_MACRO_DIR([m4])
14
+ @@ -41,6 +41,7 @@ AC_SYS_LARGEFILE
15
+
16
+ AC_SEARCH_LIBS([pow], [m])
17
+ AC_SEARCH_LIBS([clock_gettime], [rt])
18
+ +AC_SEARCH_LIBS([timer_create], [rt])
19
+
20
+ OVS_CHECK_COVERAGE
21
+ OVS_CHECK_NDEBUG
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trema
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 8
10
- version: 0.3.8
9
+ - 9
10
+ version: 0.3.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Yasuhito Takamiya
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: .
16
16
  cert_chain: []
17
17
 
18
- date: 2013-02-06 00:00:00 Z
18
+ date: 2013-02-07 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  prerelease: false
@@ -163,6 +163,7 @@ files:
163
163
  - features/trema_commands/kill.feature
164
164
  - features/trema_commands/killall.feature
165
165
  - features/trema_commands/port_down.feature
166
+ - features/trema_commands/port_up.feature
166
167
  - features/trema_commands/reset_stats.feature
167
168
  - features/trema_commands/run.feature
168
169
  - features/trema_commands/send_packets.feature
@@ -190,6 +191,7 @@ files:
190
191
  - ruby/trema/command/killall.rb
191
192
  - ruby/trema/command/netns.rb
192
193
  - ruby/trema/command/port_down.rb
194
+ - ruby/trema/command/port_up.rb
193
195
  - ruby/trema/command/reset_stats.rb
194
196
  - ruby/trema/command/ruby.rb
195
197
  - ruby/trema/command/run.rb
@@ -689,11 +691,12 @@ files:
689
691
  - vendor/.gitignore
690
692
  - vendor/README.md
691
693
  - vendor/cmockery-20110428.tar.gz
692
- - vendor/oflops-0.03.tar.gz
693
- - vendor/oflops_no_snmp+1.0.0.patch
694
+ - vendor/oflops-0.03.trema1.tar.gz
695
+ - vendor/oflops_no_snmp+1.0.0.diff
694
696
  - vendor/openflow-1.0.0.tar.gz
695
697
  - vendor/openflow.git.tar.gz
696
- - vendor/openvswitch-1.2.2.tar.gz
698
+ - vendor/openvswitch-1.2.2.trema1.tar.gz
699
+ - vendor/openvswitch-1.2.2_librt-check.diff
697
700
  - vendor/packet-openflow.diff
698
701
  - vendor/phost/doc/COPYING
699
702
  - vendor/phost/doc/README
Binary file
Binary file