bgp4r 0.0.15 → 0.0.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -65,6 +65,14 @@ class Common_Test < Test::Unit::TestCase
65
65
  assert_equal('10.16.0.0/12', ip3 ^ 1)
66
66
  assert_equal('10.32.0.0/12', ip3 ^ 2)
67
67
  end
68
+ def test_ipaddr_v6_arithmetic
69
+ ip1 = IPAddr.new('2014:aa:bb:cc::1/126')
70
+ assert_equal('2014:aa:bb:cc::4/126', ip1 ^ 1)
71
+ assert_equal('2014:aa:bb:cc::8/126', ip1 ^ 2)
72
+ assert_equal('2014:aa:bb:cc::c/126', ip1 ^ 3)
73
+ assert_equal('2014:aa:bb:cc::10/126', ip1 ^ 4)
74
+ assert_equal('2014:aa:bb:cc::14/126', ip1 ^ 5)
75
+ end
68
76
  def test_string_pack
69
77
  sbin = ['00'].pack('H*')
70
78
  assert_equal '0x0000: 00', sbin.hexlify.join
@@ -342,7 +342,7 @@ class Update_Test < Test::Unit::TestCase
342
342
  }
343
343
  assert_equal(h, upd.to_hash)
344
344
  assert_equal(BGP::Route_target, upd.path_attribute.extended_communities.route_target.class)
345
- assert_equal(BGP::Route_target, upd.path_attribute.extended_communities.route_target.to_s)
345
+ assert_equal("Route target: 4:1", upd.path_attribute.extended_communities.route_target.to_s)
346
346
  assert_equal(128, upd.path_attribute.mp_reach.safi)
347
347
  assert_equal('Label Stack=16000 (bottom) RD=19:17, ID=1, IPv4=10.1.1.0/24', upd.path_attribute.mp_reach.nlris[0].to_s)
348
348
  end
@@ -456,9 +456,16 @@ class Update_Test < Test::Unit::TestCase
456
456
  :next_hop=>"187.121.193.33"
457
457
  }
458
458
  }
459
+
460
+ npfx = h[:nlris].size
461
+ assert_equal(76, npfx)
462
+
459
463
  u = Update.new h
464
+ assert_equal(npfx, u.nlri.size)
465
+ assert_equal(:igp, u.path_attribute.origin.to_sym)
466
+ assert_equal('187.121.193.33', u.path_attribute.next_hop.next_hop)
460
467
  assert_equal(h, u.to_hash)
461
-
468
+
462
469
  # s = "ffffffffffffffffffffffffffffffff016c02000000254001010040021002076e81cf8b415f0ddd266526652665400304bb79c121c008046e81ffdc123b5880123b58c0123b5900123b59c0123b5a00123b5a40123b5a80123b5ac0123b5bc0123b5d80123b5dc0123b5e00123b5e40123b5e80123b5ec0123b5f00123b5f80123b6080123b60c0123b6180123b61c0123b62c0123b6300123b63401275c5001275c5401275c5801275c6801275c6c01275c7401275c7801275c7c01275c8001275c8401275c9001275c9401275cac01275cb001275cb801275cbc01275cd001275cd401275cdc01275ce801275cec01275cf001275cf801275d1c01275d2001275d2401275d2801275d2c01275d4001275d4401275d6001275d6801275d6c01275da001275ef001275ef401275ef801275efc01275f1001275f1401275f1801275f1c01275f2001275f2401275f2801275f2c012d2d40012d2d44012d2d48012d2d4c012daf80012daf880"
463
470
  # assert_equal(s, u.to_shex)
464
471
  end
@@ -23,6 +23,7 @@
23
23
  require "test/unit"
24
24
  require 'bgp4r'
25
25
  require 'test/helpers/server'
26
+ require 'timeout'
26
27
  include BGP
27
28
  include BGP::OPT_PARM::CAP
28
29
  include BGP::TestHelpers
@@ -32,17 +33,22 @@ class TestBgpNeighbor < Test::Unit::TestCase
32
33
  include BGP
33
34
  include BGP::OPT_PARM::CAP
34
35
  include BGP::TestHelpers
36
+ def setup
37
+ # Don't work with jruby: skip
38
+ skip if RUBY_PLATFORM=='java'
39
+ super
40
+ end
35
41
  def teardown
36
42
  stop_server
37
43
  end
38
44
  def test_open_msg
39
45
  neighbor = Neighbor.new \
40
- :version=> 4,
41
- :my_as=> 100,
42
- :remote_addr => '192.168.1.200',
43
- :local_addr => '192.168.1.5',
44
- :id=> '1.1.1.1',
45
- :holdtime=> 20
46
+ :version=> 4,
47
+ :my_as=> 100,
48
+ :remote_addr => '192.168.1.200',
49
+ :local_addr => '192.168.1.5',
50
+ :id=> '1.1.1.1',
51
+ :holdtime=> 20
46
52
  neighbor.capability Mbgp.ipv4_unicast
47
53
  neighbor.capability Mbgp.ipv4_multicast
48
54
  neighbor.capability Route_refresh.new
@@ -56,100 +62,136 @@ class TestBgpNeighbor < Test::Unit::TestCase
56
62
  end
57
63
  def test_neighbor_state_methods
58
64
  neighbor = Neighbor.new \
59
- :version=> 4,
60
- :my_as=> 100,
61
- :remote_addr => '192.168.1.200',
62
- :local_addr => '192.168.1.5',
63
- :id=> '1.1.1.1',
64
- :holdtime=> 20
65
+ :version=> 4,
66
+ :my_as=> 100,
67
+ :remote_addr => '192.168.1.200',
68
+ :local_addr => '192.168.1.5',
69
+ :id=> '1.1.1.1',
70
+ :holdtime=> 20
65
71
  assert neighbor.is_idle?
66
72
  assert ! neighbor.is_established?
67
73
  assert ! neighbor.is_openrecv?
68
74
  assert ! neighbor.is_openconfirm?
69
75
  end
70
76
  def test_start
71
- start_server(3456)
72
- @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
73
- @c.start :port=> 3456
74
- assert_equal('Established', @c.state)
75
- assert_equal('Established', @s.state)
77
+ status = Timeout::timeout(4) {
78
+ start_server(3456)
79
+ @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
80
+ @c.start :port=> 3456
81
+ assert_equal('Established', @c.state)
82
+ assert_equal('Established', @s.state)
83
+ }
84
+ rescue Timeout::Error
85
+ assert false, "Timeout"
76
86
  end
77
87
  def test_start_no_blocking
78
- start_server(3333)
79
- @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
80
- @c.start :port=> 3333, :no_blocking=>true
81
- assert_equal('OpenSent', @c.state)
82
- assert_match(/(Active|OpenSent)/, @s.state)
88
+ status = Timeout::timeout(4) {
89
+ start_server(3333)
90
+ @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
91
+ @c.start :port=> 3333, :no_blocking=>true
92
+ assert_equal('OpenSent', @c.state)
93
+ }
94
+ rescue Timeout::Error
95
+ assert false, "Timeout"
96
+ end
97
+ def test_start_blocking
98
+ status = Timeout::timeout(4) {
99
+ start_server(3333)
100
+ @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
101
+ @c.start :port=> 3333, :no_blocking=>false
102
+ assert_equal('Established', @c.state)
103
+ assert_match(/Established/, @s.state)
104
+ }
105
+ rescue Timeout::Error
106
+ assert false, "Timeout"
83
107
  end
84
108
  def test_send_and_receive_path_id_afi_1_safi_1
85
- server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
86
- server_add_path_cap.add(:send_and_recv, 1, 1)
87
- start_server(3456, server_add_path_cap)
88
- @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
89
- @c.add_cap server_add_path_cap
90
- @c.start :port=> 3456
91
- assert @s.session_info.recv_inet_unicast?,
92
- "Should have the capability to recv inet unicast reachability path info."
93
- assert @s.session_info.send_inet_unicast?,
94
- "Should have the capability to send inet unicast reachability path info."
95
- assert @c.session_info.recv_inet_unicast?,
96
- "Should have the capability to recv inet unicast reachability path info."
97
- assert @c.session_info.send_inet_unicast?,
98
- "Should have the capability to send inet unicast reachability path info."
109
+ status = Timeout::timeout(4) {
110
+ server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
111
+ server_add_path_cap.add(:send_and_recv, 1, 1)
112
+ start_server(3456, server_add_path_cap)
113
+ @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
114
+ @c.add_cap server_add_path_cap
115
+ @c.start :port=> 3456
116
+ assert @s.session_info.recv_inet_unicast?,
117
+ "Should have the capability to recv inet unicast reachability path info."
118
+ assert @s.session_info.send_inet_unicast?,
119
+ "Should have the capability to send inet unicast reachability path info."
120
+ assert @c.session_info.recv_inet_unicast?,
121
+ "Should have the capability to recv inet unicast reachability path info."
122
+ assert @c.session_info.send_inet_unicast?,
123
+ "Should have the capability to send inet unicast reachability path info."
124
+ }
125
+ rescue Timeout::Error => e
126
+ assert false, "timeout"
99
127
  end
100
128
  def test_send_path_id_afi_1_safi_1
101
- server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
102
- server_add_path_cap.add(:send, 1, 1)
103
- client_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
104
- client_add_path_cap.add(:recv, 1, 1)
105
- start_server(3456, server_add_path_cap)
106
- @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
107
- @c.add_cap client_add_path_cap
108
- @c.start :port=> 3456
109
- assert ! @s.session_info.recv_inet_unicast?,
110
- "Should NOT have the capability to recv inet unicast reachability path info."
111
- assert @s.session_info.send_inet_unicast?,
112
- "Should have the capability to send inet unicast reachability path info."
113
- assert @c.session_info.recv_inet_unicast?,
114
- "Should have the capability to recv inet unicast reachability path info."
115
- assert ! @c.session_info.send_inet_unicast?,
116
- "Should NOT have the capability to send inet unicast reachability path info."
129
+ status = Timeout::timeout(4) {
130
+ server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
131
+ server_add_path_cap.add(:send, 1, 1)
132
+ client_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
133
+ client_add_path_cap.add(:recv, 1, 1)
134
+ start_server(3456, server_add_path_cap)
135
+ @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
136
+ @c.add_cap client_add_path_cap
137
+ @c.start :port=> 3456
138
+ assert ! @s.session_info.recv_inet_unicast?,
139
+ "Should NOT have the capability to recv inet unicast reachability path info."
140
+ assert @s.session_info.send_inet_unicast?,
141
+ "Should have the capability to send inet unicast reachability path info."
142
+ assert @c.session_info.recv_inet_unicast?,
143
+ "Should have the capability to recv inet unicast reachability path info."
144
+ assert ! @c.session_info.send_inet_unicast?,
145
+ "Should NOT have the capability to send inet unicast reachability path info."
146
+ }
147
+ rescue Timeout::Error => e
148
+ assert false, "timeout"
149
+
117
150
  end
118
151
  def test_recv_path_id_afi_1_safi_1
119
- server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
120
- server_add_path_cap.add(:recv, 1, 1)
121
- client_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
122
- client_add_path_cap.add(:send, 1, 1)
123
- start_server(3456, server_add_path_cap)
124
- @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
125
- @c.add_cap client_add_path_cap
126
- @c.start :port=> 3456
127
- assert @s.session_info.recv_inet_unicast?,
128
- "Should have the capability to recv inet unicast reachability path info."
129
- assert ! @s.session_info.send_inet_unicast?,
130
- "Should NOT have the capability to send inet unicast reachability path info."
131
- assert ! @c.session_info.recv_inet_unicast?,
132
- "Should NOT have the capability to recv inet unicast reachability path info."
133
- assert @c.session_info.send_inet_unicast?,
134
- "Should have the capability to send inet unicast reachability path info."
152
+ status = Timeout::timeout(4) {
153
+ server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
154
+ server_add_path_cap.add(:recv, 1, 1)
155
+ client_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
156
+ client_add_path_cap.add(:send, 1, 1)
157
+ start_server(3456, server_add_path_cap)
158
+ @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
159
+ @c.add_cap client_add_path_cap
160
+ @c.start :port=> 3456
161
+ assert @s.session_info.recv_inet_unicast?,
162
+ "Should have the capability to recv inet unicast reachability path info."
163
+ assert ! @s.session_info.send_inet_unicast?,
164
+ "Should NOT have the capability to send inet unicast reachability path info."
165
+ assert ! @c.session_info.recv_inet_unicast?,
166
+ "Should NOT have the capability to recv inet unicast reachability path info."
167
+ assert @c.session_info.send_inet_unicast?,
168
+ "Should have the capability to send inet unicast reachability path info."
169
+ }
170
+ rescue Timeout::Error => e
171
+ assert false, "timeout"
172
+
135
173
  end
136
174
  def test_nor_recv_nor_send_path_id_afi_1_safi_1
137
- server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
138
- server_add_path_cap.add(:recv, 1, 1)
139
- client_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
140
- client_add_path_cap.add(:recv, 1, 1)
141
- start_server(3456, server_add_path_cap)
142
- @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
143
- @c.add_cap client_add_path_cap
144
- @c.start :port=> 3456
145
- assert ! @s.session_info.recv_inet_unicast?,
146
- "Should NOT have the capability to recv inet unicast reachability path info."
147
- assert ! @s.session_info.send_inet_unicast?,
148
- "Should NOT have the capability to send inet unicast reachability path info."
149
- assert ! @c.session_info.recv_inet_unicast?,
150
- "Should NOT have the capability to recv inet unicast reachability path info."
151
- assert ! @c.session_info.send_inet_unicast?,
152
- "Should have the capability to send inet unicast reachability path info."
175
+ status = Timeout::timeout(4) {
176
+ server_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
177
+ server_add_path_cap.add(:recv, 1, 1)
178
+ client_add_path_cap = BGP::OPT_PARM::CAP::Add_path.new
179
+ client_add_path_cap.add(:recv, 1, 1)
180
+ start_server(3456, server_add_path_cap)
181
+ @c = Neighbor.new(4, 100, 180, '0.0.0.2', '127.0.0.1', '127.0.0.1')
182
+ @c.add_cap client_add_path_cap
183
+ @c.start :port=> 3456
184
+ assert ! @s.session_info.recv_inet_unicast?,
185
+ "Should NOT have the capability to recv inet unicast reachability path info."
186
+ assert ! @s.session_info.send_inet_unicast?,
187
+ "Should NOT have the capability to send inet unicast reachability path info."
188
+ assert ! @c.session_info.recv_inet_unicast?,
189
+ "Should NOT have the capability to recv inet unicast reachability path info."
190
+ assert ! @c.session_info.send_inet_unicast?,
191
+ "Should have the capability to send inet unicast reachability path info."
192
+ }
193
+ rescue Timeout::Error => e
194
+ assert false, "timeout"
153
195
  end
154
196
  def test_add_capabilities_using_sym
155
197
  neighbor = Neighbor.new(4,100,180,'0.0.0.2')
@@ -0,0 +1,19 @@
1
+ #--
2
+ # Copyright 2014 Jean-Michel Esnault.
3
+ # All rights reserved.
4
+ # See LICENSE.txt for permissions.
5
+ #
6
+ #
7
+ # This file is part of BGP4R.
8
+ #
9
+
10
+ require "test/unit"
11
+ require 'bgp/nlris/mapped_ipv4'
12
+
13
+ class TestNlrisIpv4Mapped < Test::Unit::TestCase
14
+ include BGP
15
+ def test_ipv4_mapped
16
+ assert_equal('10.0.0.1', Ipv4_mapped.new('10.0.0.1').to_s)
17
+ assert_equal('00000000000000000000ffff0a000001', Ipv4_mapped.new('10.0.0.1').to_shex)
18
+ end
19
+ end
@@ -69,4 +69,12 @@ class Aggregator_Test < Test::Unit::TestCase
69
69
  assert_equal(ag1.encode,ag2.encode)
70
70
  assert_equal({:asn=>100, :address=>"10.0.0.1"}, ag2.to_hash[:aggregator])
71
71
  end
72
+ def test6
73
+ ag1 = Aggregator.new('10.0.0.1', 100)
74
+ ag1.asn=200
75
+ ag1.address='11.0.0.2'
76
+ assert_equal(200, ag1.asn)
77
+ assert_equal('11.0.0.2', ag1.address)
78
+ assert_equal({:asn=>200, :address=>"11.0.0.2"}, ag1.to_hash[:aggregator])
79
+ end
72
80
  end
@@ -60,17 +60,12 @@ class Extended_communitiesTest < Test::Unit::TestCase
60
60
  ec = Extended_communities.new_hash :ospf_domain_id=> '9.1.0.1'
61
61
  ec2 = Extended_communities.new_hash(ec.to_hash)
62
62
  assert_equal(ec.to_hash, Extended_communities.new_hash(ec.to_hash).to_hash)
63
- ec = Extended_communities.new_hash :encapsulation=> :l2tpv3
64
- ec2 = Extended_communities.new_hash(ec.to_hash)
65
63
  assert_equal(ec.to_hash, Extended_communities.new_hash(ec.to_hash).to_hash)
66
64
  ec = Extended_communities.new_hash :route_origin=> ['10.0.1.2', 10]
67
65
  ec2 = Extended_communities.new_hash(ec.to_hash)
68
- assert_equal(ec.to_hash, Extended_communities.new_hash(ec.to_hash).to_hash)
69
- ec = Extended_communities.new_hash :color => 100, :link_bandwidth => 999_999_999, :route_origin => ['10.0.1.2', 10], :encapsulation => :ipip
70
- assert_equal(ec.to_hash, Extended_communities.new_hash(ec.to_hash).to_hash)
71
- assert_equal({:color=>100}, ec.color.to_hash)
72
66
  ec = Extended_communities.new_hash :extended_communities=>[{:route_target=>[13111, 26054]}]
73
67
  assert_equal({:extended_communities=>[{:route_target=>[13111, 26054]}]}, ec.to_hash)
68
+ assert_equal(ec.to_hash, Extended_communities.new_hash(ec.to_hash).to_hash)
74
69
  end
75
70
  def test_sort
76
71
  ec = Extended_communities.new
@@ -81,7 +76,7 @@ class Extended_communitiesTest < Test::Unit::TestCase
81
76
  ec.add(Route_target.new('11.0.1.1',10))
82
77
  ec.add(Route_target.new('8.0.1.1',10))
83
78
  ec.add(Route_target.new('7.0.1.1',8))
84
- ec.add(Encapsulation.new(:l2tpv3))
79
+ # ec.add(Encapsulation.new(:l2tpv3))
85
80
  ec.add(Ospf_domain_id.new('20.0.0.1'))
86
81
  ec.add(Route_origin.new('10.0.3.2',9))
87
82
  ec.add(Route_target.new('10.0.3.2',7))
@@ -96,8 +91,8 @@ class Extended_communitiesTest < Test::Unit::TestCase
96
91
  assert_equal("Ospf domain id: 20.0.0.1:0",ec.sort.communities[7].to_s)
97
92
  assert_equal("Ospf router id: 10.0.0.1:0",ec.sort.communities[8].to_s)
98
93
  assert_equal("Color: 100",ec.sort.communities[9].to_s)
99
- assert_equal("Encapsulation: 1",ec.sort.communities[10].to_s)
100
- assert_equal("Link bandwidth: 1000000000.0",ec.sort.communities[11].to_s)
94
+ # assert_equal("Encapsulation: 1",ec.sort.communities[10].to_s)
95
+ assert_equal("Link bandwidth: 1000000000.0",ec.sort.communities[10].to_s)
101
96
  end
102
97
  def test_sort!
103
98
  ec = Extended_communities.new
@@ -140,28 +135,43 @@ class Extended_communitiesTest < Test::Unit::TestCase
140
135
  assert_equal(0, ec <=> ec2)
141
136
  assert(! ec.eql?(ec2))
142
137
  end
143
- def test_getters
138
+ def test_getters_setters
144
139
  ec = Extended_communities.new do |c|
145
140
  c.add(Color.new(100))
146
141
  c.add(Link_bandwidth.new(999_999_999))
147
142
  c.add(Route_target.new('10.0.1.2',10))
148
143
  c.add(Ospf_domain_id.new('9.1.0.1'))
149
- c.add(Route_target.new('11.0.1.1',10))
144
+ c.add(Route_target.new('11.0.1.1',11))
150
145
  c.add(Route_target.new('8.0.1.1',10))
151
146
  c.add(Route_target.new('7.0.1.1',8))
152
- c.add(Encapsulation.new(:l2tpv3))
147
+ ### c.add(Encapsulation.new(:l2tpv3))
153
148
  c.add(Ospf_domain_id.new('20.0.0.1'))
154
149
  c.add(Route_origin.new('10.0.3.2',9))
155
- c.add(Route_target.new('10.0.3.2',7))
150
+ c.add(Route_target.new('10.0.3.2',12))
156
151
  c.add(Ospf_router_id.new('10.0.0.1'))
157
152
  end
158
153
  assert_equal('Color: 100',ec.color.to_s)
159
- assert_equal('Route target: 10.0.1.2:10',ec.route_target.to_s)
160
- assert_equal('Ospf domain id: 9.1.0.1:0',ec.ospf_domain_id.to_s)
161
- assert_equal('Encapsulation: 1',ec.encapsulation.to_s)
154
+ assert_equal('Route target: 10.0.1.2:10',ec.route_target[0].to_s)
155
+ assert_equal('Ospf domain id: 9.1.0.1:0',ec.ospf_domain_id[0].to_s)
156
+ ###assert_equal('Encapsulation: 1',ec.encapsulation.to_s)
162
157
  assert_equal('Ospf router id: 10.0.0.1:0',ec.ospf_router_id.to_s)
163
158
  assert_equal('Link bandwidth: 1000000000.0',ec.link_bandwidth.to_s)
164
159
  assert_equal('Route origin: 10.0.3.2:9',ec.route_origin.to_s)
160
+ ec.route_target= '20.0.1.2', 20
161
+ ec.link_bandwidth= 100_000
162
+ assert_equal('Route target: 20.0.1.2:20',ec.route_target[0].to_s)
163
+ assert_equal('Link bandwidth: 100000.0',ec.link_bandwidth.to_s)
164
+
165
+ ec = Extended_communities.new do |c|
166
+ c.route_target = '10.0.0.1', 1311
167
+ c.link_bandwidth = 100_000_000
168
+ c.ospf_router_id = '1.1.1.1'
169
+ c.ospf_domain_id = '2.2.2.2'
170
+ ###c.encapsulation = 1
171
+ c.route_origin = '3.3.3.3', 33
172
+ c.color = 1311
173
+ end
174
+
165
175
  end
166
176
 
167
177
  end
@@ -108,24 +108,24 @@ class Extended_community_Test < Test::Unit::TestCase
108
108
  assert_equal('Color: 10000', Color.new(Color.new(10_000).encode).to_s)
109
109
  end
110
110
 
111
- def test_encapsulation
112
- assert_equal('030c000000000000', Encapsulation.new.to_shex)
113
- assert_equal('030c000000000001', Encapsulation.new(1).to_shex)
114
- assert_equal('030c000000000002', Encapsulation.new(2).to_shex)
115
- assert_equal('030c000000000007', Encapsulation.new(7).to_shex)
116
- assert_equal('030c000000000001', Encapsulation.new(:l2tpv3).to_shex)
117
- assert_equal('030c000000000002', Encapsulation.new(:gre).to_shex)
118
- assert_equal('030c000000000007', Encapsulation.new(:ipip).to_shex)
119
- assert_equal('Encapsulation: 1', Encapsulation.new(:l2tpv3).to_s)
120
- assert_equal('Encapsulation: 7', Encapsulation.new(:ipip).to_s)
121
- assert_equal('Encapsulation: 2', Encapsulation.new(:gre).to_s)
122
- assert_equal('Encapsulation: 7', Encapsulation.new(Encapsulation.new(7).encode).to_s)
123
- end
111
+ # def test_encapsulation
112
+ # assert_equal('030c000000000000', Encapsulation.new.to_shex)
113
+ # assert_equal('030c000000000001', Encapsulation.new(1).to_shex)
114
+ # assert_equal('030c000000000002', Encapsulation.new(2).to_shex)
115
+ # assert_equal('030c000000000007', Encapsulation.new(7).to_shex)
116
+ # assert_equal('030c000000000001', Encapsulation.new(:l2tpv3).to_shex)
117
+ # assert_equal('030c000000000002', Encapsulation.new(:gre).to_shex)
118
+ # assert_equal('030c000000000007', Encapsulation.new(:ipip).to_shex)
119
+ # assert_equal('Encapsulation: 1', Encapsulation.new(:l2tpv3).to_s)
120
+ # assert_equal('Encapsulation: 7', Encapsulation.new(:ipip).to_s)
121
+ # assert_equal('Encapsulation: 2', Encapsulation.new(:gre).to_s)
122
+ # assert_equal('Encapsulation: 7', Encapsulation.new(Encapsulation.new(7).encode).to_s)
123
+ # end
124
124
 
125
125
  def test_factory
126
126
  s = '0102070001010008 010208000101000a 01020a000102000a 01020a0003020007 01020b000101000a
127
127
  01030a0003020009 0105090100010000 0105140000010000 01070a0000010000 400400004e6e6b28
128
- 430b000000000064 030c000000000007'.split.join
128
+ 430b000000000064 '.split.join # 030c000000000007
129
129
  comms = []
130
130
  communities = s.scan(/[0-9a-f]{16}/) { |comm| comms << Extended_community.factory([comm].pack('H*')) }
131
131
  assert_equal BGP::Route_target, comms[0].class
@@ -139,7 +139,7 @@ class Extended_community_Test < Test::Unit::TestCase
139
139
  assert_equal BGP::Ospf_router_id, comms[8].class
140
140
  assert_equal BGP::Link_bandwidth, comms[9].class
141
141
  assert_equal BGP::Color, comms[10].class
142
- assert_equal BGP::Encapsulation, comms[11].class
142
+ # assert_equal BGP::Encapsulation, comms[11].class
143
143
  end
144
144
 
145
145
  end
@@ -25,7 +25,7 @@ require 'test/unit'
25
25
 
26
26
  class Mp_reach_Test < Test::Unit::TestCase
27
27
  include BGP
28
-
28
+
29
29
  def test_iso_mapped_ip_addr
30
30
  mapped_addr = Iso_ip_mapped.new('10.0.0.1')
31
31
  assert_equal('470006010a00000100', mapped_addr.to_shex)
@@ -171,9 +171,6 @@ class Mp_reach_Test < Test::Unit::TestCase
171
171
  assert_equal(smpr.split.join, mpr.to_shex)
172
172
  end
173
173
 
174
-
175
-
176
-
177
174
  def test_afi_3_safi_1_ipv6_mapped_nexthops_ntoh
178
175
 
179
176
  # Mp Reach (14), length: 57, Flags [O]:
@@ -198,8 +195,19 @@ class Mp_reach_Test < Test::Unit::TestCase
198
195
 
199
196
  assert_equal(s.split.join, mpr.to_shex)
200
197
  assert_equal("[Oncr] (14) Mp Reach: [800e3b000301283500002...] '\n AFI NSAP (3), SAFI Unicast (1)\n nexthop: 2011::1, 2011::2\n 49.0001.0002.0003.0004.0005.0006.0000.0000.0000.00/104'", mpr.to_s())
198
+ end
199
+
200
+ def test_afi_2_safi_2_ipv4_mapped
201
+ s = '800e30000202102009000900190000000000000000000100402009000100000000402009000200000000402009000300000000'
202
+ sbin = [s].pack('H*')
203
+ mpr = Mp_reach.new(sbin)
204
+ assert_equal("\n AFI IPv6 (2), SAFI Multicast (2)\n nexthop: 2009:9:19::1\n 2009:1::/64\n 2009:2::/64\n 2009:3::/64", mpr.mp_reach)
205
+ assert_equal(2, mpr.afi)
206
+ assert_equal(2, mpr.safi)
207
+ assert_equal(s, mpr.to_shex)
201
208
  end
202
209
 
210
+
203
211
  def test_afi_2_safi_2
204
212
  s = '800e30000202102009000900190000000000000000000100402009000100000000402009000200000000402009000300000000'
205
213
  sbin = [s].pack('H*')
@@ -600,7 +608,7 @@ class Mp_reach_Test < Test::Unit::TestCase
600
608
  assert_equal(mpr3.to_hash, Mp_reach.new(mpr3.to_hash[:mp_reach]).to_hash)
601
609
 
602
610
  end
603
-
611
+
604
612
  private
605
613
 
606
614
  def attr_len(attr)
@@ -180,7 +180,7 @@ class Path_attribute_Test < Test::Unit::TestCase # :nodoc:
180
180
  :as_path=> {:set=> [1,2], :sequence=>[3,4], :confed_sequence=>[5,6], :confed_set=>[7,8]},
181
181
  :cluster_list=> ['1.1.1.1', '2.2.2.2', '3.3.3.3'],
182
182
  :communities=> ["145:30", "145:40", "145:50", "145:60", :no_export, :no_advertise,],
183
- :extended_communities=> [ :color => 100, :link_bandwidth => 999_999_999, :route_origin => ['10.0.1.2', 10], :encapsulation => :ipip ],
183
+ :extended_communities=> [ :color => 100, :link_bandwidth => 999_999_999, :route_origin => ['10.0.1.2', 10], ],
184
184
  :aggregator=> { :address=>'1.1.1.1', :asn=>100 },
185
185
  :originator_id=> '2.2.2.2',
186
186
  :as4_aggregator=> { :asn=> 200, :address=> '4.4.4.4' },
@@ -294,7 +294,6 @@ class Path_attribute_Test < Test::Unit::TestCase # :nodoc:
294
294
  ],
295
295
  }
296
296
  }
297
-
298
297
  assert_equal(h[:local_pref], Path_attribute.new(h).to_hash[:local_pref])
299
298
  assert_equal(h[:as_path], Path_attribute.new(h).to_hash[:as_path])
300
299
  assert_equal(h[:extended_communities], Path_attribute.new(h).to_hash[:extended_communities])
@@ -303,8 +302,60 @@ class Path_attribute_Test < Test::Unit::TestCase # :nodoc:
303
302
  assert_equal(h[:aggregator], Path_attribute.new(h).to_hash[:aggregator])
304
303
  assert_equal(h[:mp_reach], Path_attribute.new(h).to_hash[:mp_reach])
305
304
  assert_equal(h, Path_attribute.new(h).to_hash)
305
+ end
306
+
307
+ def test_setters
308
+ h = {
309
+ :aigp=> 0x1f2f3f4f5f6f7f8f,
310
+ :nexthop=> '2.2.2.2',
311
+ :aggregator=>{:asn=>100, :address=>"10.0.0.1"},
312
+ :cluster_list=>["1.0.1.1"],
313
+ :as_path=>{},
314
+ :communities=>["1133:2015"],
315
+ :local_pref=>113,
316
+ :origin=>:incomplete,
317
+ :med=>10,
318
+ :extended_communities=>[{:route_target=>[13111, 26054]}, {:ospf_domain_id=>'1.1.1.1'}],
319
+ :originator_id=>"196.168.28.123",
320
+ :mp_reach=>{
321
+ :nexthop=>["10.0.0.2"], :afi=>1, :safi=>128,
322
+ :nlris=>[
323
+ {:label=>2226, :prefix=>"172.23.21.113/32", :rd=>[1311, 4567814]},
324
+ {:label=>2151, :prefix=>"10.48.9.175/32", :rd=>[1311, 32117824]},
325
+ ],
326
+ }
327
+ }
306
328
 
329
+ pa = Path_attribute.new h
330
+ pa.origin=:egp
331
+ pa.as_path_sequence=[1,2,3,4]
332
+ pa.next_hop='1.2.3.4'
333
+ pa.local_pref=20
334
+ pa.med=30
335
+ pa.communities="1113:2805"
336
+ pa.aggregator.asn=200
337
+ pa.aggregator.address='11.0.0.2'
338
+ pa.originator_id='2.2.2.2'
339
+ pa.cluster_list=['11.1.1.1','12.2.2.2']
340
+ pa.extended_communities.route_target= '10.0.0.1', 1311
341
+ pa.extended_communities.link_bandwidth= 100_000_000
342
+ pa.extended_communities.ospf_router_id= '1.1.1.1'
343
+ pa.extended_communities.ospf_domain_id= '2.2.2.2'
344
+ # pa.extended_communities.encapsulation=1
345
+ pa.extended_communities.route_origin= '3.3.3.3', 33
346
+ pa.extended_communities.color=1311
347
+ assert_equal(1, pa[Origin].to_i)
348
+ assert_equal(:egp, pa.origin.to_sym)
349
+ assert_equal("1 2 3 4", pa.as_path.as_path)
350
+ assert_equal(200, pa.aggregator.asn)
351
+ assert_equal("11.0.0.2", pa.aggregator.address)
352
+ assert_equal("2.2.2.2", pa.originator_id.originator_id)
353
+ assert_equal("b010101", pa.cluster_list.to_ary[0].to_s(16))
354
+ assert_equal("c020202", pa.cluster_list.to_ary[1].to_s(16))
355
+ assert_equal("Route target: 10.0.0.1:1311", pa.extended_communities.route_target.to_s)
356
+ assert_equal("Ospf domain id: 2.2.2.2:0", pa.extended_communities.ospf_domain_id.to_s)
357
+ assert_equal("Link bandwidth: 100000000.0", pa.extended_communities.link_bandwidth.to_s)
307
358
  end
308
-
359
+
309
360
  end
310
361