trema 0.3.21 → 0.4.0
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 +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:
|