summaryrefslogtreecommitdiff
path: root/proto/bfd
AgeCommit message (Collapse)Author
2023-04-17IO: added a specific loop pickup group for BFD; to be done better in futureMaria Matejka
2023-04-06BFD: fixed a request pickup race conditionMaria Matejka
When several BGPs requested a BFD session in short time, chances were that the second BGP would file a request while the pickup routine was still running and it would get enqueued into the waiting list instead of being picked up. Fixed this by enforcing pickup loop restart when new requests got added, and also by atomically moving the unpicked requests to a temporary list to announce admin down before actually being added into the wait list.
2023-04-04Sockets: Unified API for main and other loopsMaria Matejka
Now sk_open() requires an explicit IO loop to open the socket in. Also specific functions for socket RX pause / resume are added to allow for BGP corking. And last but not least, socket reloop is now synchronous to resolve weird cases of the target loop stopping before actually picking up the relooped socket. Now the caller must ensure that both loops are locked while relooping, and this way all sockets always have their respective loop.
2023-04-04Resource dumps also write out block addressesMaria Matejka
2023-04-04BFD notifications respect protocol loop settingsMaria Matejka
2023-02-07Merge commit '0bb04d5390f21b0c96fc4894ba5d5510c541f0ef' into HEADMaria Matejka
2023-02-02Interface updates are asynchronousMaria Matejka
Instead of propagating interface updates as they are loaded from kernel, they are enqueued and all the notifications are called from a protocol-specific event. This change allows to break the locking loop between protocols and interfaces. Anyway, this change is based on v2 branch to keep the changes between v2 and v3 smaller.
2023-01-25VRF setting reduced to one argument, using default dummy iface for default vrfMaria Matejka
2023-01-24Merge v2.0.12 into thread-nextMaria Matejka
2023-01-22BFD: Improve incoming packet matchingOndrej Zajicek
For active sessions, ignore received packets with zero local id and mismatched remote id. That forces a session timeout instead of an immediate session restart. It makes BFD sessions more resilient to packet spoofing. Thanks to André Grüneberg for the suggestion.
2022-09-20Pipe kick-and-drain packed into a neat structure and functions.Maria Matejka
2022-09-20BFD: The old pipe notification mechanism replaced by eventsMaria Matejka
2022-09-20Merge commit 'adf37d8e' into thread-nextMaria Matejka
2022-09-09Merge commit 'd2c1036a42881d413ec97203ede92a69f8cd218f' into thread-nextMaria Matejka
2022-09-08Table access is now locked.Maria Matejka
2022-08-18Simplified the protocol hookup code in MakefilesMaria Matejka
2022-07-18Merge commit '94eb0858' into thread-nextMaria Matejka
2022-07-18Merge commit 'a4451535' into thread-nextMaria Matejka
2022-05-30Merge commit '17f91f9e6e70f7e3f29502e854823c0d48571eaa' into haugesundMaria Matejka
2022-05-30Merge commit 'ef6a903e6f44b467f9606018446095521ad01ef1' into haugesundMaria Matejka
2022-05-30Merge commit '692055e3df6cc9f0d428d3b0dd8cdd8e825eb6f4' into haugesund-to-2.0Maria Matejka
2022-05-04Explicit definition structures of route attributesMaria Matejka
Changes in internal API: * Every route attribute must be defined as struct ea_class somewhere. * Registration of route attributes known at startup must be done by ea_register_init() from protocol build functions. * Every attribute has now its symbol registered in a global symbol table defined as SYM_ATTRIBUTE * All attribute ID's are dynamically allocated. * Attribute value custom formatting hook is defined in the ea_class. * Attribute names are the same for display and filters, always prefixed by protocol name. Also added some unit testing code for filters with route attributes.
2022-05-04Splitting route data structures out to libMaria Matejka
2022-04-07BFD: Add 'strict bind' optionOndrej Zajicek (work)
Add BFD protocol option 'strict bind' to use separate listening socket for each BFD interface bound to its address instead of using shared listening sockets.
2022-04-06Protocols have their own explicit init routinesMaria Matejka
2022-04-06Slab allocator can free the blocks without knowing the parent structureMaria Matejka
2022-03-02Introducing an universal temporary linpool flushed after every taskMaria Matejka
2021-11-22VRF setting reduced to one argument, using default dummy iface for default vrfMaria Matejka
2021-11-22Converting the former BFD loop to a universal IO loop and protocol loop.Maria Matejka
There is a simple universal IO loop, taking care of events, timers and sockets. Primarily, one instance of a protocol should use exactly one IO loop to do all its work, as is now done in BFD. Contrary to previous versions, the loop is now launched and cleaned by the nest/proto.c code, allowing for a protocol to just request its own loop by setting the loop's lock order in config higher than the_bird. It is not supported nor checked if any protocol changed the requested lock order in reconfigure. No protocol should do it at all.
2021-11-22Unified time for whole BIRDMaria Matejka
In previous versions, every thread used its own time structures, effectively leading to different time in every thread and strange logging messages. The time processing code now uses global atomic variables to keep current time available for fast concurrent reading and safe updates.
2021-11-22Moved BFD IO loop out of BFD as we want to use it as socket-io coroutineMaria Matejka
2021-11-22Dropping the POSIX thread-local variables in favor of much easier-to-use C11 ↵Maria Matejka
thread-local variables
2021-01-10BFD: Dispatch sessions also by interface indexOndrej Zajicek (work)
Direct BFD sessions needs to be dispatched not only by IP addresses, but also by interfaces, in order to avoid collisions between neighbors with the same IPv6 link-local addresses. Extend BFD session hash_ip key by interface index to handle that. Use 0 for multihop sessions. Thanks to Sebastian Hahn for the original patch.
2020-11-24Some minor sl_allocz() cleanupsOndrej Zajicek (work)
2020-11-12BFD: Fix superfluous reconfiguration of sessionsOndrej Zajicek (work)
2020-11-08BFD: Allow per-request session optionsOndrej Zajicek (work)
BFD session options are configured per interface in BFD protocol. This patch allows to specify them also per-request in protocols requesting sessions (currently limited to BGP).
2020-06-28Show info from multiple protocols when protocol is not specifiedOndrej Zajicek (work)
Most commands like 'show ospf neighbors' fail when protocol is not specified and there are multiple instances of given protocol type. This is annoying in BIRD 2, as many protocols have IPv4 and IPv6 instances. The patch changes that by showing output from all protocol instances of appropriate type. Note that the patch also removes terminating cli_msg() call from these commands and moves it to the common iterating code.
2020-01-28BFD: Option to specify which class of BFD sessions are acceptedOndrej Zajicek (work)
Allows to configure IPv4/IPv6-only or direct/multihop-only BFD protocol instances.
2019-09-30BFD: Fix reconfiguration of neighborsOndrej Zajicek (work)
The bfd_reconfigure_neighbors() returned after first reconfigured neighbor instead of continuing with the next one. Thanks to Winston Chen for the bugreport and a patch.
2019-07-25BFD: Fix formatting of 'show bfd sessions'Ondrej Zajicek (work)
The formatting was broken due to longer date in 'since' column.
2019-07-24Merge remote-tracking branch 'origin/mq-filter-stack'Ondrej Zajicek (work)
2019-07-24Nest: VRF of protocol can be explicitly specified as 'default'Ondrej Zajicek (work)
Protocol can have specified VRF, in such case it is restricted to a set of ifaces associated with the VRF, otherwise it can use all interfaces. The patch allows to specify VRF as 'default', in which case it is restricted to a set of iface not associated with any VRF.
2019-07-17BFD: Support for VRFsOndrej Zajicek (work)
Allow multiple BFD instances in separate VRFs, dispatch BFD requests according to VRFs. Thanks to Alexander Zubkov for notice and patches.
2019-02-20Filter + Config: Fix bugs, tests and split symbols by typeMaria Matejka
2018-12-14Doc: Rename code documentation files back to DocOndrej Zajicek (work)
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-06-27Nest: Neighbor cache cleanupsOndrej Zajicek (work)
Simplify neighbor cache code, fix several minor bugs, and improve handling of ONLINK flag.
2018-06-26Doc: renamed progdoc files Doc -> progdoc to fix collision with doc/ folder ↵Maria Matejka
on case-insensitive filesystems
2018-06-26Config: Dropping CF_ADDTO.Jan Maria Matejka
2018-05-29Protocol: Introducing an enum protocol_classJan Maria Matejka
This supersedes the EAP_* constants.