trema 0.3.21 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: