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.
@@ -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 != OFP_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 ) {
@@ -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,
@@ -146,7 +146,7 @@ static void
146
146
  init_context() {
147
147
  assert( contexts == NULL );
148
148
 
149
- contexts = create_hash_with_size( compare_context, hash_context, 16 );
149
+ contexts = create_hash_with_size( compare_context, hash_context, 128 );
150
150
  }
151
151
 
152
152
 
@@ -279,7 +279,7 @@ secure_channel_accept( int fd, void *data ) {
279
279
 
280
280
  free_switch_daemon_args( argv );
281
281
 
282
- UNREACHABLE();
282
+ UNREACHABLE_CODE();
283
283
  }
284
284
  else {
285
285
  /* parent */
@@ -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 != OFP_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 = "~> 1.8.7"
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.7.0"
31
- gem.add_dependency "paper-house", "~> 0.3.1"
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
@@ -44,7 +44,7 @@ mock_die( char *format, ... ) {
44
44
  va_end( args );
45
45
 
46
46
  check_expected( message );
47
- mock_assert( false, "UNREACHABLE", __FILE__, __LINE__ ); } // This hoaxes gcov.
47
+ mock_assert( false, "UNREACHABLE_CODE", __FILE__, __LINE__ ); } // This hoaxes gcov.
48
48
 
49
49
 
50
50
  int
@@ -240,7 +240,7 @@ test_iterate_empty_hash() {
240
240
  init_hash_iterator( table, &iter );
241
241
 
242
242
  while ( iterate_hash_next( &iter ) != NULL ) {
243
- UNREACHABLE();
243
+ UNREACHABLE_CODE();
244
244
  }
245
245
 
246
246
  delete_hash( table );
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
- hash: 57
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
- date: 2013-09-05 00:00:00 Z
19
- dependencies:
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
- prerelease: false
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
- type: :runtime
49
- requirement: *id002
50
- - !ruby/object:Gem::Dependency
51
- version_requirements: &id003 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
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
- hash: 17
57
- segments:
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
- requirement: *id003
66
- - !ruby/object:Gem::Dependency
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
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
- hash: 75
73
- segments:
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
- prerelease: false
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 10.1.0
80
62
  type: :runtime
81
- requirement: *id004
82
- - !ruby/object:Gem::Dependency
83
- version_requirements: &id005 !ruby/object:Gem::Requirement
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
- hash: 61
89
- segments:
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
- prerelease: false
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 4.0.1
96
76
  type: :runtime
97
- requirement: *id005
98
- description: Trema is a full-stack, easy-to-use framework for developing OpenFlow controllers in Ruby and C.
99
- email:
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
- none: false
811
- requirements:
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
- none: false
822
- requirements:
823
- - - ">="
824
- - !ruby/object:Gem::Version
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: 1.8.25
807
+ rubygems_version: 2.0.3
833
808
  signing_key:
834
- specification_version: 3
809
+ specification_version: 4
835
810
  summary: Full-stack OpenFlow framework.
836
811
  test_files: []
837
-
838
812
  has_rdoc: