- Apr 19, 2021
-
-
Maria Matejka authored
This fixes an internal table cleanup bug introduced in ff397df7.
-
- Mar 30, 2021
-
-
Maria Matejka authored
This also fixes memory leaks from import/export tables being never cleaned up and freed.
-
- Feb 10, 2021
-
-
Ondřej Zajíček authored
If there are roa_check() calls in channel filters, then the channel subscribes to ROA table notifications, which are sent when ROA tables are updated (subject to settle time) and trigger channel reload or refeed.
-
- May 01, 2020
-
-
Maria Matejka authored
-
- Feb 21, 2020
-
-
Ondřej Zajíček authored
-
- Feb 04, 2020
-
-
Maria Matejka authored
Thanks to Robert Scheck <bird@robert-scheck.de> who reported it and Toke Høiland-Jørgensen <toke@toke.dk> who suggested this patch.
-
- Jan 07, 2020
-
-
Ondřej Zajíček authored
The old code stored route verdicts and temporary routes directly in rtable. The new code do not store received routes (it immediately compares them with exported routes and resolves conflicts) and uses internal bitmap to keep track of which routes were received and which needs to be reinstalled. By not putting 'invalid' temporary routes to rtable, we keep rtable in consistent state, therefore scan no longer needs to be atomic operation and could be splitted to multiple events.
-
- Dec 19, 2019
-
-
Ondřej Zajíček authored
This info is now stored in an internal bmap. Unfortunately, net.flags is still needed for temporary kernel data.
-
- Dec 16, 2019
-
-
Ondřej Zajíček authored
The same information is stored in export_map of kernel protocol.
-
- Nov 26, 2019
-
-
Ondřej Zajíček authored
Use a hierarchical bitmap in a routing table to assign ids to routes, and then use bitmaps (indexed by route id) in channels to keep track whether routes were exported. This avoids unreliable and inefficient re-evaluation of filters for old routes in order to determine whether they were exported.
-
- Oct 09, 2019
-
-
Ondřej Zajíček authored
-
- Aug 14, 2019
-
-
Ondřej Zajíček authored
The patch implements optional internal export table to a channel and hooks it to BGP so it can be used as Adj-RIB-Out. When enabled, all exported (post-filtered) routes are stored there. An export table can be examined using e.g. 'show route export table bgp1.ipv4'.
-
- Jul 02, 2019
-
-
Ondřej Zajíček authored
Nest requires that nexthops are sorted, the kernel protocol have to ensure that for alien routes.
-
- Mar 14, 2019
-
-
Ondřej Zajíček authored
The temporary atttributes are no longer removed by ea_do_prune(), but they are undefined by store_tmp_attrs() protocol hooks. This fixes several bugs where temporary attributes were removed when they should not or not removed when they should be. The flag EAF_TEMP is no longer needed and was removed. Update all protocol make_tmp_attrs() / store_tmp_attrs() hooks to use helper functions and to handle unset attributes properly. Also fix some related bugs like improper handling of empty eattr list.
-
- Mar 06, 2019
-
-
Ondřej Zajíček authored
Keep track of whether OSPF tmpattrs are actually defined for given route (using flags in rte->pflags). That makes them behave more like real eattrs so a protocol can define just a subset of them or they can be undefined by filters. Do not set ospf_metric2 for other than type 2 external OSPF routes and do not set ospf_tag for non-external OSPF routes. That also fixes a bug where internal/inter-area route propagated from one OSPF instance to another is initiated with infinity ospf_metric2. Thanks to Yaroslav Dronskii for the bugreport.
-
- Feb 20, 2019
-
-
Maria Matejka authored
... and consted some declarations.
-
Maria Matejka authored
This is a major change of how the filters are interpreted. If everything works how it should, it should not affect you unless you are hacking the filters themselves. Anyway, this change should make a huge improvement in the filter performance as previous benchmarks showed that our major problem lies in the recursion itself. There are also some changes in nest and protocols, related mostly to spreading const declarations throughout the whole BIRD and also to refactored dynamic attribute definitions. The need of these came up during the whole work and it is too difficult to split out these not-so-related changes.
-
Jan Maria Matejka authored
-
- Dec 18, 2018
-
-
Maria Matějka authored
This protocol is highly experimental and nobody should use it in production. Anyway it may help you getting some insight into what eats so much time in filter processing.
-
- Dec 12, 2018
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
The patch implements optional internal import table to a channel and hooks it to BGP so it can be used as Adj-RIB-In. When enabled, all received (pre-filtered) routes are stored there and import filters can be re-evaluated without explicit route refresh. An import table can be examined using e.g. 'show route import table bgp1.ipv4'.
-
- Dec 06, 2018
-
-
Maria Matejka authored
For local route marking purposes, local custom route attributes may be defined. These attributes are seamlessly stripped after export filter to every real protocol like Kernel, BGP or OSPF, they however pass through pipes. We currently allow at most 256 custom attributes. This should be much faster than currently used bgp communities for marking routes.
-
- Dec 04, 2018
-
-
Jan Maria Matejka authored
Once upon a time, far far away, there were the old Bird developers discussing what direction of route flow shall be called import and export. They decided to say "import to protocol" and "export to table" when speaking about a protocol. When speaking about a table, they spoke about "importing to table" and "exporting to protocol". The latter terminology was adopted in configuration, then also the bird CLI in commit ea2ae6dd started to use it (in year 2009). Now it's 2018 and the terminology is the latter. Import is from protocol to table, export is from table to protocol. Anyway, there was still an import_control hook which executed right before route export. One thing is funny. There are two commits in April 1999 with just two minutes between them. The older announces the final settlement on config terminology, the newer uses the other definition. Let's see their commit messages as the git-log tool shows them (the newer first): commit 9e0e485e Author: Martin Mares <mj@ucw.cz> Date: Mon Apr 5 20:17:59 1999 +0000 Added some new protocol hooks (look at the comments for better explanation): make_tmp_attrs Convert inline attributes to ea_list store_tmp_attrs Convert ea_list to inline attributes import_control Pre-import decisions commit 5056c559 Author: Martin Mares <mj@ucw.cz> Date: Mon Apr 5 20:15:31 1999 +0000 Changed syntax of attaching filters to protocols to hopefully the final version: EXPORT <filter-spec> for outbound routes (i.e., those announced by BIRD to the rest of the world). IMPORT <filter-spec> for inbound routes (i.e., those imported by BIRD from the rest of the world). where <filter-spec> is one of: ALL pass all routes NONE drop all routes FILTER <name> use named filter FILTER { <filter> } use explicitly defined filter For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes the kernel protocol, so that you need to add EXPORT ALL to get the previous configuration of kernel syncer (as usually, see doc/bird.conf.example for a bird.conf example :)). Let's say RIP to this almost 19-years-old inconsistency. For now, if you import a route, it is always from protocol to table. If you export a route, it is always from table to protocol. And they lived happily ever after.
-
- Nov 20, 2018
-
-
Ondřej Zajíček authored
The new MRT protocol is responsible for periodic RIB table dumps in the MRT format (RFC 6396). Also the existing code for BGP4MP MRT dumps is refactored and splitted between BGP to MRT protocols, will be more integrated into MRT in the future. Example: protocol mrt { table "*"; filename "%N_%F_%T.mrt"; period 60; } It is partially based on the old MRT code from Pavel Tvrdik.
-
- Nov 05, 2018
-
-
Ondřej Zajíček authored
Some new route source values did not have associated string in rta_show(), which might caused crash in some cases.
-
- Jul 31, 2018
-
-
Ondřej Zajíček authored
The patch implements long-lived graceful restart for BGP, namely draft-uttaro-idr-bgp-persistence-03.
-
- May 30, 2018
-
-
Jan Maria Matejka authored
This is a fundamental change of an original (1999) concept of route processing inside BIRD. During import/export, there was a temporary ea_list created which was to be used instead of the another one inside the route itself. This led to some confusion, quirks, and strange filter code that handled extended route attributes. Dropping it now. The protocol interface has changed in an uniform way -- the `struct ea_list *attrs` argument has been removed from store_tmp_attrs(), import_control(), rt_notify() and get_route_info().
-
- May 29, 2018
-
-
Jan Maria Matejka authored
This supersedes the EAP_* constants.
-
- Feb 07, 2018
-
-
Ondřej Zajíček authored
-
- Feb 06, 2018
-
-
Ondřej Zajíček authored
Internal table used for route learn was created with non-matching net type for IPv6 kernel proto. Thanks to Toke Hoiland-Jorgensen for the bugreport
-
- Jan 02, 2018
-
-
Ondřej Zajíček authored
-
- Dec 08, 2017
-
-
Ondřej Zajíček authored
ECMP is not enabled on BSD, where it is not supported by BIRD.
-
- Dec 07, 2017
-
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
Several changes and bugfixes in Babel, namely: - Exported route parameters stored directly in route table entry - Exported non-babel routes no longer stored in per-entry route list - Route update, selection and retraction simplified and fixed - Route feasibility is evalualated per update and stored with route - Unreachable route handling fixed, based on hold interval - Added 'show babel routes' command Overall, it fixes some issues with proper propagation of triggered updates, making Babel convergence after topology change almost instant.
-
Ondřej Zajíček authored
Date/time output (e.g. in logs, show commands) can use %f to specify subsecond time. By default, millisecond precision is used in output.
-
- Oct 04, 2017
-
-
The patch implements Default Router Preferences and More-Specific Routes (RFC 4191) for RAdv protocol, allowing to announce router preference and more specific routes in router advertisements. Routes can be exported to RAdv like to regular routing protocols. Some cleanups, bugfixes and other changes done by Ondrej Zajicek.
-
- Sep 12, 2017
-
-
Ondřej Zajíček authored
-
- Jul 04, 2017
-
-
Ondřej Zajíček authored
Add proper support for per-nexthop onlink flag in routes to handle next hop addresses that are not covered by interface IP ranges. Supported by kernel and static protocols. Thanks to Vincent Bernat for the idea.
-
- Apr 25, 2017
-
-
Ondřej Zajíček authored
Some code cleanup, multiple bugfixes, allows to specify also channel for 'show route export'. Interesting how such apparenty simple thing like show route cmd has plenty of ugly corner cases.
-
- Apr 12, 2017
-
-
Jan Moskyto Matejka authored
-