bgp4r 0.0.17 → 0.0.18

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05332f8a257e4ce30b788aa004c3866aacf549c1
4
- data.tar.gz: fc2bfc4f60b669dfd768a2694a791ff5eae2960c
3
+ metadata.gz: c51910e055eec6ee760068f2e0f143c82d9ffe02
4
+ data.tar.gz: f3438e906aa63a9847e63722a6ee8caf99cc29dd
5
5
  SHA512:
6
- metadata.gz: 40655ec95476a2b4dba344c72dfdc0dc3fc136a6b20455de647d0884cc2115957413131bbdec9817f9f491a6bd53b175ca3d709bee01c4dafe742cd60b753192
7
- data.tar.gz: 2ee16cc41729f434807c02d5af2ebb5383f5437c8bfad96507821f8c46f49496e28a2974ba9e2dda6539c8a86c3be335055b7767fc0f9cffcb22d2ff158ca2ba
6
+ metadata.gz: c0799f8fa5199f21600564a285a7f0fdb76af7119f72e17078b8723ceee11f4c8e30ca8ffbe41c749d1e617727a6b9a416431bd7997db93b76b451e96fe51fe1
7
+ data.tar.gz: aeeaf6ea118d5852591312a93f5b8897464770754fedd1392a3423ba1518fa376925ae59453e0e3c7ebb4a985f8a51fa109cd39687d7c5b3d6b3b94a42bc2d95
data/bgp/messages/open.rb CHANGED
@@ -37,6 +37,8 @@ class Open < Message
37
37
 
38
38
  include OPT_PARM
39
39
 
40
+ AS_TRANS=23456
41
+
40
42
  attr_reader :version, :local_as, :holdtime, :opt_parms
41
43
 
42
44
  def initialize(*args)
@@ -59,7 +61,7 @@ class Open < Message
59
61
 
60
62
  def encode
61
63
  opt_parms = @opt_parms.compact.collect { |cap| cap.encode }.join
62
- s = [@version, @local_as, @holdtime, @bgp_id.hton].pack("Cnna4")
64
+ s = [@version, _my_encoded_as_, @holdtime, @bgp_id.hton].pack("Cnna4")
63
65
  s += if opt_parms.size>255
64
66
  [0xffff, opt_parms.size, opt_parms].pack("nna*")
65
67
  else
@@ -75,7 +77,7 @@ class Open < Message
75
77
  def to_s
76
78
  msg = self.encode
77
79
  "Open Message (#{OPEN}), length: #{msg.size}\n" +
78
- " Version #{@version}, my AS #{@local_as}, Holdtime #{@holdtime}s, ID #{@bgp_id}" +
80
+ " Version #{@version}, my AS #{_my_encoded_as_}, Holdtime #{@holdtime}s, ID #{@bgp_id}" +
79
81
  ([""] + @opt_parms.compact.collect { |cap| cap.to_s } + [""]).join("\n ") +
80
82
  msg.hexlify.join("\n") + "\n"
81
83
  end
@@ -97,6 +99,10 @@ class Open < Message
97
99
  end
98
100
 
99
101
  private
102
+
103
+ def _my_encoded_as_
104
+ @local_as > 0xffff ? AS_TRANS : @local_as
105
+ end
100
106
 
101
107
  def parse(_s)
102
108
  s = super(_s)
data/bgp4r.gemspec CHANGED
@@ -1,12 +1,11 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "bgp4r"
3
- s.version = "0.0.17"
3
+ s.version = "0.0.18"
4
4
  s.email = "jesnault@gmail.com"
5
5
  s.authors = ["Jean-Michel Esnault"]
6
- s.date = "2014-05-07"
6
+ s.date = "2014-10-17"
7
7
  s.description = "Best way to play with BGP protocol using ruby"
8
8
  s.summary = "Best way to play with BGP protocol using ruby"
9
- s.extra_rdoc_files = ["LICENSE.txt","README.rdoc"]
10
9
  s.homepage = "http://github.com/jesnault/bgp4r"
11
10
  s.rdoc_options = ["--quiet", "--title", "bgp4r", "--line-numbers"]
12
11
  s.require_paths = ["."]
@@ -14,5 +13,6 @@ Gem::Specification.new do |s|
14
13
  s.required_rubygems_version = '>= 1.3.6'
15
14
  s.files = `git ls-files -z`.split("\x0")
16
15
  s.test_files = `git ls-files test -z`.split("\x0")
16
+ s.extra_rdoc_files = ["LICENSE.txt","README.rdoc"] + `git ls-files bgp -z`.split("\x0")
17
17
  end
18
18
 
data/changelog.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.0.18
2
+ * Bug fixes
3
+ fix open message encoding when asn > 0xffff
4
+ * More examples
5
+
1
6
  === 0.0.17
2
7
  * Get rid of Rakefile, VERSION.yml ...
3
8
  * Simpler gem specification
@@ -14,14 +19,14 @@
14
19
  + Extended_communities
15
20
  o revisit Extended_communities#to_hash()
16
21
  o changed to_hash() to return
17
- => :extended_communities=> [ ec1, ec2, ..., ecn ]
22
+ => :extended_communities=> [ ec1, ec2, ..., ecn ]
18
23
 
19
24
  + revisit to_hash() for following attr.
20
25
  o Originator_id
21
26
  o Aggregator
22
27
  o Multi_exit_disc
23
28
  o Cluster_list
24
-
29
+
25
30
  * make Path_attribute comparable to test for equality:
26
31
  add following instance methods
27
32
  Path_attributes#sort
@@ -29,8 +34,8 @@
29
34
  Path_attributes#<=>
30
35
 
31
36
  * add getters for:
32
- + all known path attributes
33
- + all known extended communities
37
+ + all known path attributes
38
+ + all known extended communities
34
39
  So one can write:
35
40
  > puts upd.path_attribute.mp_reach.safi
36
41
  => 128
@@ -38,7 +43,7 @@
38
43
  => "Route target: 4:1"
39
44
  > puts upd.path_attribute.mp_reach.nlris[0]
40
45
  => "Label Stack=16000 (bottom) RD=19:17, ID=1, IPv4=10.1.1.0/24"
41
-
46
+
42
47
  === 0.0.14 February 5, 2012
43
48
  * add support for accumulated igp metric attribute
44
49
  * add support for VPN default_route RD: 0/0
@@ -51,7 +56,7 @@
51
56
 
52
57
  === 0.0.12 February 13, 2011
53
58
  * add add-path capability support
54
-
59
+
55
60
  === 0.0.11 January 8, 2011
56
61
  * stop using autoload
57
62
  * fix Communities#has_no_<well_known_community>? predicates
@@ -64,26 +69,26 @@
64
69
  pa.has_a_local_pref?
65
70
  pa.has_a_aggregator?
66
71
  pa.has_a_mp_reach?
67
-
68
- * example that shows how to use
72
+
73
+ * example that shows how to use
69
74
  bgpdata.netsec.colostate.edu bgp xml feed with bgp4r
70
-
75
+
71
76
  === 0.0.9 October 12, 2010
72
77
  * add support for Capability message
73
- * add notification code 7 subcode 1,2,3,4
78
+ * add notification code 7 subcode 1,2,3,4
74
79
  * refactoring capabilities adding dynamic capability opt parameter
75
-
76
- === 0.0.8 September 30, 2010
80
+
81
+ === 0.0.8 September 30, 2010
77
82
  * add end of rib markers
78
83
  eg
79
- Mp_unreach.new(:afi=>1, :safi=>4).to_shex
84
+ Mp_unreach.new(:afi=>1, :safi=>4).to_shex
80
85
  => '800f03000104'
81
- Mp_unreach.new(:afi=>1, :safi=>128).to_shex
86
+ Mp_unreach.new(:afi=>1, :safi=>128).to_shex
82
87
  => '800f03000180'
83
- Mp_unreach.new(:afi=>1, :safi=>2).to_shex
88
+ Mp_unreach.new(:afi=>1, :safi=>2).to_shex
84
89
  => '800f03000102'
85
-
86
- * change optional parameter length encoding
90
+
91
+ * change optional parameter length encoding
87
92
  as per draft-ietf-idr-ext-opt-param-01
88
93
 
89
94
  === 0.0.7 September 12, 2010
@@ -98,7 +103,7 @@
98
103
  === 0.0.5 August 14, 2010
99
104
 
100
105
  * allow for appending Nlri to update object
101
- eg,
106
+ eg,
102
107
 
103
108
  u = Update.new
104
109
  u << '100.0.0.0/13'
@@ -110,20 +115,20 @@
110
115
  >> puts u.nlri.to_s
111
116
  => 100.0.0.0/13
112
117
  99.0.0.0/12
113
-
118
+
114
119
  * allow for apending Attributes to an Update object
115
120
  eg,
116
-
121
+
117
122
  update = Update.new
118
123
  update << Origin.new
119
124
  update << Next_hop.new('10.0.0.1')
120
- update << As_path.new(1,2,3,4,5,6,7,8)
121
-
125
+ update << As_path.new(1,2,3,4,5,6,7,8)
126
+
122
127
  === 0.0.4 June 30, 2009
123
128
  === 0.0.3 June 29, 2009
124
129
  === 0.0.2 June 29, 2009
125
130
  * example of how to code a simple route generator using bgp4r
126
131
 
127
132
  === 0.0.1 Fri Jun 26 2009
128
- * Initial commit
133
+ * Initial commit
129
134
 
@@ -0,0 +1,298 @@
1
+ require 'bgp4r'
2
+ include BGP
3
+
4
+ def create_fiber(base_prefix, nprefix=22, npack=10)
5
+ fiber = Fiber.new do
6
+ ipaddr = IPAddr.new(base_prefix)
7
+ prefixes=[]
8
+ nprefix.times do |i|
9
+ prefixes << (ipaddr ^ i)
10
+ next unless (i%npack)==0
11
+ Fiber.yield prefixes
12
+ prefixes=[]
13
+ end
14
+ Fiber.yield prefixes unless prefixes.empty?
15
+ nil
16
+ end
17
+ fiber
18
+ end
19
+
20
+ nexthop4='192.168.131.20'
21
+
22
+ pa = Path_attribute.new(
23
+ Next_hop.new(nexthop4),
24
+ Origin.new(0),
25
+ As_path.new(200),
26
+ Local_pref.new(100),
27
+ )
28
+
29
+ ipv4_routes = create_fiber("13.11.0.0/26")
30
+
31
+ Log.create
32
+ Log.level=Logger::DEBUG
33
+
34
+ n = Neighbor.new :my_as=> 197014, :remote_addr => '192.168.131.11', :id=> '0.0.0.1'
35
+
36
+ n.capability_mbgp_ipv4_unicast
37
+ n.capability_four_byte_as
38
+ n.start
39
+
40
+
41
+ while subnets = ipv4_routes.resume
42
+ n.send_message Update.new pa.replace(Mp_reach.new(:afi=>1, :safi=>1, :nexthop=> nexthop4, :nlris=> subnets))
43
+ end
44
+
45
+
46
+ sleep(300)
47
+
48
+
49
+ __END__
50
+
51
+ Produces:
52
+
53
+
54
+ jme@ubuntu:/mnt/hgfs/jme/routing/bgp4r$ ifconfig tap0 | grep inet
55
+ inet addr:192.168.131.20 Bcast:192.168.131.255 Mask:255.255.255.0
56
+
57
+ R11# show running config
58
+
59
+ !
60
+ router bgp 197014
61
+ bgp router-id 2.2.2.2
62
+ bgp log-neighbor-changes
63
+ neighbor 192.168.131.20 remote-as 197014
64
+ !
65
+ address-family ipv4
66
+ neighbor 192.168.131.20 activate
67
+ exit-address-family
68
+ !
69
+
70
+ R11#show ip route bgp
71
+ Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
72
+ D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
73
+ N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
74
+ E1 - OSPF external type 1, E2 - OSPF external type 2
75
+ i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
76
+ ia - IS-IS inter area, * - candidate default, U - per-user static route
77
+ o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
78
+ + - replicated route, % - next hop override
79
+
80
+ Gateway of last resort is not set
81
+
82
+ 13.0.0.0/26 is subnetted, 22 subnets
83
+ B 13.11.0.0 [200/0] via 192.168.131.20, 00:04:55
84
+ B 13.11.0.64 [200/0] via 192.168.131.20, 00:04:55
85
+ B 13.11.0.128 [200/0] via 192.168.131.20, 00:04:55
86
+ B 13.11.0.192 [200/0] via 192.168.131.20, 00:04:55
87
+ B 13.11.1.0 [200/0] via 192.168.131.20, 00:04:55
88
+ B 13.11.1.64 [200/0] via 192.168.131.20, 00:04:55
89
+ B 13.11.1.128 [200/0] via 192.168.131.20, 00:04:55
90
+ B 13.11.1.192 [200/0] via 192.168.131.20, 00:04:55
91
+ B 13.11.2.0 [200/0] via 192.168.131.20, 00:04:55
92
+ B 13.11.2.64 [200/0] via 192.168.131.20, 00:04:55
93
+ B 13.11.2.128 [200/0] via 192.168.131.20, 00:04:55
94
+ B 13.11.2.192 [200/0] via 192.168.131.20, 00:04:55
95
+ B 13.11.3.0 [200/0] via 192.168.131.20, 00:04:55
96
+ B 13.11.3.64 [200/0] via 192.168.131.20, 00:04:55
97
+ B 13.11.3.128 [200/0] via 192.168.131.20, 00:04:55
98
+ B 13.11.3.192 [200/0] via 192.168.131.20, 00:04:55
99
+ B 13.11.4.0 [200/0] via 192.168.131.20, 00:04:55
100
+ B 13.11.4.64 [200/0] via 192.168.131.20, 00:04:55
101
+ B 13.11.4.128 [200/0] via 192.168.131.20, 00:04:55
102
+ B 13.11.4.192 [200/0] via 192.168.131.20, 00:04:55
103
+ B 13.11.5.0 [200/0] via 192.168.131.20, 00:04:55
104
+ B 13.11.5.64 [200/0] via 192.168.131.20, 00:04:55
105
+ R11#
106
+
107
+ jme@ubuntu:/mnt/hgfs/jme/routing/bgp4r$ ruby -I. examples/ibgp-ios-asn4bytes.rb
108
+ I, [08:16#19199] INFO -- : BGP::Neighbor Open Socket old state Idle new state Active
109
+ I, [08:16#19199] INFO -- : BGP::Neighbor SendOpen
110
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Send Open Message (1), length: 45
111
+ Version 4, my AS 23456, Holdtime 180s, ID 0.0.0.1
112
+ Option Capabilities Advertisement (2): [0206010400010001]
113
+ Multiprotocol Extensions (1), length: 4
114
+ AFI IPv4 (1), SAFI Unicast (1)
115
+ Option Capabilities Advertisement (2): [0206410400030196]
116
+ Capability(65): 4-octet AS number: 197014
117
+
118
+ 0x0000: ffff ffff ffff ffff ffff ffff ffff ffff
119
+ 0x0001: 002d 0104 5ba0 00b4 0000 0001 1002 0601
120
+ 0x0002: 0400 0100 0102 0641 0400 0301 96
121
+
122
+
123
+ D, [08:16#19199] DEBUG -- : #<BGP::IO::Input:0x00000000ade6e8> #<Thread:0x00000000add888> started
124
+ D, [08:16#19199] DEBUG -- : #<BGP::IO::Output:0x00000000ade5f8> #<Thread:0x00000000add6d0> started
125
+ I, [08:16#19199] INFO -- : BGP::Neighbor ev_send_open old state Active new state OpenSent
126
+ I, [08:16#19199] INFO -- : BGP::Neighbor RecvOpen
127
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Recv Open Message (1), length: 57
128
+ Version 4, my AS 23456, Holdtime 180s, ID 2.2.2.2
129
+ Option Capabilities Advertisement (2): [0206010400010001]
130
+ Multiprotocol Extensions (1), length: 4
131
+ AFI IPv4 (1), SAFI Unicast (1)
132
+ Option Capabilities Advertisement (2): [02028000]
133
+ Route Refresh (Cisco) (128), length: 2
134
+ Option Capabilities Advertisement (2): [02020200]
135
+ Route Refresh (2), length: 2
136
+ Option Capabilities Advertisement (2): [02024600]
137
+ Option Capabilities Advertisement (2): [0206410400030196]
138
+ Capability(65): 4-octet AS number: 197014
139
+
140
+ 0x0000: ffff ffff ffff ffff ffff ffff ffff ffff
141
+ 0x0001: 0039 0104 5ba0 00b4 0202 0202 1c02 0601
142
+ 0x0002: 0400 0100 0102 0280 0002 0202 0002 0246
143
+ 0x0003: 0002 0641 0400 0301 96
144
+
145
+
146
+ I, [08:16#19199] INFO -- : BGP::Neighbor RecvOpen old state OpenSent new state OpenConfirm
147
+ I, [08:16#19199] INFO -- : BGP::Neighbor RecvKeepalive
148
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Recv Keepalive Message (4), length: 19, [001304]
149
+
150
+ I, [08:16#19199] INFO -- : BGP::Neighbor SendKeepalive
151
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Send Keepalive Message (4), length: 19, [001304]
152
+
153
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor SendKeepAlive state is OpenConfirm
154
+ I, [08:16#19199] INFO -- : BGP::Neighbor RecvKeepAlive old state OpenConfirm new state Established
155
+ I, [08:16#19199] INFO -- : BGP::Neighbor version: 4, id: 0.0.0.1, as: 197014, holdtime: 180, peer addr: 192.168.131.11, local addr: started
156
+ I, [08:16#19199] INFO -- : BGP::Neighbor SendUpdate
157
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Send Update Message (2), length: 65
158
+ Path Attributes:
159
+ Next Hop (3), length: 4, Flags [T]: 192.168.131.20
160
+ 0x0000: c0a8 8314
161
+ Origin (1), length: 1, Flags [T]: igp
162
+ 0x0000: 00
163
+ As Path (2), length: 4, Flags [T]: 200
164
+ 0x0000: 0201 00c8
165
+ Local Pref (5), length: 4, Flags [T]: (0x0064) 100
166
+ 0x0000: 0000 0064
167
+ Mp Reach (14), length: 14, Flags [O]:
168
+ AFI IPv4 (1), SAFI Unicast (1)
169
+ nexthop: 192.168.131.20
170
+ 13.11.0.0/26
171
+ 0x0000: 0001 0104 c0a8 8314 001a 0d0b 0000
172
+
173
+ 0x0000: ffff ffff ffff ffff ffff ffff ffff ffff
174
+ 0x0001: 0041 0200 0000 2a40 0304 c0a8 8314 4001
175
+ 0x0002: 0100 4002 0402 0100 c840 0504 0000 0064
176
+ 0x0003: 800e 0e00 0101 04c0 a883 1400 1a0d 0b00
177
+ 0x0004: 00
178
+
179
+
180
+ I, [08:16#19199] INFO -- : BGP::Neighbor SendUpdate
181
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Send Update Message (2), length: 110
182
+ Path Attributes:
183
+ Next Hop (3), length: 4, Flags [T]: 192.168.131.20
184
+ 0x0000: c0a8 8314
185
+ Origin (1), length: 1, Flags [T]: igp
186
+ 0x0000: 00
187
+ As Path (2), length: 4, Flags [T]: 200
188
+ 0x0000: 0201 00c8
189
+ Local Pref (5), length: 4, Flags [T]: (0x0064) 100
190
+ 0x0000: 0000 0064
191
+ Mp Reach (14), length: 59, Flags [O]:
192
+ AFI IPv4 (1), SAFI Unicast (1)
193
+ nexthop: 192.168.131.20
194
+ 13.11.0.64/26
195
+ 13.11.0.128/26
196
+ 13.11.0.192/26
197
+ 13.11.1.0/26
198
+ 13.11.1.64/26
199
+ 13.11.1.128/26
200
+ 13.11.1.192/26
201
+ 13.11.2.0/26
202
+ 13.11.2.64/26
203
+ 13.11.2.128/26
204
+ 0x0000: 0001 0104 c0a8 8314 001a 0d0b 0040 1a0d
205
+ 0x0001: 0b00 801a 0d0b 00c0 1a0d 0b01 001a 0d0b
206
+ 0x0002: 0140 1a0d 0b01 801a 0d0b 01c0 1a0d 0b02
207
+ 0x0003: 001a 0d0b 0240 1a0d 0b02 80
208
+
209
+ 0x0000: ffff ffff ffff ffff ffff ffff ffff ffff
210
+ 0x0001: 006e 0200 0000 5740 0304 c0a8 8314 4001
211
+ 0x0002: 0100 4002 0402 0100 c840 0504 0000 0064
212
+ 0x0003: 800e 3b00 0101 04c0 a883 1400 1a0d 0b00
213
+ 0x0004: 401a 0d0b 0080 1a0d 0b00 c01a 0d0b 0100
214
+ 0x0005: 1a0d 0b01 401a 0d0b 0180 1a0d 0b01 c01a
215
+ 0x0006: 0d0b 0200 1a0d 0b02 401a 0d0b 0280
216
+
217
+
218
+ I, [08:16#19199] INFO -- : BGP::Neighbor SendUpdate
219
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Send Update Message (2), length: 110
220
+ Path Attributes:
221
+ Next Hop (3), length: 4, Flags [T]: 192.168.131.20
222
+ 0x0000: c0a8 8314
223
+ Origin (1), length: 1, Flags [T]: igp
224
+ 0x0000: 00
225
+ As Path (2), length: 4, Flags [T]: 200
226
+ 0x0000: 0201 00c8
227
+ Local Pref (5), length: 4, Flags [T]: (0x0064) 100
228
+ 0x0000: 0000 0064
229
+ Mp Reach (14), length: 59, Flags [O]:
230
+ AFI IPv4 (1), SAFI Unicast (1)
231
+ nexthop: 192.168.131.20
232
+ 13.11.2.192/26
233
+ 13.11.3.0/26
234
+ 13.11.3.64/26
235
+ 13.11.3.128/26
236
+ 13.11.3.192/26
237
+ 13.11.4.0/26
238
+ 13.11.4.64/26
239
+ 13.11.4.128/26
240
+ 13.11.4.192/26
241
+ 13.11.5.0/26
242
+ 0x0000: 0001 0104 c0a8 8314 001a 0d0b 02c0 1a0d
243
+ 0x0001: 0b03 001a 0d0b 0340 1a0d 0b03 801a 0d0b
244
+ 0x0002: 03c0 1a0d 0b04 001a 0d0b 0440 1a0d 0b04
245
+ 0x0003: 801a 0d0b 04c0 1a0d 0b05 00
246
+
247
+ 0x0000: ffff ffff ffff ffff ffff ffff ffff ffff
248
+ 0x0001: 006e 0200 0000 5740 0304 c0a8 8314 4001
249
+ 0x0002: 0100 4002 0402 0100 c840 0504 0000 0064
250
+ 0x0003: 800e 3b00 0101 04c0 a883 1400 1a0d 0b02
251
+ 0x0004: c01a 0d0b 0300 1a0d 0b03 401a 0d0b 0380
252
+ 0x0005: 1a0d 0b03 c01a 0d0b 0400 1a0d 0b04 401a
253
+ 0x0006: 0d0b 0480 1a0d 0b04 c01a 0d0b 0500
254
+
255
+
256
+ I, [08:16#19199] INFO -- : BGP::Neighbor SendUpdate
257
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Send Update Message (2), length: 65
258
+ Path Attributes:
259
+ Next Hop (3), length: 4, Flags [T]: 192.168.131.20
260
+ 0x0000: c0a8 8314
261
+ Origin (1), length: 1, Flags [T]: igp
262
+ 0x0000: 00
263
+ As Path (2), length: 4, Flags [T]: 200
264
+ 0x0000: 0201 00c8
265
+ Local Pref (5), length: 4, Flags [T]: (0x0064) 100
266
+ 0x0000: 0000 0064
267
+ Mp Reach (14), length: 14, Flags [O]:
268
+ AFI IPv4 (1), SAFI Unicast (1)
269
+ nexthop: 192.168.131.20
270
+ 13.11.5.64/26
271
+ 0x0000: 0001 0104 c0a8 8314 001a 0d0b 0540
272
+
273
+ 0x0000: ffff ffff ffff ffff ffff ffff ffff ffff
274
+ 0x0001: 0041 0200 0000 2a40 0304 c0a8 8314 4001
275
+ 0x0002: 0100 4002 0402 0100 c840 0504 0000 0064
276
+ 0x0003: 800e 0e00 0101 04c0 a883 1400 1a0d 0b05
277
+ 0x0004: 40
278
+
279
+
280
+ I, [08:16#19199] INFO -- : BGP::Neighbor RecvKeepalive
281
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Recv Keepalive Message (4), length: 19, [001304]
282
+
283
+ I, [08:16#19199] INFO -- : BGP::Neighbor RecvUpdate
284
+ D, [08:16#19199] DEBUG -- : BGP::Neighbor Recv Update Message (2), length: 23
285
+
286
+
287
+ 0x0000: ffff ffff ffff ffff ffff ffff ffff ffff
288
+ 0x0001: 0017 0200 0000 00
289
+
290
+
291
+ I, [09:08#19199] INFO -- : BGP::Neighbor RecvKeepalive
292
+ D, [09:08#19199] DEBUG -- : BGP::Neighbor Recv Keepalive Message (4), length: 19, [001304]
293
+
294
+ I, [09:16#19199] INFO -- : BGP::Neighbor SendKeepalive
295
+ D, [09:16#19199] DEBUG -- : BGP::Neighbor Send Keepalive Message (4), length: 19, [001304]
296
+
297
+ I, [10:01#19199] INFO -- : BGP::Neighbor RecvKeepalive
298
+ D, [10:01#19199] DEBUG -- : BGP::Neighbor Recv Keepalive Message (4), length: 19, [001304]
@@ -100,4 +100,10 @@ class Open_Test < Test::Unit::TestCase
100
100
  assert open.find(Route_refresh)
101
101
  assert open.find(Add_path)
102
102
  end
103
+ def test_5
104
+ open = Open.new(4,0xffff, 200, '10.0.0.1')
105
+ assert_match /my AS 65535/, open.to_s
106
+ open = Open.new(4,0x1ffff, 200, '10.0.0.1')
107
+ assert_match /my AS 23456/, open.to_s
108
+ end
103
109
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bgp4r
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Michel Esnault
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-07 00:00:00.000000000 Z
11
+ date: 2014-10-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Best way to play with BGP protocol using ruby
14
14
  email: jesnault@gmail.com
@@ -17,6 +17,61 @@ extensions: []
17
17
  extra_rdoc_files:
18
18
  - LICENSE.txt
19
19
  - README.rdoc
20
+ - bgp/common.rb
21
+ - bgp/iana.rb
22
+ - bgp/io.rb
23
+ - bgp/messages/capability.rb
24
+ - bgp/messages/keepalive.rb
25
+ - bgp/messages/markers.rb
26
+ - bgp/messages/message.rb
27
+ - bgp/messages/messages.rb
28
+ - bgp/messages/notification.rb
29
+ - bgp/messages/open.rb
30
+ - bgp/messages/route_refresh.rb
31
+ - bgp/messages/update.rb
32
+ - bgp/misc/live_feed.rb
33
+ - bgp/neighbor/add_path_cap.rb
34
+ - bgp/neighbor/neighbor.rb
35
+ - bgp/nlris/inet.rb
36
+ - bgp/nlris/label.rb
37
+ - bgp/nlris/labeled.rb
38
+ - bgp/nlris/mapped_ipv4.rb
39
+ - bgp/nlris/nlri.rb
40
+ - bgp/nlris/nlris.rb
41
+ - bgp/nlris/nsap.rb
42
+ - bgp/nlris/prefix.rb
43
+ - bgp/nlris/rd.rb
44
+ - bgp/nlris/vpn.rb
45
+ - bgp/optional_parameters/add_path.rb
46
+ - bgp/optional_parameters/as4.rb
47
+ - bgp/optional_parameters/capabilities.rb
48
+ - bgp/optional_parameters/capability.rb
49
+ - bgp/optional_parameters/dynamic.rb
50
+ - bgp/optional_parameters/graceful_restart.rb
51
+ - bgp/optional_parameters/mbgp.rb
52
+ - bgp/optional_parameters/optional_parameter.rb
53
+ - bgp/optional_parameters/orf.rb
54
+ - bgp/optional_parameters/route_refresh.rb
55
+ - bgp/orfs/orf.rb
56
+ - bgp/orfs/prefix_orf.rb
57
+ - bgp/path_attributes/aggregator.rb
58
+ - bgp/path_attributes/aigp.rb
59
+ - bgp/path_attributes/as_path.rb
60
+ - bgp/path_attributes/atomic_aggregate.rb
61
+ - bgp/path_attributes/attribute.rb
62
+ - bgp/path_attributes/attributes.rb
63
+ - bgp/path_attributes/cluster_list.rb
64
+ - bgp/path_attributes/communities.rb
65
+ - bgp/path_attributes/extended_communities.rb
66
+ - bgp/path_attributes/extended_community.rb
67
+ - bgp/path_attributes/local_pref.rb
68
+ - bgp/path_attributes/mp_reach.rb
69
+ - bgp/path_attributes/mp_unreach.rb
70
+ - bgp/path_attributes/multi_exit_disc.rb
71
+ - bgp/path_attributes/next_hop.rb
72
+ - bgp/path_attributes/origin.rb
73
+ - bgp/path_attributes/originator_id.rb
74
+ - bgp/path_attributes/path_attribute.rb
20
75
  files:
21
76
  - COPYING
22
77
  - LICENSE.txt
@@ -81,6 +136,7 @@ files:
81
136
  - changelog.txt
82
137
  - examples/a_live_feed
83
138
  - examples/ebgp-vyatta-ipv4-ipv6.rb
139
+ - examples/ibgp-ios-asn4bytes.rb
84
140
  - examples/ibgp-vyatta-ipv6.rb
85
141
  - examples/routegen
86
142
  - examples/routegen.yml