bgp4r 0.0.17 → 0.0.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bgp/messages/open.rb +8 -2
- data/bgp4r.gemspec +3 -3
- data/changelog.txt +28 -23
- data/examples/ibgp-ios-asn4bytes.rb +298 -0
- data/test/unit/messages/open_test.rb +6 -0
- metadata +58 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c51910e055eec6ee760068f2e0f143c82d9ffe02
|
4
|
+
data.tar.gz: f3438e906aa63a9847e63722a6ee8caf99cc29dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,
|
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 #{
|
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.
|
3
|
+
s.version = "0.0.18"
|
4
4
|
s.email = "jesnault@gmail.com"
|
5
5
|
s.authors = ["Jean-Michel Esnault"]
|
6
|
-
s.date = "2014-
|
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.
|
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-
|
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
|