trema 0.3.21 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.ruby-version +1 -1
- data/Gemfile +4 -4
- data/README.md +6 -9
- data/Rakefile +508 -24
- data/build.rb +4 -9
- data/cruise.rb +3 -3
- data/features/switch_event/add_forward_entry.feature +1 -0
- data/features/switch_event/delete_forward_entry.feature +1 -0
- data/features/switch_event/dump_forward_entries.feature +1 -0
- data/features/switch_event/set_forward_entries.feature +1 -0
- data/ruby/trema/compat.h +36 -0
- data/ruby/trema/controller.c +23 -7
- data/ruby/trema/default-logger.c +1 -1
- data/ruby/trema/features-reply.c +1 -1
- data/ruby/trema/switch-event.c +11 -10
- data/ruby/trema/switch.c +11 -11
- data/ruby/trema/version.rb +1 -1
- data/spec/support/matchers/constant.rb +25 -0
- data/spec/trema/barrier-request_spec.rb +1 -0
- data/spec/trema/controller_spec.rb +11 -28
- data/spec/trema/error_spec.rb +0 -46
- data/spec/trema/packet-out_spec.rb +1 -1
- data/spec/trema/port-status_spec.rb +8 -5
- data/spec/trema_spec.rb +64 -24
- data/src/lib/checks.h +2 -2
- data/src/lib/messenger.c +3 -3
- data/src/lib/openflow_message.c +8 -1
- data/src/lib/openflow_message.h +1 -0
- data/src/lib/openflow_switch_interface.c +1 -1
- data/src/switch_manager/secure_channel_listener.c +1 -1
- data/src/switch_manager/secure_channel_receiver.c +1 -1
- data/trema.gemspec +3 -3
- data/unittests/lib/daemon_test.c +1 -1
- data/unittests/lib/hash_table_test.c +1 -1
- metadata +87 -113
- data/.mono.rant +0 -4107
- data/Rantfile +0 -739
data/src/lib/openflow_message.c
CHANGED
@@ -1658,6 +1658,13 @@ append_action_vendor( openflow_actions *actions, const uint32_t vendor, const bu
|
|
1658
1658
|
return ret;
|
1659
1659
|
}
|
1660
1660
|
|
1661
|
+
// A valid remote version is one of the defined wire protocol numbers for a
|
1662
|
+
// HELLO message and strictly OpenFlow 1.0 for any other message.
|
1663
|
+
bool
|
1664
|
+
valid_message_version( const uint8_t type, const uint8_t version ) {
|
1665
|
+
return type != OFPT_HELLO ? version == OFP_VERSION :
|
1666
|
+
version >= OFP_VERSION && version <= 0x04; // 1.0~1.3
|
1667
|
+
}
|
1661
1668
|
|
1662
1669
|
static int
|
1663
1670
|
validate_header( const buffer *message, const uint8_t type,
|
@@ -1670,7 +1677,7 @@ validate_header( const buffer *message, const uint8_t type,
|
|
1670
1677
|
}
|
1671
1678
|
|
1672
1679
|
header = ( struct ofp_header * ) message->data;
|
1673
|
-
if ( header->version
|
1680
|
+
if ( ! valid_message_version( type, header->version ) ) {
|
1674
1681
|
return ERROR_UNSUPPORTED_VERSION;
|
1675
1682
|
}
|
1676
1683
|
if ( header->type > OFPT_QUEUE_GET_CONFIG_REPLY ) {
|
data/src/lib/openflow_message.h
CHANGED
@@ -268,6 +268,7 @@ int validate_action_enqueue( const struct ofp_action_enqueue *action );
|
|
268
268
|
int validate_action_vendor( const struct ofp_action_vendor_header *action );
|
269
269
|
int validate_openflow_message( const buffer *message );
|
270
270
|
bool valid_openflow_message( const buffer *message );
|
271
|
+
bool valid_message_version( const uint8_t type, const uint8_t version );
|
271
272
|
|
272
273
|
// Utility functions
|
273
274
|
bool get_error_type_and_code( const uint8_t type, const int error_no,
|
@@ -65,7 +65,7 @@ recv_from_secure_channel( struct switch_info *sw_info ) {
|
|
65
65
|
size_t read_total = 0;
|
66
66
|
while ( sw_info->fragment_buf->length >= sizeof( struct ofp_header ) ) {
|
67
67
|
struct ofp_header *header = sw_info->fragment_buf->data;
|
68
|
-
if ( header->version
|
68
|
+
if ( ! valid_message_version( header->type, header->version ) ) {
|
69
69
|
error( "Receive error: invalid version (version %d)", header->version );
|
70
70
|
ofpmsg_send_error_msg( sw_info,
|
71
71
|
OFPET_BAD_REQUEST, OFPBRC_BAD_VERSION, sw_info->fragment_buf );
|
data/trema.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do | gem |
|
|
8
8
|
gem.summary = "Full-stack OpenFlow framework."
|
9
9
|
gem.description = "Trema is a full-stack, easy-to-use framework for developing OpenFlow controllers in Ruby and C."
|
10
10
|
|
11
|
-
gem.required_ruby_version = "
|
11
|
+
gem.required_ruby_version = ">= 1.8.7"
|
12
12
|
|
13
13
|
gem.license = "GPL2"
|
14
14
|
|
@@ -27,8 +27,8 @@ Gem::Specification.new do | gem |
|
|
27
27
|
gem.test_files = `git ls-files -- {spec,features}/*`.split( "\n" )
|
28
28
|
|
29
29
|
gem.add_dependency "bundler"
|
30
|
-
gem.add_dependency "gli", "~> 2.
|
31
|
-
gem.add_dependency "
|
30
|
+
gem.add_dependency "gli", "~> 2.8.0"
|
31
|
+
gem.add_dependency "paper_house", "~> 0.4.0"
|
32
32
|
gem.add_dependency "rake", "~> 10.1.0"
|
33
33
|
gem.add_dependency "rdoc", "~> 4.0.1"
|
34
34
|
end
|
data/unittests/lib/daemon_test.c
CHANGED
@@ -44,7 +44,7 @@ mock_die( char *format, ... ) {
|
|
44
44
|
va_end( args );
|
45
45
|
|
46
46
|
check_expected( message );
|
47
|
-
mock_assert( false, "
|
47
|
+
mock_assert( false, "UNREACHABLE_CODE", __FILE__, __LINE__ ); } // This hoaxes gcov.
|
48
48
|
|
49
49
|
|
50
50
|
int
|
metadata
CHANGED
@@ -1,113 +1,98 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: trema
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 21
|
10
|
-
version: 0.3.21
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Yasuhito Takamiya
|
14
8
|
autorequire:
|
15
9
|
bindir: .
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
-
none: false
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
hash: 3
|
27
|
-
segments:
|
28
|
-
- 0
|
29
|
-
version: "0"
|
11
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
30
14
|
name: bundler
|
31
|
-
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
32
20
|
type: :runtime
|
33
|
-
requirement: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
hash: 19
|
41
|
-
segments:
|
42
|
-
- 2
|
43
|
-
- 7
|
44
|
-
- 0
|
45
|
-
version: 2.7.0
|
46
|
-
name: gli
|
47
21
|
prerelease: false
|
48
|
-
|
49
|
-
|
50
|
-
-
|
51
|
-
|
52
|
-
|
53
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: gli
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
54
31
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
|
58
|
-
- 0
|
59
|
-
- 3
|
60
|
-
- 1
|
61
|
-
version: 0.3.1
|
62
|
-
name: paper-house
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.8.0
|
34
|
+
type: :runtime
|
63
35
|
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.8.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: paper_house
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.4.0
|
64
48
|
type: :runtime
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
none: false
|
69
|
-
requirements:
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
70
52
|
- - ~>
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
|
74
|
-
- 10
|
75
|
-
- 1
|
76
|
-
- 0
|
77
|
-
version: 10.1.0
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.4.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
78
56
|
name: rake
|
79
|
-
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 10.1.0
|
80
62
|
type: :runtime
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
none: false
|
85
|
-
requirements:
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
86
66
|
- - ~>
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
89
|
-
|
90
|
-
- 4
|
91
|
-
- 0
|
92
|
-
- 1
|
93
|
-
version: 4.0.1
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 10.1.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
94
70
|
name: rdoc
|
95
|
-
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 4.0.1
|
96
76
|
type: :runtime
|
97
|
-
|
98
|
-
|
99
|
-
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 4.0.1
|
83
|
+
description: Trema is a full-stack, easy-to-use framework for developing OpenFlow
|
84
|
+
controllers in Ruby and C.
|
85
|
+
email:
|
100
86
|
- yasuhito@gmail.com
|
101
|
-
executables:
|
87
|
+
executables:
|
102
88
|
- trema
|
103
89
|
- trema-config
|
104
|
-
extensions:
|
90
|
+
extensions:
|
105
91
|
- Rakefile
|
106
|
-
extra_rdoc_files:
|
92
|
+
extra_rdoc_files:
|
107
93
|
- README.md
|
108
|
-
files:
|
94
|
+
files:
|
109
95
|
- .gitignore
|
110
|
-
- .mono.rant
|
111
96
|
- .ruby-version
|
112
97
|
- .travis.yml
|
113
98
|
- .yardopts
|
@@ -115,7 +100,6 @@ files:
|
|
115
100
|
- Gemfile
|
116
101
|
- README.md
|
117
102
|
- Rakefile
|
118
|
-
- Rantfile
|
119
103
|
- bin/quality
|
120
104
|
- bin/trema
|
121
105
|
- bin/trema-config
|
@@ -203,6 +187,7 @@ files:
|
|
203
187
|
- ruby/trema/command/show_stats.rb
|
204
188
|
- ruby/trema/command/up.rb
|
205
189
|
- ruby/trema/command/version.rb
|
190
|
+
- ruby/trema/compat.h
|
206
191
|
- ruby/trema/controller.c
|
207
192
|
- ruby/trema/controller.h
|
208
193
|
- ruby/trema/controller.rb
|
@@ -360,6 +345,7 @@ files:
|
|
360
345
|
- spec/spec_helper.rb
|
361
346
|
- spec/support/action.rb
|
362
347
|
- spec/support/mandatory-option.rb
|
348
|
+
- spec/support/matchers/constant.rb
|
363
349
|
- spec/support/openflow-message.rb
|
364
350
|
- spec/support/port-status.rb
|
365
351
|
- spec/trema/app_spec.rb
|
@@ -799,40 +785,28 @@ files:
|
|
799
785
|
- ./trema
|
800
786
|
- ./trema-config
|
801
787
|
homepage: http://github.com/trema/trema
|
802
|
-
licenses:
|
788
|
+
licenses:
|
803
789
|
- GPL2
|
790
|
+
metadata: {}
|
804
791
|
post_install_message:
|
805
792
|
rdoc_options: []
|
806
|
-
|
807
|
-
require_paths:
|
793
|
+
require_paths:
|
808
794
|
- ruby
|
809
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
- !ruby/object:Gem::Version
|
814
|
-
hash: 57
|
815
|
-
segments:
|
816
|
-
- 1
|
817
|
-
- 8
|
818
|
-
- 7
|
795
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
796
|
+
requirements:
|
797
|
+
- - '>='
|
798
|
+
- !ruby/object:Gem::Version
|
819
799
|
version: 1.8.7
|
820
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
hash: 3
|
826
|
-
segments:
|
827
|
-
- 0
|
828
|
-
version: "0"
|
800
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
801
|
+
requirements:
|
802
|
+
- - '>='
|
803
|
+
- !ruby/object:Gem::Version
|
804
|
+
version: '0'
|
829
805
|
requirements: []
|
830
|
-
|
831
806
|
rubyforge_project:
|
832
|
-
rubygems_version:
|
807
|
+
rubygems_version: 2.0.3
|
833
808
|
signing_key:
|
834
|
-
specification_version:
|
809
|
+
specification_version: 4
|
835
810
|
summary: Full-stack OpenFlow framework.
|
836
811
|
test_files: []
|
837
|
-
|
838
812
|
has_rdoc:
|