summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-02-20Filter refactoring: Passing the resulting struct f_val as a pointer.Jan Maria Matejka
This also drops the multiplexing of errors with the f_val itself together with the T_RETURN f_val type flag.
2019-02-20Filter refactoring: Moved filter instruction definition to a separate fileJan Maria Matejka
2019-02-20Filter refactoring: Moved the bitfield bit position formula to route.hJan Maria Matejka
2019-02-20Filter refactoring: Moved the interpret macros inside the blockJan Maria Matejka
2019-02-20Configure: Don't check for implicit fallthrough unless when debugging.Jan Maria Matejka
2019-02-20Filter: Converted static global variables to a filter_state struct.Jan Maria Matejka
The static filter state was messy and blocked the planned parallel execution of filters. Anyway, this will be also slower as the state structure must be passed almost everywhere with us.
2019-02-19HTML are no longer generated in srcdirOndrej Zajicek (work)
2019-02-19Doc: Detect SP/OpenSP automaticallyOndrej Zajicek (work)
2019-02-19Nest: Prevent withdraws from propagation back to source protocol (for ↵Ondrej Zajicek (work)
accepted mode) Update for one of previous patches, handles the the issue for first-accepted mode of route propagation.
2019-02-17OSPF: Reset LSAs during area type changeOndrej Zajicek (work)
When area is reconfigured to a different type, we need to flush LSAs as they may not be valid (e.g. NSSA-LSA for non-NSSA area). Also, when we have have just one OSPF area and that changes type, we could restart OSPF as there is no state to keep anyway. That solves issue with different handling of external routes exported to OSPF based of main area type.
2019-02-13OSPF: Basic support for DN-bit handling (RFC 4576)Ondrej Zajicek (work)
External LSAs originated by OSPF routers with VPN-PE behavior enabled are marked by DN flag and they are ignored by other OSPF routers with VPN-PE enabled.
2019-02-09OSPF: Do not originate Router-Information LSAOndrej Zajicek (work)
As we do not have much usage for it yet.
2019-02-09Merge remote-tracking branch 'origin/mq-opt'Ondrej Zajicek (work)
2019-02-05Nest: Improve export counter handlingOndrej Zajicek (work)
One of previous workarounds for phantom route avoidance breaks export counters by expanding sending of spurious withdraws, which are send when we are not sure whether we have advertised that routes in the past. If not, then export counter is decreased, but it was not increased before, so it overflows under zero. The patch fixes that by sendung spurious withdraws, but not counting them on export counter. That may lead to error in the other direction, but that happens only as a race condition (i.e., in normal operation filters return proper values about old route export state).
2019-02-05Nest: Report preferred counters also when 'import keep filtered' is enabledOndrej Zajicek (work)
Thanks to Michal Nowak for reporting the issue.
2019-02-03OSPF: Send direct acknowledgements as unicastOndrej Zajicek (work)
Direct acknowledgements should be send as unicast to a corresponding neighbor. Only delayed acks should be send as multicast to all/designated routers.
2019-02-03OSPF: Reject duplicate DBDES packets after dead intervalOndrej Zajicek (work)
Master may free last DBDES packet immediately. Slave must wait dead interval before freeing last DBDES packet and then reject duplicate DBDES packets with SeqNumberMismatch.
2019-02-03OSPF: DD seqnum should be initialized only for first attemptsOndrej Zajicek (work)
After SeqNumberMismatch/BadLSReq, we should continue with the old seqnum++. The old code tries to do that by n->adj, but it was set nowhere.
2019-02-03OSPF: Reject DBDES packets with non-matching MTUOndrej Zajicek (work)
As it is specified in RFC 2328. The old code just provided warning.
2019-02-02Nest: Reestablish preferred countersOndrej Zajicek (work)
2019-02-01Perf: Added forgotten all-protocol optionsMaria Matejka
2019-01-31Nest: FIB rehash values tweaked for better performanceMaria Matejka
2019-01-31Perf: Prune the table after every loop to have clean state.Maria Matejka
2019-01-31Perf: Write also BIRD version to have all the needed data in the logfileMaria Matejka
2019-01-31Nest: Don't lookup net in table before filters are run.Maria Matejka
Using dummy net instead. This should help with performance on rejected routes.
2019-01-30Nest: Prevent withdraws from propagation back to source protocolOndrej Zajicek (work)
The earlier fix loosen conditions for not running filters on old route when deciding about route propagation to a protocol to avoid issues with ghost routes in some race conditions. Unfortunately, the fix also caused back-propagation of withdraws. For regular updates, back-propagation is prevented in import_control hooks, but these are not called on withdraws. For them, import_control hooks are called on old routes instead, changing (old, NULL) notification to (NULL, NULL), which is ignored. By not calling export processing in some cases, the withdraw is not ignored and is back-propagated. This patch fixes that by contract conditions so the earlier fix is not applied to back-propagated updates.
2019-01-26Doc: Add documentation for OSPF retransmit delay optionOndrej Zajicek (work)
Thanks to Igor Podlesny for notification.
2019-01-26Doc: Remove doc for already removed optionOndrej Zajicek (work)
2019-01-26BGP: Cleanup channels when going downOndrej Zajicek (work)
When going up, uncleaned old channel state may trigger unexpected conditions crashing bird.
2019-01-24OSPF: Opaque LSAs and Router Information LSAOndrej Zajicek (work)
Add support for OSPFv2 Opaque LSAs (RFC 5250) and for Router Information LSA (RFC 7770). The second part is here mainly for testing opaque LSAs.
2019-01-17Nest: Don't make tmp_attr before preexport is calledJan Maria Matejka
2019-01-05NEWS and version updatev2.0.3Ondrej Zajicek (work)
2019-01-04Unix: Remove removed option from helpOndrej Zajicek (work)
Also includes minor cleanup of help.
2019-01-04BSD: Fix TCP-MD5 code on current FreeBSD kernelsOndrej Zajicek (work)
Current FreeBSD kernels require SA records for both directions. Thanks to Joseph Mulloy and Andrey V. Elsukov for reporting and solving the issue.
2019-01-03Doc: README and INSTALL updateOndrej Zajicek (work)
Minor cleanups, updates and clarifications. Also removes (incomplete and well-known) build steps from README, as they are better described in INSTALL.
2019-01-02BGP: Better dispatch of incoming connectionsOndrej Zajicek (work)
Since v2 we have multiple listening BGP sockets, and each BGP protocol has associated one of them. Use listening socket that accepted the incoming connection as a key in the dispatch process so only BGP protocols assocaited with that listening socket can be selected. This is necesary for proper dispatch when VRFs are used.
2019-01-02BGP: Postpone setting link_addrOndrej Zajicek (work)
It may happen that the LLv6 address for given iface is not defined during BGP start, so we postpone the check to the the session establishment.
2018-12-28KRT: Fix debug messages in netlink codeArthur Gautier
2018-12-18IO: Workaround for broken FreeBSD behaviorOndrej Zajicek (work)
FreeBSD silently changes TTL to 1 when MSG_DONTROUTE is used, even when it is explicitly set to another value. That breaks TTL security sockets, including BFD which always uses TTL 255. Bad FreeBSD!
2018-12-18Perf: Protocol to measure BIRD performance internallyMaria Matějka
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.
2018-12-18Debug: support for -gdwarf-4 is not available everywhereJan Maria Matejka
2018-12-18Nest: Handle labels_orig correctly in attribute cacheOndrej Zajicek (work)
2018-12-17OSPF: Fix wrong LSA collisions detectionOndrej Zajicek (work)
In some circumstances (old LSA flushed but not acknowledged and not removed) origination of a new LSA may wrongly triggers LSA collision code. The patch fixes that. Thanks to Asbjorn Mikkelsen for the bugreport and @mdelagueronniere for the original patch.
2018-12-16BGP: Extend 'next hop keep' and 'next hop self' optionsOndrej Zajicek (work)
Extend 'next hop keep' and 'next hop self' options to have boolean values (enabled / disabled) and also values 'ibgp'/ 'ebgp' to restrict it to routes received from IBGP / EBGP. This allows to have it enabled by default in some cases, matches features of other implementations, and allows to handle some strange cases like EBGP border router with 'next hop self' also doing IBGP route reflecting. Change default of 'next hop keep' to enabled for route servers, and 'ibgp' for route reflectors. Update documentation for these options.
2018-12-16Nest: Fix handling of ECMP next hop flagsOndrej Zajicek (work)
Flag field was not copied when next hop was cached.
2018-12-16Nest: fix bug in previous patches related to channel reconfigurationOndrej Zajicek (work)
The patch d506263d... blocked adding channel during reconfiguration, that broke protocols which use the same functiona also during init. This patch fixes that.
2018-12-16BGP: Better handling of non-matching AFI in nexthopsOndrej Zajicek (work)
2018-12-14Doc: Rename code documentation files back to DocOndrej Zajicek (work)
2018-12-14Doc: Move root of code documentation to doc dirOndrej Zajicek (work)
It reduces clutter in root and also avoid collision with doc dir on case-insensitive filesystems when name back to Doc.
2018-12-12BGP: Do not prepend ASN in export from non-RS EBGP to RS EBGPOndrej Zajicek (work)
When route is exported to regular EBGP, local ASN should be prepended to AS_PATH. When route is propagated by route server (between RS-marked EBGP peers), it should not change AS_PATH. Question is what to do in other cases (from non-RS EBGP, IBGP, or locally originated to RS EBGP). In 1.6.x, we did not prepend ASN in non-RS EBGP or IBGP to RS EBGP, but we prepended in local to RS EBGP. In 2.0.x, we changed that so only RS-EBGP to RS-EBGP is not prepended. We received some negative responses (thanks to heisenbug and Alexander Zubkov), we decided to change it back. One reason is that it is simple to modify the AS_PATH by filters, but not possible to un-modify changes done by BGP itself. Also, as 1.6.x behavior was not really consistent, the final behavior is that ASN is never prepended when exported to RS EBGP, like to IBGP. Note that i do not express an opinion about whether such configurations are even reasonable.