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.
BGP: Skip empty path segments in received AS_PATH
Although RFC 4271 does not forbid empty path segments, they are uselessand some implementations consider them invalid. It is clarified in RFC 7606,specifying that AS_PATH with empty segment is considered malformed.
BGP multipath support
Kernel option 'merge paths' allows to merge routes exported to kernelprotocol (currently BGP and static routes) to multipath routes.
unsigned [int] -> uint
Fixes potential alignment bug in BGP.
Thanks to Andrew (seti.kr.ua) for the bug report.
Integrated IP functions.
Fixes some bugs and uses generic hash implementation.
Merge branch 'master' into add-path
filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
Implements 'allow local as' option.
Similar to allowas-in option on other routers.
Implements 'next hop keep' option for BGP.
This option allows to keep the received next hop even in cases whenthe route is sent to an interface with a different subnet.
AS# in bgp.agreggator was a signed integer - fixed.
Allows rejected routes to be kept and examined.
When 'import keep rejected' protocol option is activated, routesrejected by the import filter are kept in the routing table, but theyare hidden and not propagated to other protocols. It is possible toexamine them using 'show route rejected'.
Implements ADD-PATH extension for BGP.
Allows to send and receive multiple routes for one network by one BGPsession. Also contains necessary core changes to support this (routingtables accepting several routes for one network from one protocol).It needs some more cleanup before merging to the master branch.
Finalize RA_ACCEPTED handling.
Fixes a new bug in BGP route ordering.
Implements support for link-local addresses in BGP.
Thanks Matthias Schiffer for the original patch.
Implements deterministic MED handling.
Thanks to Alexander V. Chernikov for many suggestions.
Fixes possible buffer overflow when printing BGP attributes.
Thanks to Alexander V. Chernikov for the patch.
BGP Extended communities.
Prints full community lists during 'show route all'.
Adds BGP option related to MED handling.
Adds option 'med metric' allows to compare MEDsbetween routes received from different neighbors.
Fixes some problems in BGP error handling.
Core multipath support.
Implements IGP metric comparison for BGP routes.
Adds route resolvability test.
Implements proper multihop BGP.
Also does some incompatible changes to config file syntax,like removing 'via IP' from multihop option.
Implements hostcache and recursive next hops.
Hostcache is a structure for monitoring changes in a routing table thatis used for routes with dynamic/recursive next hops. This is needed forproper iBGP next hop handling.
Do not export empty community list attribute in BGP.
Comparing cluster list length should be later in bgp_rte_better().
Fix configure to enable warnings and fix most of them.
Removes phantom protocol from the pipe design.
It seems that by adding one pipe-specific exception to routeannouncement code and by adding one argument to rt_notify() callback icould completely eliminate the need for the phantom protocol instanceand therefore make the code more straightforward. It will also fix some...
Changes 'ignore communities' to 'interpret communities'.
Better handling of well-known communities.
Process well-known communities before the export filter (old behavior isto process these attributes after, which does not allow to send routewith such community) and just for routes received from other BGPprotocols. Also fixes a bug in next_hop check.
Change default LOCAL_PREF attribute to 100 (suggested value by RFC 4277).
Merge branch 'ospf3' into new
Fixes export of routes with link-local gw.
Remove bgp_as4_support variable.
Show both IPv6 next hop addresses in BGP.
Implements RFC 5004 - prefer older external routes.
Rename as_path_get_last/as_path_get_first to be consistent.
Fixes bug related to AS2->AS4 conversion.
Fixes bug in ORIGIN check.
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 shoulddrop session, nobody does that and it is unwise to do that.
Now we drop session just in case that peer ASN is in...
Allow 'third party' BGP updates for originated routes.
Fixes BGP IPv6 link local next hop handling.
When sending 'third party' BGP update, Bird used bogus link localaddresses instead of addresses it received before.
Fixes handling of 'next hop self' and 'source address' configurationoptions.
Fixes BGPv6 bug - mandatory attributes weren't validated;
Fixes bug in BGPv6 causing crash by checking missing attributes.
Better handling of AS4 optional attribute errors
AS4 optional attribute errors were handled by sessiondrop (according to BGP RFC). This patch implementserror handling according to new BGP AS4 draft (*) - ignoring invalid AS4 optional attributes.
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 thatroute group. Old behavior (skipping remaining attributes)...
Add format for BGP_AGGREGATOR attribute
Major changes to BGP
Fixes two race conditions causing crash of Bird, several unhandledcases during BGP initialization, and some other bugs. Also changeshandling of startup delay to be more useful and implementreporting of last error in 'show protocols' command.
Proper format functions for ORIGINATOR_ID, CLUSTER_LIST
Implementation of route server.
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...
Bugfix in LOCAL_PREF attribute handling.
Implementation of an option for disabling AS4 support per BGP instance.
Implementation of route reflection for BGP
Implementation of 4B ASN support for BGP
The source address configuration in BGP added.
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)...
... in BGP.
ALIGN -> BIRD_ALIGN
Added missing semicolons.
BGP now reports originating AS and origin type in get_route_info().
Adapted to new rt_notify semantics.
Use correct flags for the LOCAL_PREF attribute.
When an invalid attribute is found, copy the entire attribute to the datasection of the NOTIFICATION message.
IPv6 BGP support finished. Also simplified the BGP stuff a bit.
Receive-only IPv6 BGP.
Full protocol tracing.
Handle redistribution of unknown attributes correctly.
The `bgp_origin' attribute is now an enum.
Path attribute can be missing if we process a packet with empty NLRI section.
Use the same attribute names as in filters.
When sending BGP attributes, re-create the flags, so that attributesadded by filters which get the flags wrong are fixed automagically.
Better reporting of both local and remote errors.
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.
If no NLRI's are present in an UPDATE message, parse the attributes, butdon't check presence of mandatory attributes. [draft-09]
Synced to draft-ietf-idr-bgp4-09.
The ATOMIC_AGGREGATE parameter is optional transitive.
Honor standard communities (no_export, no_advertise, no_export_subconfed)when exporting routes.
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.
Normalize community sets when exporting.
Set PARTIAL bits correctly.
Send and receive communities.
Sending of update messages works!
Created nest/a-path.c and a-set.c which should contain general operationson AS paths and community sets.
Moved as_path_prepend() there.
Pavel, please move the other functions as well.
Made last Pavel's changes compile.
as_path_prepend is usable outside bgp.
Real bucket lists.
Introduced `ARRAY_SIZE' macro to replace all the sizeof(a)/sizeof(*a) constructs.
Implemented outgoing attribute cache.
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 theneighbor entry.
More BGP progress...
For Pavel: You can use bgp_path_prepend() for prepending AS numbers to AS paths.
Formatting of dynamic attributes (except for paths and communities whichwill be added soon).
Parsing of BGP attributes.
Started work on BGP. Wrote main part of the connection handling code.