summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-12-12BGP: implement Adj-RIB-InOndrej Zajicek (work)
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'.
2018-12-11Doc: Fix typo in previous LinuxDoc changeOndrej Zajicek (work)
2018-12-11Nest: Forbid adding channels during reconfigurationOndrej Zajicek (work)
When a new channel is found during reconfiguration, do force restart of the protocol, like with any other un-reconfigurable change. The old behavior was that the new channel was added but remained in down state, even if the protocol was up, so a manual protocol restart was often necessary. In the future this should be improved such that a reconfigurable channel addition (e.g. direct) is accepted and channel is started, while an un-reconfigurable addition forces protocol restart.
2018-12-10OSPF: Fix reconfiguration of vlinksOndrej Zajicek (work)
Fix crash during reconfiguration of OSPF config with vlinks. When vlink is reconfigured, a generic iface-reconfiguration code is used, which in one place supposes that it is running on a regular iface. Thanks to Cybertinus for a bugreport.
2018-12-06Merge branch 'mq-custom' into int-newJan Maria Matejka
2018-12-06Custom route attributesMaria Matejka
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.
2018-12-04Doc: Allow overriding $SGML_CATALOG_FILES using distribution specific pathsRobert Scheck
2018-12-04Doc: Add alternative path for SGML ISO entities 8879.1986 to $SGML_CATALOG_FILESRobert Scheck
The existing paths are valid for Debian, alternative paths are necessary for Fedora and RHEL/CentOS.
2018-12-04Unix: Change debugging optionsOndrej Zajicek (work)
The old behavior was that enabling debugging did many nontrivial changes in BIRD behavior. The patch changes it that these changes are generally independent. Compiling with --enable-debug now just enables compile-time debug macros, but do not automatically activate debug mode (-d) nor local mode (-l). Debug mode with output to file (-D) do not force foreground mode (-f), therefore there is no need for backgroud option (-b), which is removed. Also fixes a bug when the default log target in -D mode was stderr instead of given debug file.
2018-12-04Hash: mem_hash doesn't modify the memory, declared constantJan Maria Matejka
2018-12-04Route table max hash size raised to 2^24.Jan Maria Matejka
This is still OK for everybody to fit into RAM and also probably enough to keep a little collision rate for full BGP table.
2018-12-04Changed IPv4 hash function to simple multiplication.Jan Maria Matejka
2018-12-04Terminology cleanup: The import_control hook is now called preexport.Jan Maria Matejka
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 ea2ae6dd0 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 9e0e485e50ea74c4f1c5cb65bdfe6ce819c2cee2 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 5056c559c4eb253a4eee10cf35b694faec5265eb 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.
2018-11-28Nest: Do not hard-reset interface when preferred address is changedOndrej Zajicek (work)
Modify protocols to use preferred address change notification instead on depending on hard-reset of interfaces in that case, and remove hard-reset in that case. This avoids issue when e.g. IPv6 protocol restarts interface when IPv4 preferred address changed (as hard-reset is unavoidable and common for whole iface). The patch also fixes a bug when removing last address does not send preferred address change notification.
2018-11-21Autoconf: Minor cleanupOndrej Zajicek (work)
2018-11-21MRT documentationOndrej Zajicek (work)
2018-11-20The MRT protocolOndrej Zajicek (work)
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.
2018-11-18Unix: Implement log file size limit / log rotationOndrej Zajicek (work)
Allow to specify log file size limit and ensure that log file is rotated to secondary name to avoid exceeding of log size limit. The patch also fixes a bug related to keeping old fds open after reconfiguration and using old fds after 'configure undo'.
2018-11-18Unix: Refactor tracked filesOndrej Zajicek (work)
We need access to resource in order to free it.
2018-11-18Configure: Use standard --runstatedir optionOndrej Zajicek (work)
Newer Autoconf defines --runstatedir option for setting directory for run-time variable data. Use it instead our old --with-runtimedir.
2018-11-05Filter: Make ifname attribute modifiableOndrej Zajicek (work)
Allow to change an interface associated with a route by setting ifname attribute. It will also change the route to a direct one.
2018-11-05Nest: Fix crash in rta_show() for RPKI and Babel routesOndrej Zajicek (work)
Some new route source values did not have associated string in rta_show(), which might caused crash in some cases.
2018-10-26BGP: Fix VRF for listening socketOndrej Zajicek (work)
Listening socket should be bound to specified interface and VRF. Thanks to Alexander Zubkov for the bugreport.
2018-10-25OSPF: Fix some trace messagesOndrej Zajicek (work)
Missing argument in MTU change trace message can crash bird when MTU change happens and trace messages are active. Thanks to Alexander Velkov for the bugreport.
2018-10-25Lib: Force output type in ip4_addr constructorOndrej Zajicek (work)
Fixes type issue when u64 is pushed into it.
2018-10-25Filter: Add support for VPN_RD setsOndrej Zajicek (work)
2018-10-25Filter: Fix minor bug in accessing bgp_pathOndrej Zajicek (work)
Not relevant for regular BGP paths, just for BGP paths added by filters to e.g. static routes.
2018-10-11Fix installation with --disable-clientOndrej Zajicek (work)
The old check assumed that @CLIENT@ does not contain birdc, which is not true in 2.0 branc. Thanks to Thomas Petazzoni for the bugreport and original patch.
2018-10-11Nest: Fix 'show interfaces summary' commandOndrej Zajicek (work)
The command showed interfaces that were removed / in shutdown.
2018-10-01Lib: Add and use ev_new_init()Ondrej Zajicek (work)
2018-10-01BGP: Fix bug in show protocol related to LLGROndrej Zajicek (work)
When channel is not active due to not be negotiated during sessino establishment, the LLGR timer is not allocated, so we should not show it.
2018-09-18No more warnings ...Jan Maria Matejka
no more warnings No more warnings over me And while it is being compiled all the log is black and white Release BIRD now and then let it flee (use the melody of well-known Oh Freedom!)
2018-09-11Conf: Show the line:char position where the syntax error happensJan Maria Matejka
2018-08-28Main: Add -b to force background even in debug modeJan Maria Matejka
2018-08-24Doc: Fix description of 'description'Ondrej Zajicek (work)
Thanks to Clemens Schrimpe for the bugreport.
2018-08-22Lib: recursive printfJan Maria Matejka
Use like this: void func(const char *msg, va_list args) { ... bvsnprintf(buf, len, "file %s, line %d: %V (foo %d, bar %d)", file, line, msg, &args, foo, bar); ... }
2018-08-21DOC: Remove pipe mode referenceOndrej Zajicek (work)
Pipe mode was removed in 2.0, remove reference to it in the documentation. Thanks to Piotr Wydrych for the bugreport.
2018-08-14Bison: A bit more verbose error messages in config.Jan Maria Matejka
2018-08-14Make: Add option to force colors in compiler outputJan Maria Matejka
2018-08-14M4: generate synchronization linesJan Maria Matejka
This also includes Bison version check. Versions before 3.0 don't support them in a reliable way and we don't promise to work with versions older than 2.4.
2018-08-13sysdep/unix/main.c: Remove trailing spacesPavel Tvrdik
2018-08-07Doc: Fix notes related to obsolete optionOndrej Zajicek (work)
Thanks to Julien Dessaux for the report.
2018-07-31BGP: Long-lived graceful restartOndrej Zajicek (work)
The patch implements long-lived graceful restart for BGP, namely draft-uttaro-idr-bgp-persistence-03.
2018-07-28BSD: Use MSG_DONTROUTE for unicast packets on FreeBSDOndrej Zajicek (work)
BSD systems cannot use SO_DONTROUTE, because it does not work properly with multicast packets (perhaps it tries to find iface based on multicast group address). But we can use MSG_DONTROUTE sendmsg() flag for unicast packets. Works on FreeBSD, is ignored on OpenBSD and is broken on NetBSD (i guess due to integrated routing table and ARP table).
2018-07-19RAdv: Fix crash during prefix changeOndrej Zajicek (work)
Thanks to Julian Schuh for the bugreport.
2018-07-19OSPF: Fix crash during route removalOndrej Zajicek (work)
The bug was introduced by an earler patch which removed additional eattr argument to rt_notify hook.
2018-07-06Nest: Fix race condition during reconfiguration, part 2Ondrej Zajicek (work)
If export filter is changed during reconfiguration and a route disappears between reconfiguration and refeed (e.g., if the route is a static route also removed during the reconfiguration), the route is not withdrawn. The issue was fixed for regular channels by an earlier patch. This patch fixes the issue for channels in RA_ACCEPTED mode (first-pass-the-filter), used by BGP with 'secondary' option.
2018-07-03Cleanup some warningsOndrej Zajicek (work)
2018-07-03Nest: Fix race condition during reconfigurationOndrej Zajicek (work)
If export filter is changed during reconfiguration and a route disappears between reconfiguration and refeed (e.g., if the route is a static route also removed during the reconfiguration), the route is not withdrawn. The patch fixes that by adding tx reconfiguration timestamp.
2018-07-01BGP: Use implicit-NULL label when announcing MPLS routes with local next-hopOndrej Zajicek (work)
We currently cannot assing local labels, but we can still be LSP egress router. Therefore when we announce labeled route with local next-hop, we should announce implicit-NULL label instead of rejecting it completely.