summaryrefslogtreecommitdiff
path: root/ripd/rip_main.c
AgeCommit message (Collapse)Author
2025-01-14lib: northbound/mgmtd: add backend model supportChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-05-10*: Modify agentx to be allowed to be calledDonald Sharp
If you had a situation where an operator turned on ospfd with snmp but not ospf6d and agentx was configured then you get into a situation where ospf6d would complain that the config for agentx did not exist. Let's modify the code to allow this situation to happen. Fixes: #15896 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-03-04lib: add keychain northbound supportChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-27*: fix `frr_daemon_info` indentationDavid Lamparter
clang-format doesn't understand FRR_DAEMON_INFO is a long macro where laying out items semantically makes sense. (Also use only one `FRR_DAEMON_INFO(` in isisd so editors don't get confused with the mismatching `( ( )`. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-01-26ripd: ripd convert to mgmtdChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-11-21*: Cleanup keychain on shutdownDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-11-13ripd: Cleanup memory on shutdownDonald Sharp
a) routemap data was not being cleaned up b) rip data structure was not being cleaned up Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-05-18ripd: Make sure we do not overuse higher values for ECMP countDonatas Abraitis
Use a minimum value of a CLI version and a value of Zebra capabilities. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-04-19ripd: support BFD integrationRenato Westphal
Implement RIP peer monitoring with BFD. RFC 5882 Generic Application of Bidirectional Forwarding Detection (BFD), Section 10.3 Interactions with RIP. Co-authored-by: Renato Westphal <renato@opensourcerouting.org> Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2023-03-24*: Convert event.h to frrevent.hDonald Sharp
We should probably prevent any type of namespace collision with something else. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24*: Convert `struct event_master` to `struct event_loop`Donald Sharp
Let's find a better name for it. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24*: Convert struct thread_master to struct event_master and it's ilkDonald Sharp
Convert the `struct thread_master` to `struct event_master` across the code base. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24*: Rename thread.[ch] to event.[ch]Donald Sharp
This is a first in a series of commits, whose goal is to rename the thread system in FRR to an event system. There is a continual problem where people are confusing `struct thread` with a true pthread. In reality, our entire thread.c is an event system. In this commit rename the thread.[ch] files to event.[ch]. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-02-09*: auto-convert to SPDX License IDsDavid Lamparter
Done with a combination of regex'ing and banging my head against a wall. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-11-11*: Convert quagga_signal_X to frr_signal_XDonald Sharp
Naming functions/data structures more appropriately for the project we are actually in. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-08-25*: Drop `break` after using frr_help_exit() in switch/caseDonatas Abraitis
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-03-17*: require semicolon after FRR_DAEMON_INFO & co.David Lamparter
... again ... Signed-off-by: David Lamparter <equinox@diac24.net>
2020-06-05*: add filter northbound supportRafael Zalamena
Allow all daemons to work with filter northbound. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-04-16*: include vrf northbound module in initChirag Shah
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-02-10Merge pull request #5763 from ton31337/fix/return_without_parentRenato Westphal
*: Remove parenthesis on return for constants
2020-02-09*: Remove parenthesis on return for constantsDonatas Abraitis
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-04*: fix route map integrationRafael Zalamena
Add the appropriated code to bootstrap route map northbound for all daemons. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-12-06lib: rename memory_vty.c to lib_vty.cDavid Lamparter
And memory_init() to lib_cmd_init(). Signed-off-by: David Lamparter <equinox@diac24.net>
2019-11-30*: make frr_yang_module_info constDavid Lamparter
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-10-29ripd: split northbound callbacks into multiple filesRenato Westphal
Rearrange the ripd northbound callbacks as following: * rip_nb.h: prototypes of all northbound callbacks. * rip_nb.c: definition of all northbound callbacks and their associated YANG data paths. * rip_nb_config.c: implementation of YANG configuration nodes. * rip_nb_state.c: implementation of YANG state nodes. * rip_nb_rpcs.c: implementation of YANG RPCs. * rip_nb_notifications.c: implementation of YANG notifications. This should help to keep to code more organized and easier to maintain. No behavior changes intended. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-05-22bgpd, ripd, ripngd: remove deprecated -r optionEmanuele Di Pascale
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-03-29Merge remote-tracking branch 'frr/master' into rip-vrfRenato Westphal
Merge commit to solve a bunch of conflicts with other PRs that were merged in the previous weeks. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-18ripd: add VRF supportRenato Westphal
* Turn the "instance" YANG presence-container into a YANG list keyed by the new "vrf" leaf. This is a backward incompatible change but this should be ok for now. * RIP VRF instances can be configured even when the corresponding VRF doesn't exist. And a RIP VRF instance isn't deleted when the corresponding VRF is deleted. For this to work, implement the rip_instance_enable() and rip_instance_disable() functions that are called to enable/disable RIP routing instances when necessary. A RIP routing instance can be enabled only when the corresponding VRF is enabled (this information comes from zebra and depends on the underlying VRF backend). Routing instances are stored in the new rip_instances rb-tree (global variable). * Add a vrf pointer to the rip structure instead of storing vrf_id only. This is much more convenient than using vrf_lookup_by_id() every time we need to get the vrf pointer from the VRF ID. The rip->vrf pointer is updated whenever the VRF enable/disable hooks are called. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-18ripd: remove the rip global variableRenato Westphal
This is the last step to make ripd ready for multi-instance support. Remove the rip global variable and add a "rip" parameter to all functions that need to know the RIP instance they are working on. On some functions, retrieve the RIP instance from the interface variable when it exists (this assumes interfaces can pertain to one RIP instance at most, which is ok for VRF support). In preparation for the next commits (VRF support), add a "vrd_id" member to the rip structure, and use rip->vrf_id instead of VRF_DEFAULT wherever possible. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-18ripd: move "peer_list" to the rip structureRenato Westphal
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-18ripd: simplify cleaning up of routing instanceRenato Westphal
* Call rip_clean() only when RIP is configured, this way we can remove one indentation level from this function. * rip_redistribute_clean() is only called on shutdown, so there's no need to call rip_redistribute_withdraw() there since the RIP table is already cleaned up elsewhere. * There's no need to clean up the "rip->neighbor" nodes manually before calling route_table_finish(). * Deallocate the rip structure only at the end of the function. This prepares the ground for the next commits where all global variables will be moved to the rip structure. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26*: remove the configuration lock from all daemonsRenato Westphal
A while ago all FRR configuration commands were converted to use the QOBJ infrastructure to keep track of configuration objects. This means the configuration lock isn't necessary anymore because the QOBJ code detects when someones tries to edit a configuration object that was deleted and react accordingly (log an error and abort the command). The possibility of accessing dangling pointers doesn't exist anymore since vty->index was removed. Summary of the changes: * remove the configuration lock and the vty_config_lockless() function. * rename vty_config_unlock() to vty_config_exit() since we need to clean up a few things when exiting from the configuration mode. * rename vty_config_lock() to vty_config_enter() to remove code duplication that existed between the three different "configuration" commands (terminal, private and exclusive). Configuration commands converted to the new northbound model don't need the configuration lock either since the northbound API also detects when someone tries to edit a configuration object that doesn't exist anymore. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27ripd: remove vty configuration lockRenato Westphal
The vty configuration lock is used to prevent inconsistencies when multiple users are editing the configuration at the same time. The pointer stored in vty->index might become invalid if the associated configuration object is removed by another user in another CLI session. Commands converted to the new northbound model don't use vty->index, but vty->xpath_index and the vty->xpath array. The nb_cli_cfg_change() function uses the VTY_CHECK_XPATH macro to check if the configuration object being edited still exists and returns an error if it doesn't. Now that all ripd commands were converted to the new northbound model, remove the ripd vty lock because it's not necessary anymore. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27ripd: fix SIGHUP handlingRenato Westphal
We can now leverage the new northbound API to perform a full configuration reload in ripd without the need for external help (i.e. frr-reload.py). When vty_read_config() is called with the 'config' parameter set to NULL, it performs a new configuration transaction where the running configuration is *replaced* by the provided configuration file. With that said, we don't need to do anything other than calling this function in the SIGHUP handler of all FRR daemons. If a daemon hasn't been converted to the new northbound model, vty_read_config() will simply *merge* the configuration file into the running configuration. The calls to rip_clean() and rip_reset() in the SIGUP handler were changing configuration variables directly, bypassing the northbound layer. Configuration variables should be changed only by the northbound callbacks, and failure to respect that inevitably leads to inconsistencies and crashes. Fix this. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27yang, ripd: add 'frr-ripd.yang' and associated stub callbacksRenato Westphal
Introduce frr-ripd.yang, which defines a model for managing the FRR ripd daemon. Also add frr-route-types.yang which defines typedefs for FRR route types. Update the 'frr_yang_module_info' array of ripd with the new 'frr-ripd' module. Add two new files (rip_cli.[ch]) which should contain all ripd commands converted to the new northbound model. Centralizing all commands in a single place will facilitate the process of moving the CLI to a separate program in the future. Add automatically generated stub callbacks in rip_northbound.c. These callbacks will be implemented gradually in the following commits. Add example JSON/XML ripd configurations in yang/examples/. Add the confd.frr-ripd.yang YANG module with annotations specific to the ConfD daemon. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27yang, lib: add 'frr-interface.yang' and associated stub callbacksRenato Westphal
Introduce frr-interface.yang, which defines a model for managing FRR interfaces. Update the 'frr_yang_module_info' array of all daemons that will implement this module. Add automatically generated stub callbacks in if.c. These callbacks will be implemented in the following commit. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27*: add empty array of YANG modulesRenato Westphal
FRR_DAEMON_INFO should now contain an array of 'frr_yang_module_info' structures describing the YANG modules implemented by the daemon. This array will be used by frr_init() function to load all YANG modules and initialize the northbound callbacks during the daemon initialization. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-10-27lib: introduce new northbound APIRenato Westphal
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-08-28*: add a vrf update hook to be informed of the vrf namePhilippe Guibert
The Vrf aliases can be known with a specific hook. That hook will then, from zebra propagate the information to the relevant zapi clients. The registration hook function is the same for all daemons. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-08-14ripd: Add RIP_ERR_XXX to move from zlog_err to zlog_ferrDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-21*: remove -r from daemons except zebraQuentin Young
This option is only implemented by 4 daemons: - BGPD - RIPD - RIPNGD - Zebra Manpages and documentation say that the option causes routes to not be uninstalled from zebra when the daemon terminates. This is true for RIPD and RIPNGD. This is not true for BGPD; in that daemon it only prevents transmission of Cease / Peer Unconfig NOTIFICATION messages to peers. Moreover, when any daemon disconnects from Zebra, all of its routes are uninstalled from Zebra and the kernel regardless of this option, rendering the option largely vestigial. It is still useful in Zebra, where it prevents all routes from being uninstalled when Zebra shuts down, so it is left there. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-09-12*: make all daemons call frr_fini() on exitRenato Westphal
This allow us to find real leaks more easily with tools like valgrind. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-07-17*: reindentreindent-master-afterwhitespace / reindent
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'` Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-06-30ripd: Fix zclient cleanup on shutdownDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-05-17Merge pull request #537 from donaldsharp/vrf_stuffDavid Lamparter
Vrf stuff
2017-05-15*: Consolidate vrf_hooks into vrf_initDonald Sharp
We only needed to add/change the vrf callbacks when we initialize the vrf subsystem. As such it is not necessary to handle the callbacks in any other way than through the init function. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-05-15*: make consistent & update GPLv2 file headersDavid Lamparter
The FSF's address changed, and we had a mixture of comment styles for the GPL file header. (The style with * at the beginning won out with 580 to 141 in existing files.) Note: I've intentionally left intact other "variations" of the copyright header, e.g. whether it says "Zebra", "Quagga", "FRR", or nothing. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-03-08lib: remove remaining struct zlog * argsDavid Lamparter
These don't serve any purpose either. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-03-08*: add frr_run()David Lamparter
Contains the fetch-and-run-thread logic, and vty startup (which is the last thing happening before entering the main loop). Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-03-08*: add frr_config_fork()David Lamparter
Centralise read_config/daemonize/dryrun/pidfile/vty_serv into libfrr. This also makes multi-instance pid/config handling available as part of the library. It's only wired up in ospfd, but the code is in lib/. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>