Ondrej Zajicek (work)
66dbdbd993
BGP: Support for large communities
...
Add support for large communities (draft-ietf-idr-large-community),
96bit alternative to RFC 1997 communities.
Thanks to Matt Griswold for the original patch.
2016-10-03 12:48:56 +02: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)
775a5a8195
BGP: Skip empty path segments in received AS_PATH
...
Although RFC 4271 does not forbid empty path segments, they are useless
and some implementations consider them invalid. It is clarified in RFC 7606,
specifying that AS_PATH with empty segment is considered malformed.
2016-06-29 14:24:32 +02:00
Ondrej Zajicek (work)
af678af0d5
Merge remote-tracking branch 'origin/master' into int-new
2016-05-12 18:03:23 +02:00
Jan Moskyto Matejka
0c6dfe5236
Merge branch 'int-new' into int-new-merged
2016-05-10 14:30:49 +02:00
Jan Moskyto Matejka
7152e5efbb
Build system reworked to one global Makefile with includes and no nesting
...
Also removed the lib-dir merging with sysdep. Updated #include's
accordingly.
Fixed make doc on recent Debian together with moving generated doc into
objdir.
Moved Makefile.in into root dir
Retired all.o and birdlib.a
Linking the final binaries directly from all the .o files.
2016-05-10 14:07:34 +02:00
Ondrej Zajicek (work)
a7baa09862
BSD: Add the IPsec SA/SP database entries control
...
Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP database
at FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys are
handled automatically on both Linux and FreeBSD.
Based on patches from Pavel Tvrdik.
2016-04-13 14:37:09 +02:00
Jan Moskyto Matejka
7a7ac65682
Merge branch 'master' into int-new-channels
2016-04-08 12:28:33 +02:00
Ondrej Zajicek (work)
bd22d7f41d
IO: Avoid multiple event cycles in one loop cycle.
...
Event cycle may took too much time and trigger next timer events, so
avoid cycling between timer and event cycles inside the loop cycle.
2016-04-06 11:57:28 +02:00
Ondrej Zajicek (work)
9e7b3ebdf9
IO: Replace RX priority heuristic with explicit mark
...
In BIRD, RX has lower priority than TX with the exception of RX from
control socket. The patch replaces heuristic based on socket type with
explicit mark and uses it for both control socket and BGP session waiting
to be established.
This should avoid an issue when during heavy load, outgoing connection
could connect (TX event), send open, but then failed to receive OPEN /
establish in time, not sending notifications between and therefore
got hold timer expired error from the neighbor immediately after it
finally established the connection.
2016-04-06 11:49:34 +02:00
Ondrej Zajicek (work)
487c6961cb
BGP: Fix bug in incoming connection handling
...
When a BGP session was established by an outgoing connection with
Graceful Restart behavior negotiated, a pending incoming connection in
OpenSent state, and another incoming connection was received, then the
outgoing connection (and whole BGP session) was closed, but the old
incoming connection was just overwritten by the new one. That later
caused a crash when the hold timer from the old connection fired.
2016-02-11 16:38:28 +01:00
Ondrej Zajicek (work)
f4a60a9bc4
Channels - explicit links between protocols and tables
...
The patch adds support for channels, structures connecting protocols and
tables and handling most interactions between them. The documentation is
missing yet.
2016-02-01 10:28:50 +01: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
Ondrej Zajicek
8d9eef1771
BGP multipath support
...
Kernel option 'merge paths' allows to merge routes exported to kernel
protocol (currently BGP and static routes) to multipath routes.
2015-06-08 02:24:08 +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
6cf72d7ad7
Rename BGP option 'start delay' to 'connect delay'
...
Also update log message for error-triggered startup delay.
2015-02-22 17:21:54 +01:00
Ondrej Zajicek
a1beb8f3ee
Relax BGP neighbor parameter
...
Permit specifying neighbor address, AS number and port independently.
Add 'interface' parameter for specifying interface for link-local
sessions independently.
Thanks to Alexander V. Chernikov for the original patch.
2015-02-22 13:50:58 +01:00
Ondrej Zajicek
2bbc308321
Store protocol config size inside protocol structure
...
Make proto_config_new() use this info instead of supplied size.
Thanks to Alexander V. Chernikov for the patch.
2015-02-21 21:08:23 +01:00
Ondrej Zajicek
374917adcc
Make BGP protocol instance search a separate function
...
Thanks to Alexander V. Chernikov for the patch.
2015-02-21 20:55:43 +01:00
Pavel Tvrdik
4a591d4b94
Replacing GNU old-style field designator extension
2015-02-21 19:31:36 +01:00
Ondrej Zajicek
dfc7a6c6a0
Fixes potential alignment bug in BGP.
...
Thanks to Andrew (seti.kr.ua) for the bug report.
2015-02-21 12:24:30 +01:00
Ondrej Zajicek
523f020b5f
Link state support in BGP.
...
Configurable fast shutdown of a BGP session when an interface loses link.
2015-02-21 12:15:56 +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
dcde7ae597
Allows to configure different remote port for BGP sessions.
...
Thanks to João Taveira Araújo for the original patch.
2014-10-02 12:52:50 +02:00
Ondrej Zajicek
9eceab33f9
String constants could be used for string option values.
...
Thanks to Frederik Kriewitz for the patch.
2014-05-29 23:05:03 +02:00
Ondrej Zajicek
05476c4d04
IPv4/IPv6 integrated socket code.
2014-05-18 11:42:26 +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
227af309e5
Fixes some minor issues in graceful restart.
2014-03-24 12:32:12 +01:00
Ondrej Zajicek
6eda3f135f
Documentation (and minor fixes) for BGP graceful restart.
2014-03-23 01:35:33 +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
5c200e0a4d
Merge branch 'add-path'
2014-02-06 20:15:05 +01:00
Ondrej Zajicek
6601a14831
Merge branch 'add-path'
2013-12-10 22:30:46 +01:00
Ondrej Zajicek
2d0b7e24a5
Fixes problem with source address selection in BGP and BFD.
2013-12-02 11:54:32 +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
283c7dfada
Merge branch 'master' into add-path
2013-11-25 18:42:47 +01:00
Ondrej Zajicek
f3e5917850
Enables multihop mode for IBGP by default.
...
This is more consistent with common usage and also with the behavior of
other implementations (Cisco, Juniper).
Also changes the default for gw mode to be based solely on
direct/multihop.
2013-11-24 12:37:24 +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
77e43c8b72
Minor fixes.
2013-11-22 22:49:04 +01:00
Ondrej Zajicek
0aeac9cb7f
Merge commit 'origin/bfd'
2013-11-22 02:48:44 +01:00
Ondrej Zajicek
1ec522538f
BFD protocol, ready for release.
...
Supports OSPF and BGP and also statically configured sessions.
2013-11-19 22:33:48 +01:00
Ondrej Zajicek
a15dab76f9
Implements 'allow local as' option.
...
Similar to allowas-in option on other routers.
2013-10-21 14:59:35 +02:00
Ondrej Zajicek
b21955e058
Fixes a bug related to mixed up neighbor events in BGP.
...
Neighbor events related to received route next hops got mixed up with
sticky neighbor node for an IP of the BGP peer. If a neighbor for a next
hop disappears, BGP session is shut down.
2013-08-13 20:42:43 +02:00
Ondrej Zajicek
ac57451348
Implements RFC 6608 Subcodes for BGP FSM Error.
2013-07-25 13:55:24 +02:00
Ondrej Zajicek
48b15ef10f
Fixes stuck connection during BGP session shutdown.
...
If TX buffers were full during BGP session shutdown
then a protocol waited indefinitely to be able to
send notification packet to close the session.
2013-07-13 01:39:41 +02:00
Ondrej Zajicek
9c99d753fd
Fixes a problem with BGP neighbors, link-local addresses and locking.
...
Thanks to Fritz Grimpen for the bugfix.
2013-05-09 11:11:06 +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
48bc232f08
Implements 'next hop keep' option for BGP.
...
This option allows to keep the received next hop even in cases when
the route is sent to an interface with a different subnet.
2013-04-16 17:27:34 +02:00
Ondrej Zajicek
b662290f40
Separate import and receive limits.
...
They have different behavior w.r.t. filtered routes that are kept.
2013-01-10 13:07:33 +01:00
Ondrej Zajicek
79b4e12e60
Implements interface masks for choosing router id.
...
Router ID could be automatically determined based of subset of
ifaces/addresses specified by 'router id from' option. The patch also
does some minor changes related to router ID reconfiguration.
Thanks to Alexander V. Chernikov for most of the work.
2012-12-27 12:56:23 +01:00
Ondrej Zajicek
1555095795
Changes 'rejected' to 'filtered' in one of the last patches.
2012-11-15 01:29:01 +01:00
Ondrej Filip
e16469bc4d
AS# in bgp.agreggator was a signed integer - fixed.
2012-11-12 13:48:29 +01:00
Ondrej Zajicek
cf98be7b67
Allows rejected routes to be kept and examined.
...
When 'import keep rejected' protocol option is activated, routes
rejected by the import filter are kept in the routing table, but they
are hidden and not propagated to other protocols. It is possible to
examine them using 'show route rejected'.
2012-11-10 14:26:13 +01: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
5400c0e7f9
Fixes BGP subcode during global shutdown.
2012-08-06 02:42:24 +02:00
Ondrej Zajicek
abced4a914
Merge branch 'rt-accepted'
...
Conflicts:
nest/config.Y
nest/rt-table.c
proto/bgp/bgp.c
2012-07-16 14:44:45 +02:00
Ondrej Zajicek
26822d8fe1
Finalize RA_ACCEPTED handling.
2012-07-16 01:33:02 +02:00
Ondrej Zajicek
47c447c42e
Minor cleanups.
2012-05-11 12:10:21 +02:00
Ondrej Zajicek
d9b77cc281
Implements generalized export limits.
...
And also fixes some minor bugs in limits.
2012-04-24 23:39:57 +02:00
Ondrej Zajicek
7d0a31deed
Fixes in generalized import limits.
2012-04-21 21:05:36 +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
00a09f3c36
Implement RA_ACCEPTED mode of route propagation.
2012-04-15 15:07:58 +02:00
Ondrej Zajicek
c0adf7e9fc
Better support for multitable protocols.
...
The nest-protocol interaction is changed to better handle multitable
protocols. Multitable protocols now declare that by 'multitable' field,
which tells nest that a protocol handles things related to proto-rtable
interaction (table locking, announce hook adding, reconfiguration of
filters) itself.
Filters and stats are moved to announce hooks, a protocol could have
different filters and stats to different tables.
The patch is based on one from Alexander V. Chernikov, thanks.
2012-03-15 12:13:04 +01:00
Ondrej Zajicek
39c028e9e9
Assign default protocol preference via proto_config_new().
...
The patch from Alexander V. Chernikov.
2012-01-24 11:31:00 +01: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
69a8259c5e
Allows sticky link-local neighbors.
...
Allows using NEF_STICKY neighbors with link-local addresses. This is
used for static route nexthops, they can be specified like fe80::1%eth0
.
2012-01-01 12:14:42 +01:00
Ondrej Zajicek
be4cd99a36
Implements deterministic MED handling.
...
Thanks to Alexander V. Chernikov for many suggestions.
2011-12-22 13:20:29 +01:00
Ondrej Zajicek
a7f23f581f
Implements protocol templates.
...
Based on the patch from Alexander V. Chernikov.
Extended to support almost all protocols.
Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
2011-11-07 00:31:23 +01:00
Ondrej Zajicek
51947659ab
Minor changes in BGP protocol info.
...
Shows neighbor IP and ASN even if protocol is down.
2011-09-04 00:56:02 +02:00
Ondrej Zajicek
6c4df70373
Fixes possible buffer overflow when printing BGP attributes.
...
Thanks to Alexander V. Chernikov for the patch.
2011-09-03 21:59:40 +02:00
Ondrej Zajicek
b1b1943360
The generalized TTL security mechanism (RFC 5082) support.
...
Thanks to Alexander V. Chernikov for the patch.
2011-08-16 23:13:05 +02:00
Ondrej Zajicek
42a0c05408
BGP Extended communities.
2011-08-14 13:55:02 +02:00
Ondrej Zajicek
fdf16eb658
Prints full community lists during 'show route all'.
2011-07-03 19:43:30 +02:00
Ondrej Zajicek
35f8c731ea
Fixes output of BGP timers in 'show protocols all'.
2011-06-25 14:51:16 +02:00
Ondrej Zajicek
61c96d7244
Fixes bug that causes crash with strange BGP updates.
2011-05-31 17:27:46 +02:00
Ondrej Zajicek
73272f04af
Adds BGP option related to MED handling.
...
Adds option 'med metric' allows to compare MEDs
between routes received from different neighbors.
2011-04-22 16:13:27 +02:00
Ondrej Zajicek
4ef0950603
Fixes a problem with BGP protocols and implicit router IDs.
2011-04-01 13:55:52 +02:00
Ondrej Zajicek
06fb60c4af
Fixes some problems in BGP error handling.
2011-03-30 01:09:18 +02:00
Ondrej Zajicek
7e95c05d88
Core multipath support.
2010-12-07 23:33:55 +01:00
Ondrej Zajicek
fcf5a4f4b3
Change default for BGP IPv6 socket to V6ONLY.
...
Also add a new option 'dual' for the old behavior.
2010-11-03 10:02:24 +01:00
Ondrej Zajicek
ac4a1eedfc
Change default for handling missing link-local addresses on route servers.
2010-08-13 14:30:36 +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
ac3ac49a71
Adds route resolvability test.
2010-07-28 13:13:34 +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
a34b09349e
Disable BGP protocol when cannot open listening socket.
2010-05-31 11:35:29 +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
6b5a8649a4
Do not export empty community list attribute in BGP.
2010-04-08 17:56:56 +02:00
Ondrej Zajicek
b8113a5e92
Implements BGP 'show protocols' info details.
2010-04-07 00:19:23 +02:00
Ondrej Zajicek
126683feed
Filter language updates; new route attributes and datatype.
...
- Adds bgp_originator_id and bgp_cluster_list route attributes.
- Adds dotted quad filter datatype (for router IDs, used by
bgp_originator_id and ospf_router_id route attributes).
- Fixes pair ~ pair set matching.
- Documentation updates.
2010-03-29 19:29:03 +02:00
Ondrej Zajicek
3075824dbd
Comparing cluster list length should be later in bgp_rte_better().
2010-02-26 14:09:24 +01: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 Filip
89534cdae5
'rr client id' is not expression but ID (like router id).
2010-02-20 21:14:02 +01:00
Ondrej Zajicek
dca75fd7c2
Removes phantom protocol from the pipe design.
...
It seems that by adding one pipe-specific exception to route
announcement code and by adding one argument to rt_notify() callback i
could completely eliminate the need for the phantom protocol instance
and therefore make the code more straightforward. It will also fix some
minor bugs (like ignoring debug flag changes from the command line).
2010-02-13 12:26:26 +01:00
Ondrej Zajicek
a2ea1bac60
Moves errno.h include.
2010-02-11 21:19:20 +01:00
Ondrej Zajicek
2af25a971a
Fixes a crash caused by missing error hook on BGP listening socket.
...
Error happened when too many BGP connections arrived in one moment
(ECONNABORTED).
2010-02-11 11:12:58 +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
41677025ee
Changes 'ignore communities' to 'interpret communities'.
2010-01-28 15:59:18 +01:00
Ondrej Zajicek
6cb8f742f1
Better handling of well-known communities.
...
Process well-known communities before the export filter (old behavior is
to process these attributes after, which does not allow to send route
with such community) and just for routes received from other BGP
protocols. Also fixes a bug in next_hop check.
2010-01-27 17:22:57 +01:00
Ondrej Zajicek
cf31112f0d
Implements MRTdump feature.
2010-01-03 12:17:52 +01:00
Ondrej Zajicek
fbcb7d5faf
Change default LOCAL_PREF attribute to 100 (suggested value by RFC 4277).
2009-12-21 11:50:42 +01:00
Ondrej Zajicek
0225ea4edd
Merge branch 'ospf3' into new
2009-12-15 00:32:13 +01:00
Ondrej Zajicek
f2d7da742b
Fixes export of routes with link-local gw.
2009-12-15 00:30:07 +01:00
Ondrej Zajicek
43c1ceccb9
Remove bgp_as4_support variable.
2009-12-14 23:31:25 +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
d0e2d6d1e0
Show both IPv6 next hop addresses in BGP.
2009-11-17 14:17:23 +01:00
Ondrej Zajicek
3228c72cc0
Implements RFC 5004 - prefer older external routes.
2009-11-17 11:41:29 +01:00
Ondrej Zajicek
4cdd078453
Implements protocol-specific router id and updates documentation.
2009-10-12 23:31:42 +02:00
Ondrej Zajicek
52b9b2a178
Rename as_path_get_last/as_path_get_first to be consistent.
2009-10-12 20:44:58 +02:00
Ondrej Zajicek
ea89da381f
Workaround for stupid callback scheduler.
...
There is no reak callback scheduler and previous behavior causes
bad things during hard congestion (like BGP hold timeouts).
Smart callback scheduler is still missing, but main loop was
changed such that it first processes all tx callbacks (which
are fast enough) (but max 4* per socket) + rx callbacks for CLI,
and in the second phase it processes one rx callback per
socket up to four sockets (as rx callback can be slow when
there are too many protocols, because route redistribution
is done synchronously inside rx callback). If there is event
callback ready, second phase is skipped in 90% of iterations
(to speed up CLI during congestion).
2009-10-11 18:56:16 +02:00
Ondrej Zajicek
a5bf5f781c
Show bad peer AS number in log in decimal.
2009-09-24 23:14:44 +02:00
Ondrej Zajicek
be6e39ebbf
Passive option.
2009-09-24 22:12:11 +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
46eb80d5d5
Fixes headers for uintptr_t (and build on NetBSD).
2009-09-17 17:52:36 +02:00
Ondrej Zajicek
05198c12f4
Some cleanups.
2009-08-27 19:01:04 +02:00
Ondrej Zajicek
949bd34e81
Fixes bug related to AS2->AS4 conversion.
2009-08-25 19:01:37 +02:00
Ondrej Zajicek
70670bf317
Fixed bug related to reconfiguration of BGP with MD5 passwords.
2009-07-09 15:42:39 +02:00
Ondrej Zajicek
d72cdff411
Replace 'bind' option with 'listen' option.
...
To be consistent with other daemons.
2009-06-23 11:08:30 +02:00
Ondrej Zajicek
da95a7a7da
Fixes bug in ORIGIN check.
2009-06-23 11:00:38 +02:00
Ondrej Zajicek
29c430f856
Changes handling of AS_PATH_CONFED_* segments in AS_PATH.
...
Although standard says that if we receive AS_PATH_CONFED_*
(and we are not a part of a confederation) segment, we should
drop session, nobody does that and it is unwise to do that.
Now we drop session just in case that peer ASN is in
AS_PATH_CONFED_* segment (to detect peer that considers BIRD
as a part of its confederation).
2009-06-23 10:50:57 +02:00
Ondrej Zajicek
789772ed45
Implements option that changes BGP listening socket parametres.
2009-06-18 19:20:07 +02:00
Ondrej Zajicek
b99d378698
Minor BGP changes related to error wait time.
2009-06-07 00:38:38 +02:00
Ondrej Zajicek
7238262671
Fixes bug related to startup delay change.
2009-06-06 18:56:33 +02:00
Ondrej Zajicek
dd91e46765
Differentiate between error delay and connect/reconnect delay.
...
The difference is here to reject incoming connections in the
first case.
2009-06-06 18:16:22 +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
23ac9e9a9e
Changes pipes to transfer all routes between routing table, not just optimal routes.
2009-05-31 15:24:27 +02:00
Ondrej Zajicek
10ab65a8c9
Fixes one recently introduced IPv6 BGP compatibility problem.
2009-05-06 15:18:52 +02:00
Ondrej Zajicek
b7a735ea9d
Allow 'third party' BGP updates for originated routes.
2009-04-29 22:17:40 +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
f307842ad8
Fixes BGPv6 bug - mandatory attributes weren't validated;
2009-04-23 14:44:02 +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
b9539e78d8
Fixes bug in BGPv6 causing crash by checking missing attributes.
2009-04-23 12:36:24 +02:00
Ondrej Zajicek
48d79d521c
Better handling of AS4 optional attribute errors
...
AS4 optional attribute errors were handled by session
drop (according to BGP RFC). This patch implements
error handling according to new BGP AS4 draft (*)
- ignoring invalid AS4 optional attributes.
(*) http://www.ietf.org/internet-drafts/draft-chen-rfc4893bis-02.txt
2009-03-18 20:30:21 +01: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
cd17c651a6
Add format for BGP_AGGREGATOR attribute
2009-02-21 17:47:56 +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
591211557f
Fixes bug related to reconfiguration of BGP.
...
BGP keeps its copy of configuration ptr and didn't update it during
reconfiguration. But old configuration is freed during reconfiguration.
That leads to unnecessary reset of BGP connection during reconfiguration
(old conf is corrupted and therefore different) and possibly other strange
behavior.
2008-12-24 12:18:10 +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
aebe06b40c
Proper format functions for ORIGINATOR_ID, CLUSTER_LIST
2008-11-08 23:33:22 +01:00
Ondrej Zajicek
1389f3699f
Fixes bugs in IPv6 code caused by recent commits.
2008-11-05 21:39:04 +01:00
Ondrej Zajicek
a39b165e45
Multihop BGP was completely broken, because listening socket has always
...
ttl 1.
2008-11-01 16:58:40 +01:00
Ondrej Zajicek
a92fe60717
Implementation of route server.
2008-11-01 12:55:43 +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
b6bf284a90
Bugfixes in MULIT_EXIT_DISC attribute handling.
...
- Old MED handling was completely different from behavior
specified in RFCs - for example they havn't been propagated
to neighboring areas.
- Update tie-breaking according to RFC 4271.
- Change default value for 'default bgp_med' configuration
option according to RFC 4271.
2008-10-26 22:59:21 +01:00
Ondrej Zajicek
4819c3e17a
Bugfix in LOCAL_PREF attribute handling.
2008-10-26 22:54:23 +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
d51aa28190
Implementation of MD5 authentication of BGP sessions.
2008-10-26 22:42:39 +01:00
Ondrej Zajicek
11cb620266
Implementation of 4B ASN support for BGP
2008-10-26 22:36:08 +01:00
Ondrej Filip
85ae398a61
The source address configuration in BGP added.
2008-08-24 23:20:46 +00:00
Ondrej Filip
98ac61766d
A lot of changes:
...
- metric is 3 byte long now
- summary lsa originating
- more OSPF areas possible
- virtual links
- better E1/E2 routes handling
- some bug fixes..
I have to do:
- md5 auth (last mandatory item from rfc2328)
- !!!!DEBUG!!!!! (mainly virtual link system has probably a lot of bugs)
- 2328 appendig E
2004-06-25 16:39:53 +00:00
Martin Mares
9831e5916f
Staticized lots of local functions.
2004-06-05 09:58:23 +00:00
Martin Mares
e21423bab8
... in BGP.
2004-06-05 09:27:17 +00:00
Ondrej Filip
7fdd338c36
ALIGN -> BIRD_ALIGN
2004-06-01 10:28:25 +00:00
Martin Mares
38a608c55a
Rewritten the I/O loop. All socket operations are now safe, meaning that
...
you can delete the socket from anywhere in the hooks and nothing should break.
Also, the receive/transmit buffers are now regular xmalloc()'ed buffers,
not separate resources which would need shuffling around between pools.
sk_close() is gone, use rfree() instead.
2004-05-31 21:48:19 +00:00
Martin Mares
6a57bb3110
Killed a couple of unused variables.
...
We really should compile with warnings enabled.
2004-05-31 20:57:38 +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
7d875e094b
Added missing includes.
2002-11-13 08:47:06 +00:00
Martin Mares
de10a974f2
Added missing semicolons.
2002-11-13 08:46:12 +00:00
Martin Mares
bcbdcbb6ae
Don't accept incoming connections when the neighbor is not up.
2000-06-20 07:49:08 +00:00
Martin Mares
58f7d004fd
Fixes to the progdoc.
2000-06-07 13:25:53 +00:00
Martin Mares
2e9b24211a
Spelling fixes to progdoc.
2000-06-07 12:29:08 +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
fcb5f4a725
Updated all the Doc files to new format.
2000-05-31 11:30:18 +00:00
Martin Mares
7294f68b3b
path metric' and
disable after error' are switches, not numeric clauses.
2000-05-29 22:08:04 +00:00
Martin Mares
d2a7c0e9b2
Don't print trace messages about null updates.
2000-05-19 18:05:19 +00:00
Martin Mares
5e88d73025
BGP now reports originating AS and origin type in get_route_info().
2000-05-19 11:01:41 +00:00
Martin Mares
f4ab231746
bgp_get_status: If protocol is down, don't print BGP state.
2000-05-15 12:19:28 +00:00
Martin Mares
e3f2d5fce3
Cleanup of configuration.
...
o Use `expr' instead of `NUM' and `ipa' instead of `IPA',
so that defined symbols work everywhere.
o `define' now accepts both numbers and IP addresses.
o Renamed `ipa' in filters to `fipa'.
Pavel, please update filters to accept define'd symbols as well.
2000-05-15 11:48:23 +00:00
Martin Mares
02bd064ab7
Adapted to new rt_notify semantics.
2000-05-13 11:02:02 +00:00
Martin Mares
2138d3b4d8
Use correct flags for the LOCAL_PREF attribute.
...
When an invalid attribute is found, copy the entire attribute to the data
section of the NOTIFICATION message.
2000-05-11 12:20:07 +00:00
Martin Mares
c09d1e8df2
KEEPALIVE TIME ought to set keepalive time, not connect retry time :)
2000-05-08 22:32:17 +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
93d6bf38a6
The bgp_list is gone. Incomming connections are now handled in a much
...
more straightforward manner by scanning the active configuration for
matching protocols.
2000-05-08 13:26:30 +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
79681f4a19
Link the instance to the global BGP list as soon as possible.
2000-05-08 11:04:22 +00:00
Martin Mares
acfce55c86
Setup of incoming connection is now a separate function.
2000-05-07 10:41:45 +00:00
Martin Mares
ab1129c1bd
Added skeleton Doc files for the whole developer's documentation.
2000-05-05 17:17:42 +00:00
Martin Mares
beaf86e13c
Removed RTS_RIP_EXT.
2000-05-04 21:23:10 +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
53943a0022
Defined format specifier %M' which behaves as
%m', but takes the
...
error code as an argument.
Use it in socket hooks where we really shouldn't rely on errno containing
the right value or even existing.
2000-05-02 16:10:04 +00:00
Martin Mares
85368cd4b7
Full protocol tracing.
2000-05-02 16:07:41 +00:00
Martin Mares
d1a74339d4
Handle redistribution of unknown attributes correctly.
2000-05-02 12:51:39 +00:00
Martin Mares
cea6366400
The `bgp_origin' attribute is now an enum.
2000-04-28 15:13:29 +00:00
Martin Mares
f94557dec5
Some more fixes for attributeless UPDATEs.
2000-04-27 22:40:19 +00:00
Martin Mares
54896cbdba
Path attribute can be missing if we process a packet with empty NLRI section.
2000-04-27 22:31:11 +00:00
Martin Mares
9165888ad2
Handle connect errors correctly.
2000-04-27 19:41:10 +00:00
Martin Mares
5db9bae286
IBGP fixes.
2000-04-26 13:26:31 +00:00
Martin Mares
6fd766c17e
Implemented automatic restart after error with all the timers needed.
2000-04-25 23:08:31 +00:00
Martin Mares
8573314326
Avoid printing of error messages on Cease notifications.
2000-04-25 23:08:03 +00:00
Martin Mares
b3155b3399
Randomize timers properly.
2000-04-25 22:01:19 +00:00
Martin Mares
42532f0846
Support dynamic reconfiguration.
2000-04-25 21:58:17 +00:00
Martin Mares
99f70c78e1
Use the same attribute names as in filters.
2000-04-25 21:31:15 +00:00
Martin Mares
684c25d98f
When sending BGP attributes, re-create the flags, so that attributes
...
added by filters which get the flags wrong are fixed automagically.
2000-04-25 21:21:52 +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
8b258e4e65
LOCAL_PREF is now always present and exported over all ibgp connections [draft]
...
Allow setting of address of the local end of the TCP connection.
Several bug fixes.
2000-04-21 13:01:28 +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
f381cdce52
The ATOMIC_AGGREGATE parameter is optional transitive.
2000-04-19 13:54:17 +00:00
Martin Mares
e0d6a7bda4
Delay fetching of router ID.
2000-04-19 13:28:56 +00:00
Martin Mares
035044b1d9
Select the right source address and don't check port numbers.
2000-04-19 12:51:14 +00:00
Martin Mares
bd2d8190dd
Honor standard communities (no_export, no_advertise, no_export_subconfed)
...
when exporting routes.
2000-04-17 13:13:08 +00:00
Martin Mares
56a2bed46b
Don't import/export MED and LOCAL_PREF on external links.
...
Added real comparison of BGP routes (inspired by the Cisco one).
Default local preference and default MED are now settable.
Defined filter keywords for all BGP attributes we know.
2000-04-17 12:46:07 +00:00
Martin Mares
e3558ab14e
Normalize community sets when exporting.
...
Set PARTIAL bits correctly.
2000-04-17 11:25:15 +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
c0668f3696
Created nest/a-path.c and a-set.c which should contain general operations
...
on AS paths and community sets.
Moved as_path_prepend() there.
Pavel, please move the other functions as well.
2000-04-17 07:53:29 +00:00
Martin Mares
c8f685cb9d
Made last Pavel's changes compile.
2000-04-12 14:14:47 +00:00
Pavel Machek
0a40e97328
as_path_prepend is usable outside bgp.
2000-04-12 14:12:37 +00:00
Martin Mares
c2b28c9910
Real bucket lists.
2000-04-12 14:09:26 +00:00
Pavel Machek
ac7a2145cc
f_new_dynamic_attr gets third argument, type as filters know it.
2000-04-12 14:02:04 +00:00
Martin Mares
12d5677aa3
Define BGP_PATH.
2000-04-12 13:56:04 +00:00
Martin Mares
7750634946
Introduced `ARRAY_SIZE' macro to replace all the sizeof(a)/sizeof(*a) constructs.
2000-04-12 13:21:23 +00:00
Martin Mares
ae8f558499
Implemented outgoing attribute cache.
2000-04-10 12:39:51 +00:00
Martin Mares
48e842cc98
Use neighbor cache to track direct route to the peer or multihop destination.
...
Calculate next_hop properly based on the local address we get from the
neighbor entry.
2000-04-10 11:21:40 +00:00
Martin Mares
ef2c708dfa
More BGP progress...
...
For Pavel: You can use bgp_path_prepend() for prepending AS numbers to AS paths.
2000-04-09 22:05:02 +00:00
Martin Mares
10be74da20
Formatting of dynamic attributes (except for paths and communities which
...
will be added soon).
2000-04-01 10:21:11 +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
Martin Mares
2638249d34
Bare skeleton of the BGP.
2000-03-19 22:09:07 +00:00