trema 0.4.0 → 0.4.1

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.
data/ruby/trema/match.c CHANGED
@@ -321,7 +321,8 @@ match_nw( VALUE self, uint8_t which ) {
321
321
  masklen = ( match->wildcards & OFPFW_NW_DST_MASK ) >> OFPFW_NW_DST_SHIFT;
322
322
  }
323
323
  uint32_t prefixlen = masklen > 32 ? 0 : 32 - masklen;
324
- return rb_funcall( rb_eval_string( "Trema::IP" ), rb_intern( "new" ), 2, UINT2NUM( nw_addr ), UINT2NUM( prefixlen ) );
324
+ VALUE ipv4_addr = rb_funcall( rb_eval_string( "Pio::IPv4Address" ), rb_intern( "new" ), 1, UINT2NUM( nw_addr ) );
325
+ return rb_funcall( ipv4_addr, rb_intern( "mask" ), 1, UINT2NUM( prefixlen ) );;
325
326
  }
326
327
 
327
328
 
@@ -526,7 +527,7 @@ match_init( int argc, VALUE *argv, VALUE self ) {
526
527
 
527
528
  VALUE nw_src = rb_hash_aref( options, ID2SYM( rb_intern( "nw_src" ) ) );
528
529
  if ( nw_src != Qnil ) {
529
- VALUE nw_addr = rb_funcall( rb_eval_string( "Trema::IP" ), rb_intern( "new" ), 1, nw_src );
530
+ VALUE nw_addr = rb_funcall( rb_eval_string( "Pio::IPv4Address" ), rb_intern( "new" ), 1, nw_src );
530
531
  uint32_t prefixlen = ( uint32_t ) NUM2UINT( rb_funcall( nw_addr, rb_intern( "prefixlen" ), 0 ) );
531
532
  if ( prefixlen > 0 ) {
532
533
  match->nw_src = nw_addr_to_i( nw_addr );
@@ -537,7 +538,7 @@ match_init( int argc, VALUE *argv, VALUE self ) {
537
538
 
538
539
  VALUE nw_dst = rb_hash_aref( options, ID2SYM( rb_intern( "nw_dst" ) ) );
539
540
  if ( nw_dst != Qnil ) {
540
- VALUE nw_addr = rb_funcall( rb_eval_string( "Trema::IP" ), rb_intern( "new" ), 1, nw_dst );
541
+ VALUE nw_addr = rb_funcall( rb_eval_string( "Pio::IPv4Address" ), rb_intern( "new" ), 1, nw_dst );
541
542
  uint32_t prefixlen = ( uint32_t ) NUM2UINT( rb_funcall( nw_addr, rb_intern( "prefixlen" ), 0 ) );
542
543
  if ( prefixlen > 0 ) {
543
544
  match->nw_dst = nw_addr_to_i( nw_addr );
@@ -35,7 +35,7 @@ VALUE cPacketIn;
35
35
  #define PACKET_IN_RETURN_IP( packet_member ) \
36
36
  { \
37
37
  VALUE ret = ULONG2NUM( get_packet_in_info( self )->packet_member ); \
38
- return rb_funcall( rb_eval_string( "Trema::IP" ), rb_intern( "new" ), 1, ret ); \
38
+ return rb_funcall( rb_eval_string( "Pio::IPv4Address" ), rb_intern( "new" ), 1, ret ); \
39
39
  }
40
40
 
41
41
  #define PACKET_IN_RETURN_NUM( flag, func, packet_member ) \
@@ -391,8 +391,8 @@ packet_in_arp_sha( VALUE self ) {
391
391
  /*
392
392
  * The ARP source protocol address of a packet.
393
393
  *
394
- * @return [Trema::IP, nil]
395
- * the value of ARP source protocol address as a Trema::IP object or nil if
394
+ * @return [Pio::IPv4Address, nil]
395
+ * the value of ARP source protocol address as a Pio::IPv4Address object or nil if
396
396
  * packet is not an ARP.
397
397
  */
398
398
  static VALUE
@@ -427,8 +427,8 @@ packet_in_arp_tha( VALUE self ) {
427
427
  /*
428
428
  * The ARP target protocol address of a packet.
429
429
  *
430
- * @return [Trema::IP]
431
- * the value of ARP target protocol address as a Trema::IP object or nil if
430
+ * @return [Pio::IPv4Address]
431
+ * the value of ARP target protocol address as a Pio::IPv4Address object or nil if
432
432
  * packet is not an ARP.
433
433
  */
434
434
  static VALUE
@@ -522,8 +522,8 @@ packet_in_rarp_sha( VALUE self ) {
522
522
  /*
523
523
  * The RARP source protocol address of a packet.
524
524
  *
525
- * @return [Trema::IP, nil]
526
- * the value of RARP source protocol address as a Trema::IP object or nil if
525
+ * @return [Pio::IPv4Address, nil]
526
+ * the value of RARP source protocol address as a Pio::IPv4Address object or nil if
527
527
  * packet is not an RARP.
528
528
  */
529
529
  static VALUE
@@ -558,8 +558,8 @@ packet_in_rarp_tha( VALUE self ) {
558
558
  /*
559
559
  * The ARP target protocol address of a packet.
560
560
  *
561
- * @return [Trema::IP]
562
- * the value of RARP target protocol address as a Trema::IP object or nil if
561
+ * @return [Pio::IPv4Address]
562
+ * the value of RARP target protocol address as a Pio::IPv4Address object or nil if
563
563
  * packet is not an RARP.
564
564
  */
565
565
  static VALUE
@@ -691,8 +691,8 @@ packet_in_ipv4_checksum( VALUE self ) {
691
691
  /*
692
692
  * The IPv4 source IP address of a packet.
693
693
  *
694
- * @return [Trema::IP,nil]
695
- * the value of IPv4 source IP address as a Trema::IP object or nil if
694
+ * @return [Pio::IPv4Address,nil]
695
+ * the value of IPv4 source IP address as a Pio::IPv4Address object or nil if
696
696
  * packet is not an IPv4.
697
697
  */
698
698
  static VALUE
@@ -709,8 +709,8 @@ packet_in_ipv4_saddr( VALUE self ) {
709
709
  /*
710
710
  * The IPV4 destination IP address of a packet.
711
711
  *
712
- * @return [Trema::IP, nil]
713
- * the value of IPv4 destination IP address as a Trema::IP object or nil if
712
+ * @return [Pio::IPv4Address, nil]
713
+ * the value of IPv4 destination IP address as a Pio::IPv4Address object or nil if
714
714
  * packet is not an IPv4.
715
715
  */
716
716
  static VALUE
@@ -814,8 +814,8 @@ packet_in_icmpv4_seq( VALUE self ) {
814
814
  /*
815
815
  * The ICMPv4 redirect message gateway IP address.
816
816
  *
817
- * @return [Trema::IP, nil]
818
- * the value of ICMPv4 redirect message IP gateway address as a Trema::IP
817
+ * @return [Pio::IPv4Address, nil]
818
+ * the value of ICMPv4 redirect message IP gateway address as a Pio::IPv4Address
819
819
  * object or nil if packet is not ICMPv4.
820
820
  */
821
821
  static VALUE
@@ -1009,8 +1009,8 @@ packet_in_igmp_type( VALUE self ) {
1009
1009
  /*
1010
1010
  * The IGMP group address.
1011
1011
  *
1012
- * @return [Trema::IP, nil]
1013
- * the value of IGMP IP group address as a Trema::IP object
1012
+ * @return [Pio::IPv4Address, nil]
1013
+ * the value of IGMP IP group address as a Pio::IPv4Address object
1014
1014
  * or nil if packet is not IGMP.
1015
1015
  */
1016
1016
  static VALUE
@@ -1228,7 +1228,8 @@ packet_in_udp_checksum( VALUE self ) {
1228
1228
  */
1229
1229
  void
1230
1230
  Init_packet_in() {
1231
- rb_require( "trema/ip" );
1231
+ rb_require( "rubygems" );
1232
+ rb_require( "pio" );
1232
1233
  rb_require( "trema/mac" );
1233
1234
  mTrema = rb_eval_string( "Trema" );
1234
1235
  cPacketIn = rb_define_class_under( mTrema, "PacketIn", rb_cObject );
@@ -225,7 +225,7 @@ get_action( const struct ofp_action_header *ah ) {
225
225
  {
226
226
  const struct ofp_action_nw_addr *action_nw_addr = ( const struct ofp_action_nw_addr * ) ah;
227
227
 
228
- VALUE ip_address = rb_funcall( rb_eval_string( "Trema::IP " ), rb_intern( "new" ), 1, UINT2NUM( action_nw_addr->nw_addr ) );
228
+ VALUE ip_address = rb_funcall( rb_eval_string( "Pio::IPv4Address " ), rb_intern( "new" ), 1, UINT2NUM( action_nw_addr->nw_addr ) );
229
229
  if ( ah->type == OFPAT_SET_NW_SRC ) {
230
230
  action = rb_funcall( rb_eval_string( "Trema::SetIpSrcAddr" ), rb_intern( "new" ), 1, rb_funcall( ip_address, rb_intern( "to_s" ), 0 ) );
231
231
  }
@@ -17,7 +17,7 @@
17
17
 
18
18
 
19
19
  module Trema
20
- VERSION = "0.4.0"
20
+ VERSION = "0.4.1"
21
21
  end
22
22
 
23
23
 
@@ -17,6 +17,7 @@
17
17
 
18
18
 
19
19
  require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
+ require "pio"
20
21
  require "trema"
21
22
 
22
23
 
@@ -112,8 +113,8 @@ describe Trema::FlowRemoved, ".new( VALID OPTIONS )" do
112
113
  expect( message.match.dl_vlan_pcp ).to eq( 0 )
113
114
  expect( message.match.nw_tos ).to eq( 0 )
114
115
  expect( message.match.nw_proto ).to eq( 17 )
115
- expect( Trema::IP.new( message.match.nw_src ).to_s ).to eq( "192.168.0.1" )
116
- expect( Trema::IP.new( message.match.nw_dst ).to_s ).to eq( "192.168.0.2" )
116
+ expect( Pio::IPv4Address.new( message.match.nw_src ).to_s ).to eq( "192.168.0.1" )
117
+ expect( Pio::IPv4Address.new( message.match.nw_dst ).to_s ).to eq( "192.168.0.2" )
117
118
  expect( message.match.tp_src ).to eq( 1 )
118
119
  expect( message.match.tp_dst ).to eq( 1 )
119
120
  expect( message.cookie ).to eq( 123456789 )
@@ -86,9 +86,9 @@ describe Trema::PacketIn do
86
86
  expect( message.eth_type ).to eq( 0x0800 )
87
87
  expect( message.ipv4? ).to be_true
88
88
  expect( message.ipv4_version ).to eq( 4 )
89
- expect( message.ipv4_saddr ).to be_instance_of( Trema::IP )
89
+ expect( message.ipv4_saddr ).to be_instance_of( Pio::IPv4Address )
90
90
  expect( message.ipv4_saddr.to_s ).to eq( "192.168.1.1" )
91
- expect( message.ipv4_daddr ).to be_instance_of( Trema::IP )
91
+ expect( message.ipv4_daddr ).to be_instance_of( Pio::IPv4Address )
92
92
  expect( message.ipv4_daddr.to_s ).to eq( "192.168.1.2" )
93
93
  end
94
94
  send_and_wait
data/trema.gemspec CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do | gem |
29
29
  gem.add_dependency "bundler"
30
30
  gem.add_dependency "gli", "~> 2.8.0"
31
31
  gem.add_dependency "paper_house", "~> 0.4.0"
32
+ gem.add_dependency "pio", "~> 0.2.4"
32
33
  gem.add_dependency "rake", "~> 10.1.0"
33
34
  gem.add_dependency "rdoc", "~> 4.0.1"
34
35
  end
metadata CHANGED
@@ -1,97 +1,127 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: trema
3
- version: !ruby/object:Gem::Version
4
- version: 0.4.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 13
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 1
10
+ version: 0.4.1
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Yasuhito Takamiya
8
14
  autorequire:
9
15
  bindir: .
10
16
  cert_chain: []
11
- date: 2013-09-25 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-09-27 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"
14
30
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
31
  prerelease: false
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:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 2.8.0
34
32
  type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
33
+ requirement: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ version_requirements: &id002 !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
38
  - - ~>
39
- - !ruby/object:Gem::Version
39
+ - !ruby/object:Gem::Version
40
+ hash: 47
41
+ segments:
42
+ - 2
43
+ - 8
44
+ - 0
40
45
  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
48
- type: :runtime
46
+ name: gli
49
47
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
48
+ type: :runtime
49
+ requirement: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
52
54
  - - ~>
53
- - !ruby/object:Gem::Version
55
+ - !ruby/object:Gem::Version
56
+ hash: 15
57
+ segments:
58
+ - 0
59
+ - 4
60
+ - 0
54
61
  version: 0.4.0
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 10.1.0
62
+ name: paper_house
63
+ prerelease: false
62
64
  type: :runtime
65
+ requirement: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ hash: 31
73
+ segments:
74
+ - 0
75
+ - 2
76
+ - 4
77
+ version: 0.2.4
78
+ name: pio
63
79
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
80
+ type: :runtime
81
+ requirement: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ version_requirements: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
66
86
  - - ~>
67
- - !ruby/object:Gem::Version
87
+ - !ruby/object:Gem::Version
88
+ hash: 75
89
+ segments:
90
+ - 10
91
+ - 1
92
+ - 0
68
93
  version: 10.1.0
69
- - !ruby/object:Gem::Dependency
70
- name: rdoc
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- version: 4.0.1
76
- type: :runtime
94
+ name: rake
77
95
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
96
+ type: :runtime
97
+ requirement: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ version_requirements: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
80
102
  - - ~>
81
- - !ruby/object:Gem::Version
103
+ - !ruby/object:Gem::Version
104
+ hash: 61
105
+ segments:
106
+ - 4
107
+ - 0
108
+ - 1
82
109
  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:
110
+ name: rdoc
111
+ prerelease: false
112
+ type: :runtime
113
+ requirement: *id006
114
+ description: Trema is a full-stack, easy-to-use framework for developing OpenFlow controllers in Ruby and C.
115
+ email:
86
116
  - yasuhito@gmail.com
87
- executables:
117
+ executables:
88
118
  - trema
89
119
  - trema-config
90
- extensions:
120
+ extensions:
91
121
  - Rakefile
92
- extra_rdoc_files:
122
+ extra_rdoc_files:
93
123
  - README.md
94
- files:
124
+ files:
95
125
  - .gitignore
96
126
  - .ruby-version
97
127
  - .travis.yml
@@ -242,7 +272,6 @@ files:
242
272
  - ruby/trema/hello.c
243
273
  - ruby/trema/hello.h
244
274
  - ruby/trema/host.rb
245
- - ruby/trema/ip.rb
246
275
  - ruby/trema/link.rb
247
276
  - ruby/trema/list-switches-reply.c
248
277
  - ruby/trema/list-switches-reply.h
@@ -376,7 +405,6 @@ files:
376
405
  - spec/trema/hardware-switch_spec.rb
377
406
  - spec/trema/hello_spec.rb
378
407
  - spec/trema/host_spec.rb
379
- - spec/trema/ip_spec.rb
380
408
  - spec/trema/link_spec.rb
381
409
  - spec/trema/list-switches-reply_spec.rb
382
410
  - spec/trema/mac_spec.rb
@@ -785,28 +813,40 @@ files:
785
813
  - ./trema
786
814
  - ./trema-config
787
815
  homepage: http://github.com/trema/trema
788
- licenses:
816
+ licenses:
789
817
  - GPL2
790
- metadata: {}
791
818
  post_install_message:
792
819
  rdoc_options: []
793
- require_paths:
820
+
821
+ require_paths:
794
822
  - ruby
795
- required_ruby_version: !ruby/object:Gem::Requirement
796
- requirements:
797
- - - '>='
798
- - !ruby/object:Gem::Version
823
+ required_ruby_version: !ruby/object:Gem::Requirement
824
+ none: false
825
+ requirements:
826
+ - - ">="
827
+ - !ruby/object:Gem::Version
828
+ hash: 57
829
+ segments:
830
+ - 1
831
+ - 8
832
+ - 7
799
833
  version: 1.8.7
800
- required_rubygems_version: !ruby/object:Gem::Requirement
801
- requirements:
802
- - - '>='
803
- - !ruby/object:Gem::Version
804
- version: '0'
834
+ required_rubygems_version: !ruby/object:Gem::Requirement
835
+ none: false
836
+ requirements:
837
+ - - ">="
838
+ - !ruby/object:Gem::Version
839
+ hash: 3
840
+ segments:
841
+ - 0
842
+ version: "0"
805
843
  requirements: []
844
+
806
845
  rubyforge_project:
807
- rubygems_version: 2.0.3
846
+ rubygems_version: 1.8.25
808
847
  signing_key:
809
- specification_version: 4
848
+ specification_version: 3
810
849
  summary: Full-stack OpenFlow framework.
811
850
  test_files: []
851
+
812
852
  has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: ef20c00d0e61a93ddf449432c366f78b620ac54c
4
- data.tar.gz: c516614e8c862044a82765a2faee850cbdccb30a
5
- SHA512:
6
- metadata.gz: 1169678d2c9832448bbdab636a8323784873ca7f89ba3354ea8552f905c5e78bc2a77e8fd9a09e5ed3fddfc720166a530df3b47ae1282e54fe2b551196d63c47
7
- data.tar.gz: a357cf352ea0004e22575e50e8060925bd9892923e9a8338aed04c5c42b25da402e4cb5cfff65409dc9a9b370b8373422dbd3743ba65d56fe6842a3c7be86a45
data/ruby/trema/ip.rb DELETED
@@ -1,111 +0,0 @@
1
- #
2
- # Copyright (C) 2008-2013 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
- module Trema
20
- #
21
- # A wrapper class to IPAddr
22
- #
23
- class IP
24
- require "ipaddr"
25
-
26
-
27
- #
28
- # @return [IPAddr] value object instance of proxied IPAddr.
29
- #
30
- attr_reader :value
31
-
32
-
33
- #
34
- # Creates a {IP} instance object as a proxy to IPAddr class.
35
- #
36
- # @overload initialize(addr)
37
- #
38
- # @param [String, Number] addr
39
- # an IPv4 address specified either as a String or Number.
40
- #
41
- # @param [Number] prefixlen
42
- # masking IPv4 address with given prefixlen.
43
- #
44
- # @raise [ArgumentError] invalid address if supplied argument is invalid
45
- # IPv4 address.
46
- #
47
- # @return [IP] self
48
- # a proxy to IPAddr.
49
- #
50
- def initialize addr, prefixlen = 32
51
- if !addr.kind_of? String
52
- @value = IPAddr.new( addr, Socket::AF_INET )
53
- else
54
- @value = IPAddr.new( addr )
55
- end
56
- if prefixlen < 32
57
- @value = @value.mask( prefixlen )
58
- end
59
- end
60
-
61
-
62
- #
63
- # @return [ Number ] prefixlen of IPv4 address.
64
- #
65
- def prefixlen
66
- range = @value.to_range
67
- mask = range.first.to_i ^ range.last.to_i
68
- masklen = 0
69
- while mask != 0 do
70
- mask = mask >> 1
71
- masklen += 1
72
- end
73
- return 32 - masklen
74
- end
75
-
76
-
77
- #
78
- # @return [String] the IPv4 address in its text representation.
79
- #
80
- def to_s
81
- @value.to_s
82
- end
83
-
84
-
85
- #
86
- # @return [Number] the IPv4 address in its numeric representation.
87
- #
88
- def to_i
89
- @value.to_i
90
- end
91
-
92
-
93
- #
94
- # @return [Array]
95
- # an array of decimal numbers converted from IP address.
96
- #
97
- def to_a
98
- to_s.split( "." ).collect do | each |
99
- each.to_i
100
- end
101
- end
102
- alias :to_array :to_a
103
- end
104
- end
105
-
106
-
107
- ### Local variables:
108
- ### mode: Ruby
109
- ### coding: utf-8-unix
110
- ### indent-tabs-mode: nil
111
- ### End:
@@ -1,54 +0,0 @@
1
- #
2
- # Copyright (C) 2008-2013 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 File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/ip"
21
-
22
-
23
- module Trema
24
- describe IP do
25
- context "when creating" do
26
- subject { IP.new( ip_address, prefixlen ) }
27
-
28
- context %{when "192.168.1.1/32"} do
29
- let( :ip_address ) { "192.168.1.1" }
30
- let( :prefixlen ) { 32 }
31
-
32
- its( :to_s ) { should == "192.168.1.1" }
33
- its( :to_i ) { should == 3232235777 }
34
- its( :to_a ) { should == [ 0xc0, 0xa8, 0x01, 0x01 ] }
35
- end
36
-
37
- context %{when "10.1.1.1/8"} do
38
- let( :ip_address ) { "10.1.1.1" }
39
- let( :prefixlen ) { 8 }
40
-
41
- its( :to_s ) { should == "10.0.0.0" }
42
- its( :to_i ) { should == 10 * 256 * 256 * 256 }
43
- its( :to_a ) { should == [ 0x0a, 0x00, 0x00, 0x00 ] }
44
- end
45
- end
46
- end
47
- end
48
-
49
-
50
- ### Local variables:
51
- ### mode: Ruby
52
- ### coding: utf-8-unix
53
- ### indent-tabs-mode: nil
54
- ### End: