summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2025-02-18lib: nb: call child destroy CBs when YANG container is deletedChristian Hopps
Previously the code was only calling the child destroy callbacks if the target deleted node was a non-presence container. We now add a flag to the callback structure to instruct northbound to perform the rescursive delete for code that wishes for this to happen. - Fix wrong relative path lookup in keychain destroy callback Signed-off-by: Christian Hopps <chopps@labn.net> (cherry picked from commit d03ecf4562ef3ade6b7b83bf6c683c4741f395ba)
2025-02-13lib: fix false context information for SRv6 routePhilippe Guibert
The seg6local route dumped by 'show ipv6 route' makes think that the USP flavor is supported, whereas it is not the case. This information is a context information, and for End, the context information should be empty. > # show ipv6 route > [..] > I>* fc00:0:4::/128 [115/0] is directly connected, sr0, seg6local End USP, weight 1, 00:49:01 Fix this by suppressing the USP information from the output. Fixes: e496b4203055 ("bgpd: prefix-sid srv6 l3vpn service tlv") Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com> (cherry picked from commit 658bf0281d99461849453628ddc792ec424d0bd4)
2025-02-11Merge pull request #18102 from FRRouting/mergify/bp/stable/10.2/pr-18060Jafar Al-Gharaibeh
lib: crash handlers must be allowed on threads (backport #18060)
2025-02-11lib: crash handlers must be allowed on threadsDavid Lamparter
Blocking all signals on non-main threads is not the way to go, at least the handlers for SIGSEGV, SIGBUS, SIGILL, SIGABRT and SIGFPE need to run so we get backtraces. Otherwise the process just exits. Signed-off-by: David Lamparter <equinox@opensourcerouting.org> (cherry picked from commit 13a6ac5b4ca8fc08b348f64de64a787982f24250)
2025-02-11lib: clean up nexthop hashing messDavid Lamparter
We were hashing 4 bytes of the address. Even for IPv6 addresses. Oops. The reason this was done was to try to make it faster, but made a complex maze out of everything. Time for a refactor. Signed-off-by: David Lamparter <equinox@opensourcerouting.org> (cherry picked from commit 001fcfa1dd9f7dc2639b4f5c7a52ab59cc425452)
2025-02-11lib: guard against padding garbage in ZAPI readDavid Lamparter
When reading in a nexthop from ZAPI, only set the fields that actually have meaning. While it shouldn't happen to begin with, we can otherwise carry padding garbage into the unused leftover union bytes. Signed-off-by: David Lamparter <equinox@opensourcerouting.org> (cherry picked from commit 4a0e1419a69d07496c7adfb744beecd00e1efef2)
2025-01-09bgpd: fix crash in displaying json orf prefix-listLouis Scalbert
bgpd crashes when there is several entries in the prefix-list. No backtrace is provided because the issue was catched from a code review. Fixes: 856ca177c4 ("Added json formating support to show-...-neighbors-... bgp commands.") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> (cherry picked from commit 8ccf60921b85893d301186a0f8156fb702da379f)
2025-01-09bgpd: fix bgp orf prefix-list json prefixLouis Scalbert
0x<address>FX was displayed instead of the prefix. Fixes: b219dda129 ("lib: Convert usage of strings to %pFX and %pRN") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> (cherry picked from commit b7e843d7e8afe57d3815dbb44e30307654e73711)
2024-12-17lib: Take ge/le into consideration when checking the prefix with the prefix-listDonatas Abraitis
Without the fix: ``` show ip prefix-list test_1 10.20.30.96/27 first-match <no result> show ip prefix-list test_2 192.168.1.2/32 first-match <no result> ``` With the fix: ``` ip prefix-list test_1 seq 10 permit 10.20.30.64/26 le 27 ! end donatas# show ip prefix-list test_1 10.20.30.96/27 seq 10 permit 10.20.30.64/26 le 27 (hit count: 1, refcount: 0) donatas# show ip prefix-list test_1 10.20.30.64/27 seq 10 permit 10.20.30.64/26 le 27 (hit count: 2, refcount: 0) donatas# show ip prefix-list test_1 10.20.30.64/28 donatas# show ip prefix-list test_1 10.20.30.126/26 seq 10 permit 10.20.30.64/26 le 27 (hit count: 3, refcount: 0) donatas# show ip prefix-list test_1 10.20.30.126/30 donatas# ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> (cherry picked from commit dd4c2acc2e871283256f6cea16ede6d2d7f72dfe)
2024-12-04lib,vtysh: Use backoff setsockopt option for freebsdDonald Sharp
Commit: 9112fb367b1ae0168b4e7a81f41c2ca621979199 Introduced the idea of setting the socket buffer send/receive sizes. BSD's in general have the fun issue of not allowing nearly as large as a size as linux. Since the above commit was developed on linux and not run on bsd it was never tested. Modify the codebase to use the backoff setsockopt that we have in the code base and use the returned values to allow us to notice what was set and respond appropriately. Signed-off-by: Donald Sharp <sharpd@nvidia.com> (cherry picked from commit 959dbe27cde21ab212f6566b30865b2da418b4d2)
2024-12-04lib: Allow setsockopt functions to return size setDonald Sharp
When finding a send/receive buffer size that is usable let's report how big we were able to set it. Signed-off-by: Donald Sharp <sharpd@nvidia.com> (cherry picked from commit d5615fd6f84e643f194be8c3e91343b35585eb9c)
2024-12-04lib: Fix session re-establishmentDonald Sharp
Currently if you have this sequence of events: a) BGP starts b) BGP reads cli that has bfd configuration c) BGP attempts to install bfd configuration but fails because zebra is not connected to yet d) BGP connects to zebra e) BGP receives resend bfd code from bfdd f) BGP was not sending down the unsent data to bfd, never causing the bfd session to be established. So effectively bfd was attempting to install but failed and then when it was asked to replay everything it decided that the bfd information for a particular peer was actually installed and does not need to be resent. Modify the code such that the bfd code now tracks failed installation and allows the resend of data to bfdd. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-27lib, zebra: Keep `zebra on-rib-process script` in frr.confDonatas Abraitis
After the change: ``` $ grep on-rib-process /etc/frr/frr.conf zebra on-rib-process script script4 $ systemctl restart frr $ vtysh -c 'show run' | grep on-rib-process zebra on-rib-process script script4 ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> (cherry picked from commit 1fe1f8d87c4ab46ae18536a2418c05ae5fd95185)
2024-10-22Revert "lib: Attach stdout to child only if --log=stdout and stdout FD is a tty"Donald Sharp
This reverts commit 0e3c5e8e5907321b35201f0985c1d3f4a1b0e639. (cherry picked from commit 6a36b9ef49bfce59a7e674df233265da6d275257)
2024-10-11bgpd: Move some non BGP-specific route-map functions to libDonatas Abraitis
They are managed under `frr-route-map`, not under `frr-bgp-route-map`. Fixes: https://github.com/FRRouting/frr/issues/17055 Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> (cherry picked from commit b9a9be492e8dde39a0040bd1140893ccab83c2be)
2024-10-07Merge pull request #17015 from ↵Igor Ryzhov
LabNConsulting/chopps/load-internal-ietf-yang-library lib: add flag to have libyang load internal ietf-yang-library module
2024-10-07lib: add flag to have libyang load internal ietf-yang-library moduleChristian Hopps
Mgmtd makes use of libyang's internal ietf-yang-library module to add support for said module to FRR management. Previously, mgmtd was loading this module explicitly; however, that required that libyang's `ietf-yang-library.yang` module definition file be co-located with FRR's yang files so that it (and ietf-datastore.yang) would be found when searched for by libyang using FRRs search path. This isn't always the case depending on how the user compiles and installs libyang so mgmtd was failing to run in some cases. Instead of doing it the above way we simply tell libyang to load it's internal version of ietf-yang-library when we initialize the libyang context. This required adding a boolean to a couple of the init functions which is why so many files are touched (although all the changes are minimal). Signed-off-by: Christian Hopps <chopps@labn.net>
2024-10-06lib,zebra: remove unused ZEBRA_VRF_UNREGISTERDonna Sharp
Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2024-10-03lib: remove unused bfd definesLouis Scalbert
Remove unused bfd defines Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-10-01lib: nexthop code should use uint16_t for nexthop countingDonald Sharp
It's possible to specify via the cli and configure how many nexthops that are allowed on the system. If you happen to have > 255 then things are about to get interesting otherwise. Let's allow up to 65k nexthops (ha!) Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-09-30lib: fix calloc warning on recent compilerRafael Zalamena
Fix the following compiler warning: ``` lib/elf_py.c: In function _elffile_load_: lib/elf_py.c:1310:34: warning: _calloc_ sizes specified with _sizeof_ in the earlier argument and not in the later argument [-Wcalloc-transposed-args] 1310 | w->sects = calloc(sizeof(PyObject *), w->ehdr->e_shnum); | ^~~~~~~~ lib/elf_py.c:1310:34: note: earlier argument should specify number of elements, later size of each element ``` Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2024-09-24Merge pull request #16909 from donaldsharp/helpJafar Al-Gharaibeh
lib: Help text correction
2024-09-24lib: Removed unused RFP_DEFAULTS_NODEDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-09-24lib, zebra: TABLE_NODE is not usedDonald Sharp
No-one is using this, remove Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-09-24lib: Help text correctionDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-09-24lib: Load built-in Lua functionsDonatas Abraitis
We can't use even `string()` function because built-in functions are not loaded. Testing with: ``` $ cat /etc/frr/scripts/zebra.lua function on_rib_process_dplane_results(ctx) log.warn(string.upper("testas")) return {} end ``` This results to "TESTAS" in the logs. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-09-19Merge pull request #16738 from odivlad/fix-stdout-forkDonatas Abraitis
lib: Attach stdout to child only if --log=stdout and stdout FD is a tty
2024-09-17mgmtd: add ietf-yang-library supportChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-09-17lib: mgmtd: add `changed` and `created` to edit-reply msgChristian Hopps
- This is used for various return values in RESTCONF Signed-off-by: Christian Hopps <chopps@labn.net>
2024-09-17lib: mgmtd: cleanup error value for native messagingChristian Hopps
- Now if positive it's libyang LY_ERR, otherwise it's `-errno` value. Signed-off-by: Christian Hopps <chopps@labn.net>
2024-09-17lib: constify yang_resolve_snode_xpath resultsChristian Hopps
Signed-off-by: Christian Hopps <chopps@labn.net> ang
2024-09-15lib: Include SID structure in seg6local nexthopCarmine Scarpitta
Include SID structure information in seg6local nexthop data structure. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2024-09-10lib: Attach stdout to child only if --log=stdout and stdout FD is a ttyVladislav Odintsov
Prior to this commit stdout of a process started in a daemon mode was attached to a calling process. As a result a calling process hung for infinity. Signed-off-by: Vladislav Odintsov <vlodintsov@k2.cloud>
2024-09-10Merge pull request #15259 from dmytroshytyi-6WIND/nexthop_resolutionRuss White
zebra: add LSP entry to nexthop via recursive (part 2)
2024-09-07lib: fix clang SA warningsChristian Hopps
Also, cleanup some unreachable code in `nb_op_sib_next()`. Signed-off-by: Christian Hopps <chopps@labn.net>
2024-09-01*: Create termtable specific temp memoryDonald Sharp
When trying to track down a MTYPE_TMP memory leak it's harder to search for it when you happen to have some usage of ttable_dump. Let's just give it it's own memory type so that we can avoid confusion in the future. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-29Merge pull request #16664 from mjstapp/igor_debug_simplifyJafar Al-Gharaibeh
*: simplify frrlib debug
2024-08-28Merge pull request #16672 from raja-rajasekar/vty_out_mem_spike_srujanaMark Stapp
lib: Memory spike reduction for sh cmds at scale
2024-08-28lib: Add a helper function to dump Lua stackDonatas Abraitis
Very handy for debugging. In Lua script just use "log.trace(table)": ``` function on_rib_process_dplane_results(ctx) log.trace(ctx.rinfo.zd_ng) end ``` You will get something like: ``` Aug 28 17:04:36 donatas-laptop zebra[3782199]: [GCZ7N-MM9D9] { 1: { type: 2 weight: 1 flags: 5 backup_idx: 0 vrf_id: 0 nh_encap_type: 0 gate: { value: 5.87967e+08 string: "192.168.11.35" } nh_label_type: 0 srte_color: 0 ifindex: 0 backup_num: 0 } 2: { type: 3 weight: 1 flags: 3 backup_idx: 0 vrf_id: 0 nh_encap_type: 0 nh_label_type: 0 srte_color: 0 ifindex: 4 backup_num: 0 } } ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-08-28lib: Start from 1, not 0 when creating Lua tables for nexthopsDonatas Abraitis
Lua technically enumerates arrays from 1, not 0. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-08-27lib: Memory spike reduction for sh cmds at scaleSrujana
The output buffer vty->obuf is a linked list where each element is of 4KB. Currently, when a huge sh command like <show ip route json> is executed on a large scale, all the vty_outs are processed and the entire data is accumulated. After the entire vty execution, vtysh_flush proceeses and puts this data in the socket (131KB at a time). Problem here is the memory spike for such heavy duty show commands. The fix here is to chunkify the output on VTY shell by flushing it intermediately for every 128 KB of output accumulated and free the memory allocated for the buffer data. This way, we achieve ~25-30% reduction in the memory spike. Fixes: #16498 Note: This is a continuation of MR #16498 Signed-off-by: Srujana <skanchisamud@nvidia.com> Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
2024-08-27lib: common debug status outputIgor Ryzhov
Implement common code for debug status output and remove daemon-specific code that is duplicated everywhere. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-08-27lib: common debug config outputIgor Ryzhov
Implement common code for debug config output and remove daemon-specific code that is duplicated everywhere. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-08-27lib: rework debug initIgor Ryzhov
The debug library allows to register a `debug_set_all` callback which should enable all debugs in a daemon. This callback is implemented exactly the same in each daemon. Instead of duplicating the code, rework the lib to allow registration of each debug type, and implement the common code only once in the lib. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-08-23Merge pull request #16609 from donaldsharp/singleton_no_weightMark Stapp
Reduce the number of Singleton objects when using weight for NHG's
2024-08-23Merge pull request #16633 from Jafaral/fix-version-buildDonald Sharp
config: fix missing case when reporting version 'configured with'
2024-08-22config: fix missing case when reporting version 'configured with'Jafar Al-Gharaibeh
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2024-08-22lib: Ensure SA that root cannot be NULLDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-22lib, zebra: Modify nexthop_cmp to allow you to use weight or notDonald Sharp
Currently nexthop weight is a discriminator on whether or not a nexthop matches. There is a need to no use the weight as part of this comparison function so let's add a boolean to allow us to say use this or not. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-18Merge pull request #16602 from LabNConsulting/chopps/fix-warningsDonald Sharp
mgmtd: fix a couple compilation warnings.