Ondrej Zajicek (work)
ef57b70fa5
BGP: Support for routes with mixed-AF next hops
...
Covers IPv4/VPNv4 routes with IPv6 next hop (RFC 5549), IPv6 routes with
IPv4 next hop (RFC 4798) and VPNv6 routes with IPv4 next hop (RFC 4659).
Unfortunately it also makes next hop hooks more messy.
Each BGP channel now could have two IGP tables, one for IPv4 next hops,
the other for IPv6 next hops.
2017-03-26 19:20:15 +02:00
Ondrej Zajicek (work)
01111fc42c
BGP: Bugfix in VPN NLRI encoding
2017-03-23 14:10:42 +01:00
Ondrej Zajicek (work)
1e37e35c3e
BGP: Support for MPLS labels and VPN SAFI
...
Basic support for SAFI 4 and 128 (MPLS labeled IP and VPN) for IPv4 and
IPv6. Should work for route reflector, but does not properly handle
originating routes with next hop self.
Based on patches from Jan Matejka.
2017-03-22 18:16:49 +01:00
Jan Moskyto Matejka
3c74416465
Nexthop: Fixed recursive route mpls label merging
2017-03-17 15:48:32 +01:00
Ondrej Zajicek (work)
27f6ba651e
BGP: Fix bug in ADD_PATH
...
When a BGP session with ADD_PATH is restarted and the neighbor do not
announce ADD_PATH capability during reconnect, the accept_ra_types is
still set to RA_ANY.
Thanks to Lennert Buytenhek for the bugreport
2017-03-14 12:56:12 +01:00
Jan Moskyto Matejka
039a65d0e4
Nexthop: Fixed hostentry
2017-02-24 14:05:11 +01:00
Jan Moskyto Matejka
c609d03986
Merge branch 'int-new' into nexthop-merged
2017-02-22 11:58:04 +01:00
Ondrej Zajicek (work)
62e64905b7
Several minor fixes
2017-02-20 02:26:45 +01:00
Ondrej Zajicek (work)
4e379bde60
BGP: Update RFC references
2017-02-19 12:02:39 +01:00
Ondrej Zajicek (work)
82f42ea091
BGP: Minor cleanups
2017-02-07 15:55:51 +01:00
Ondrej Zajicek (work)
d8022d26fc
BGP: Partial support for IPv4 routes with IPv6 next hop (RFC 5549)
...
Mostly capability signalling
2017-01-24 02:00:35 +01:00
Ondrej Zajicek (work)
f8aad5d5b7
Minor cleanups
2017-01-03 16:30:27 +01:00
Jan Moskyto Matejka
5b208e296f
Removing (struct rta)->cast. Never used.
2016-12-22 13:09:59 +01:00
Jan Moskyto Matejka
4e276a8920
Merged multipath and single-path data structures.
...
Dropped struct mpnh and mpnh_*()
Now struct nexthop exists, nexthop_*(), and also included struct nexthop
into struct rta.
Also converted RTD_DEVICE and RTD_ROUTER to RTD_UNICAST. If it is needed
to distinguish between these two cases, RTD_DEVICE is equivalent to
IPA_ZERO(a->nh.gw), RTD_ROUTER is then IPA_NONZERO(a->nh.gw).
From now on, we also explicitely want C99 compatible compiler. We assume
that this 20-year norm should be known almost everywhere.
2016-12-22 13:01:06 +01:00
Ondrej Zajicek (work)
256cc8ee08
BGP: Report capabilities in show protocols all
2016-12-20 17:39:59 +01:00
Ondrej Zajicek (work)
ac3ad139f6
BGP: Add support for flowspec (RFC 5575)
2016-12-07 18:29:34 +01:00
Ondrej Zajicek (work)
d15b0b0a1b
BGP redesign
...
Integrated and extensible BGP with generalized AFI handling,
support for IPv4+IPv6 AFI and unicast+multicast SAFI.
2016-12-07 14:20:52 +01:00
Jan Moskyto Matejka
3e236955c9
Build: switch on -Wextra, get rid of most of the warnings
...
There are several unresolved -Wmissing-field-initializers on older
versions of GCC than 5.1, all of them false positive.
2016-11-01 14:52:54 +01:00
Ondrej Zajicek (work)
ea0cb652e9
BGP: Fix extended messages
...
Change attribute length limit to handle extended (64 kB) messages.
Do not mix updates and withdraws (RFC 7606).
2016-07-11 20:41:32 +02:00
Ondrej Zajicek (work)
52e21323b6
BGP: Update capability number from IANA for extended messages
2015-11-25 15:52:58 +01:00
Ondrej Zajicek
06e0d1b692
BGP: Extended messages support
...
Implements draft-ietf-idr-bgp-extended-messages-10, for now
undocumented and with temporary private capability number.
2015-07-18 13:38:21 +02:00
Pavel Tvrdík
ae80a2de95
unsigned [int] -> uint
2015-06-08 02:24:08 +02:00
Ondrej Zajicek
d924d5a562
BGP: Fixes serious bug in TX handling
...
Under some circumstances and heavy load, TX could be postponed
until the session fails with hold timer expired.
Thanks to Javor Kliachev for making the bug reproductible.
2015-04-01 00:10:00 +02:00
Ondrej Zajicek
2eadd36fa0
BGP: AS-wide unique router ID (RFC 6286) support
...
RFC 6286 relaxed rules for router IDs, allowing EBGP sessions between
routers with the same ID (but different ASN).
2015-03-29 21:24:47 +02:00
Ondrej Zajicek
9aed29e605
BGP: Enhanced route refresh (RFC 7313) support
...
Also hook feed_done is renamed to feed_end.
2015-03-29 18:29:49 +02:00
Ondrej Zajicek
509aab5deb
Fixes serious bug in BGP add-path
...
Temporary rta is reused in BGP, while rta_lookup() breaks it.
Thanks to Alexander Chernikov for analysing the problem.
2015-03-02 10:58:20 +01:00
Ondrej Zajicek
88a183c6c9
Integrated IP functions.
2014-10-24 11:11:43 +02:00
Ondrej Zajicek
1123e70740
Implements token bucket filter for rate limiting.
2014-10-02 12:52:50 +02:00
Ondrej Zajicek
66370eac1f
Fixes BGP crash when update with some attributes and empty NLRI is received.
...
Thanks to Charlie Allom for the bugreport.
2014-05-04 11:49:41 +02:00
Ondrej Zajicek
859cbd75e1
Fixes a bug in (mainly) IPv6 BGP.
...
Stack variable may be used unitialized and that would lead to spurious
rta_free(), which may cause crash. The bug was introduced in 1.4.1 from
merging add-path branch.
Thanks to Peter Andreev for reporting it and Alexander V. Chernikov for
resolving it.
2014-04-14 12:50:03 +02:00
Ondrej Zajicek
4e7c974d22
Fixes a bug in graceful restart.
2014-03-24 19:22:19 +01:00
Ondrej Zajicek
0c791f873a
BGP graceful restart support.
...
Also significant core protocol state changes needed for that,
global graceful restart recovery state and kernel proto support
for recovery.
2014-03-20 14:07:12 +01:00
Ondrej Zajicek
e7d2ac4401
Finishes add-path.
...
Fixes some bugs and uses generic hash implementation.
2013-12-01 13:49:42 +01:00
Ondrej Zajicek
736e143fa5
Merge branch 'master' into add-path
...
Conflicts:
filter/filter.c
nest/proto.c
nest/rt-table.c
proto/bgp/bgp.h
proto/bgp/config.Y
2013-11-23 11:50:34 +01:00
Ondrej Zajicek
ac57451348
Implements RFC 6608 Subcodes for BGP FSM Error.
2013-07-25 13:55:24 +02:00
Ondrej Zajicek
572c644043
Fixes a crash when mrtdump is enabled and interface goes away.
...
Thanks to Peter Christensen for the bugfix.
2013-04-29 22:08:05 +02:00
Ondrej Zajicek
8bd9b930c3
Fixes a bug in IPv6 BGP next hop processing.
...
BGP next hop attributes with empty link-local IPv6 addresses were not
handled properly.
Thanks to Sergey Popovich for the bugfix.
2013-04-16 17:40:44 +02:00
Ondrej Zajicek
094d2bdb79
Implements ADD-PATH extension for BGP.
...
Allows to send and receive multiple routes for one network by one BGP
session. Also contains necessary core changes to support this (routing
tables accepting several routes for one network from one protocol).
It needs some more cleanup before merging to the master branch.
2012-08-14 16:46:43 +02:00
Ondrej Zajicek
47c447c42e
Minor cleanups.
2012-05-11 12:10:21 +02:00
Ondrej Zajicek
ebecb6f6a1
Implements generalized import hooks.
...
Thanks to Alexander V. Chernikov for the original patch.
2012-04-15 15:28:29 +02:00
Ondrej Zajicek
3ce1714279
Fixes a new bug in BGP route ordering.
2012-01-20 16:20:03 +01:00
Ondrej Zajicek
d7f469c15c
Some minor fixes.
2012-01-09 02:41:13 +01:00
Ondrej Zajicek
53ffbff39f
Implements support for link-local addresses in BGP.
...
Thanks Matthias Schiffer for the original patch.
2012-01-08 15:31:34 +01:00
Ondrej Zajicek
61c96d7244
Fixes bug that causes crash with strange BGP updates.
2011-05-31 17:27:46 +02:00
Ondrej Zajicek
06fb60c4af
Fixes some problems in BGP error handling.
2011-03-30 01:09:18 +02:00
Ondrej Zajicek
265d06dcbc
Fixes IPv6 build.
2010-08-04 15:27:11 +02:00
Ondrej Zajicek
d1e146f2f8
Implements IGP metric comparison for BGP routes.
2010-07-31 01:04:32 +02:00
Ondrej Zajicek
1b180121a9
Use link-local addresses in recursive next hops for IPv6 BGP.
2010-07-28 11:45:35 +02:00
Ondrej Zajicek
852b7062e3
Fixes a buffer overflow in TX code of IPv6 BGP.
2010-07-22 15:09:35 +02:00
Ondrej Zajicek
087cecd0e2
Adds some options and documentation related to recursive next hops.
2010-07-13 12:48:23 +02:00
Ondrej Zajicek
9be9a26413
Implements proper multihop BGP.
...
Also does some incompatible changes to config file syntax,
like removing 'via IP' from multihop option.
2010-07-12 17:39:39 +02:00
Ondrej Zajicek
cfe34a316e
Implements hostcache and recursive next hops.
...
Hostcache is a structure for monitoring changes in a routing table that
is used for routes with dynamic/recursive next hops. This is needed for
proper iBGP next hop handling.
2010-07-05 17:50:19 +02:00
Ondrej Zajicek
475977242a
Handle EPIPE as a common connection close event.
2010-05-14 16:54:39 +02:00
Ondrej Zajicek
506fa1a73e
Merge several fixes suggested by Joakim Tjernlund.
2010-05-02 22:41:40 +02:00
Ondrej Zajicek
b8113a5e92
Implements BGP 'show protocols' info details.
2010-04-07 00:19:23 +02:00
Ondrej Zajicek
ff2857b03d
Many changes in (mainly) kernel syncers.
...
- BSD kernel syncer is now self-conscious and can learn alien routes
- important bugfix in BSD kernel syncer (crash after protocol restart)
- many minor changes and bugfixes in kernel syncers and neighbor cache
- direct protocol does not generate host and link local routes
- min_scope check is removed, all routes have SCOPE_UNIVERSE by default
- also fixes some remaining compiler warnings
2010-02-26 10:55:58 +01:00
Ondrej Zajicek
e81b440f68
Fix configure to enable warnings and fix most of them.
2010-02-21 14:34:53 +01:00
Ondrej Zajicek
44f26560ec
Workaround for some broken BGP implementations that skip initial KEEPALIVE.
2010-02-02 10:14:21 +01:00
Ondrej Zajicek
cf31112f0d
Implements MRTdump feature.
2010-01-03 12:17:52 +01:00
Ondrej Zajicek
bf47fe4b2e
Implements BGP route refresh.
2009-11-26 20:47:59 +01:00
Ondrej Zajicek
3f9b7bfe9f
Implements option that controls IPv6 BGP next hops when lladdr is missing.
2009-11-18 20:32:36 +01:00
Ondrej Zajicek
a5bf5f781c
Show bad peer AS number in log in decimal.
2009-09-24 23:14:44 +02:00
Ondrej Zajicek
54fe0d9230
Fixes setting of IP addresses to route attributes (NEXT_HOP).
2009-09-18 13:59:04 +02:00
Ondrej Zajicek
05198c12f4
Some cleanups.
2009-08-27 19:01:04 +02:00
Ondrej Zajicek
b99d378698
Minor BGP changes related to error wait time.
2009-06-07 00:38:38 +02:00
Ondrej Zajicek
72b28a041d
Implements import route limits.
2009-06-04 13:31:09 +02:00
Ondrej Zajicek
f98e291579
The pipe cleanup.
2009-06-01 14:07:13 +02:00
Ondrej Zajicek
10ab65a8c9
Fixes one recently introduced IPv6 BGP compatibility problem.
2009-05-06 15:18:52 +02:00
Ondrej Zajicek
4827b69ff4
Fixes BGP IPv6 link local next hop handling.
...
When sending 'third party' BGP update, Bird used bogus link local
addresses instead of addresses it received before.
2009-04-29 18:58:24 +02:00
Ondrej Zajicek
ad440a570b
Fixes handling of 'next hop self' and 'source address' configuration
...
options.
2009-04-28 18:11:56 +02:00
Ondrej Zajicek
64cf11f544
Fixes BGPv6 bug - missing endianity conversion.
...
Also removes code skipping SNPAs
(obsoleted by newer RFCs, should be ignored).
2009-04-23 23:15:07 +02:00
Ondrej Zajicek
8f0c887a52
Fixe bug in BGPv6 that causes to send invalid network withdraws.
2009-04-23 14:16:05 +02:00
Ondrej Zajicek
e8ba557c7f
Update capability handshake options
...
Add 'capabilities' option, change default behavior to advertise ipv4,
add some checks and ignore incoming capabilities when capabilities
are disabled.
2009-03-13 12:49:44 +01:00
Ondrej Zajicek
e3299ab148
Added Cisco and Quagga capability workaround option.
2009-03-05 11:52:47 +01:00
Ondrej Zajicek
82a79586e5
Better handling of too long attributes
...
This patch extends the length for attributes from 1024 to 2048
(because both AS_PATH and AS4_PATH attributes take 2+4 B per AS).
If there is not enough space for attributes, Bird skips that
route group. Old behavior (skipping remaining attributes)
leads to skipping required attributes and session drop.
2009-02-27 15:24:46 +01:00
Ondrej Zajicek
cb53039271
Rate limit for most abundant log messages
2009-02-26 14:23:54 +01:00
Ondrej Zajicek
165a622727
Adds support for fallback to capabilityless BGP connect
...
When capability related error is received, next connect will be
without capabilities. Also cease error subcodes descriptions
(according to [RFC4486]) are added.
2008-12-24 17:24:41 +01:00
Ondrej Zajicek
11b32d9117
Major changes to BGP
...
Fixes two race conditions causing crash of Bird, several unhandled
cases during BGP initialization, and some other bugs. Also changes
handling of startup delay to be more useful and implement
reporting of last error in 'show protocols' command.
2008-12-19 01:34:39 +01:00
Ondrej Zajicek
1389f3699f
Fixes bugs in IPv6 code caused by recent commits.
2008-11-05 21:39:04 +01:00
Ondrej Zajicek
e16466b379
Fix race condition that breaks BGP connections after reconfigure.
...
RFC says that only connections in OpenConfirm and Established state
should participate in connection collision detection.
The current implementation leads to race condition when both sides
are trying to connect at the almost same time, then both sides
receive OPEN message by different connections at the almost same
time and close the other connection. Both connections are
closed and the both sides end in start/idle or start/active
state.
2008-10-29 14:16:34 +01:00
Ondrej Zajicek
ba5ed6f3e4
Implementation of an option for disabling AS4 support per BGP instance.
2008-10-26 22:48:02 +01:00
Ondrej Zajicek
4847a894bf
Implementation of route reflection for BGP
2008-10-26 22:45:09 +01:00
Ondrej Zajicek
11cb620266
Implementation of 4B ASN support for BGP
2008-10-26 22:36:08 +01:00
Martin Mares
e21423bab8
... in BGP.
2004-06-05 09:27:17 +00:00
Martin Mares
6ea8ca1469
Updated a comment.
2003-02-23 10:22:04 +00:00
Martin Mares
11d4474c17
Better selection of link-local NLRI addresses, at least for our own
...
address. Need to do it better for the other neighbors -- the current
solution works only if they use the standard 64+64 global addresses
and the interface identifier in lower 64 bits is the same as for the
link-scope addresses.
2003-02-22 22:47:45 +00:00
Martin Mares
8c92bf6a0d
Temporary fix for BGP protocol capability announcement for IPv6 mode.
2003-02-22 10:40:35 +00:00
Martin Mares
60a72ed49b
Fixed length check miscalculation in IPv6 receive path.
2003-02-22 10:25:22 +00:00
Martin Mares
54e55169da
BGP documented.
2000-06-04 17:06:18 +00:00
Martin Mares
bc00185e5a
Updated to new neighbor cache.
2000-06-01 13:00:19 +00:00
Martin Mares
d2a7c0e9b2
Don't print trace messages about null updates.
2000-05-19 18:05:19 +00:00
Martin Mares
0c3588bf5e
Don't crash when the socket gets closed between updates.
...
Also, this time not only update `remains', but update it right :)
2000-05-08 14:53:22 +00:00
Martin Mares
9ff8f334ed
Update `remains' counter correctly.
2000-05-08 14:32:19 +00:00
Martin Mares
507eea4c8b
Don't generate corrupted packets when sending only route deletes.
2000-05-08 12:37:24 +00:00
Martin Mares
2a149b18cc
Unused variables in IPv6 code.
2000-05-04 20:38:44 +00:00
Martin Mares
93a786cb03
Removed a lot of unused variables.
...
Please try compiling your code with --enable-warnings to see them. (The
unused parameter warnings are usually bogus, the unused variable ones
are very useful, but gcc is unable to control them separately.)
2000-05-04 20:30:36 +00:00
Martin Mares
cf3d6470d7
IPv6 BGP support finished. Also simplified the BGP stuff a bit.
2000-05-04 20:02:56 +00:00
Martin Mares
1c1da87b27
Receive-only IPv6 BGP.
2000-05-04 09:03:31 +00:00
Martin Mares
85368cd4b7
Full protocol tracing.
2000-05-02 16:07:41 +00:00
Martin Mares
f94557dec5
Some more fixes for attributeless UPDATEs.
2000-04-27 22:40:19 +00:00
Martin Mares
8573314326
Avoid printing of error messages on Cease notifications.
2000-04-25 23:08:03 +00:00
Martin Mares
42532f0846
Support dynamic reconfiguration.
2000-04-25 21:58:17 +00:00
Martin Mares
efcece2da3
Better reporting of both local and remote errors.
2000-04-25 21:13:25 +00:00
Martin Mares
a47a01083b
Real parsing of BGP OPEN options including capability
...
negotiation.
2000-04-25 13:32:17 +00:00
Martin Mares
2a9e064d7b
If no NLRI's are present in an UPDATE message, parse the attributes, but
...
don't check presence of mandatory attributes. [draft-09]
2000-04-21 12:25:35 +00:00
Martin Mares
7787ace61a
Synced to draft-ietf-idr-bgp4-09.
2000-04-20 22:54:22 +00:00
Martin Mares
9bc6ab4041
Fixed reporting of unknown options.
2000-04-20 22:34:50 +00:00
Martin Mares
5f532adde2
Temporarily ignore unknown options.
2000-04-19 13:54:35 +00:00
Martin Mares
1ed2fe9609
Send and receive communities.
2000-04-17 10:19:15 +00:00
Martin Mares
f421cfdd80
Sending of update messages works!
2000-04-17 09:37:31 +00:00
Martin Mares
ae8f558499
Implemented outgoing attribute cache.
2000-04-10 12:39:51 +00:00
Martin Mares
f880924990
BGP now handles incoming routes (IPv4 only).
2000-04-01 09:17:33 +00:00
Martin Mares
c00d31befa
Parsing of BGP attributes.
2000-03-31 23:21:37 +00:00
Martin Mares
973399ae2c
Basic analysis of UPDATE packets.
2000-03-30 18:44:23 +00:00
Martin Mares
b552ecc4d7
Connection state machine works.
2000-03-30 17:39:48 +00:00
Martin Mares
3fdbafb6f4
More BGP. This time it connects, but the state machine still isn't complete.
2000-03-30 10:44:20 +00:00
Martin Mares
72a6ef11fe
Construction of BGP packets.
2000-03-21 15:53:50 +00:00
Martin Mares
c01e37416d
Started work on BGP. Wrote main part of the connection handling code.
2000-03-20 21:50:17 +00:00