trema 0.4.0 → 0.4.1

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