summaryrefslogtreecommitdiffstats
path: root/ldpd/control.c (unfollow)
Commit message (Collapse)AuthorFilesLines
3 daystests: fix missed grpc test requirement for frr-backend additionChristian Hopps1-7/+2
Signed-off-by: Christian Hopps <chopps@labn.net>
3 daystests: use global -w option instead of per-daemon -nIgor Ryzhov6-16/+20
Add ability to enable -w option for all daemons in a topotest and use this option instead of the deprecated -n. Signed-off-by: Igor Ryzhov <idryzhov@gmail.com>
3 dayslib: introduce global -w option for VRF netns backendIgor Ryzhov6-5/+37
Current -n option is only for zebra and mgmtd. All other daemons receive the VRF backend configuration from zebra upon connection to it. This leads to a potential race condition - daemons need to know the backend before they start reading their config, but they can be not connected to zebra yet at this point. As the VRF backend cannot change during runtime, let's introduce a new global -w option for setting netns backend, to make sure that all daemons know their VRF backend immediately after start. The reason for introducing a new option instead of making -n global is that ospfd already uses -n for another purposes. Signed-off-by: Igor Ryzhov <idryzhov@gmail.com>
3 dayslib, zebra: move ns context intialization to zebraIgor Ryzhov2-9/+8
vrf->ns_ctxt is only ever used in zebra, so move its initialization to zebra's callback. Ideally this pointer shouldn't even be a part of library's vrf struct, and moved to zebra-specific struct, but this is the first step. Signed-off-by: Igor Ryzhov <idryzhov@gmail.com>
3 dayslib: remove VRF_BACKEND_UNKNOWNIgor Ryzhov4-11/+1
The backend type cannot be unknown. It is configured to VRF_LITE by default in zebra anyway, so just init to VRF_LITE in the lib and remove the UNKNOWN type. Signed-off-by: Igor Ryzhov <idryzhov@gmail.com>
4 dayszebra: On Nexthop install failure don't set Installation failedDonald Sharp1-1/+7
Currently FRR when installing a nexthop group, the installation can fail. The assumption with the code was that the current nexthop group was not already installed. This leaves a problem state where if the users of the nexthop group are removed, the nexthop group will be removed possibly leaving a orphaned nexthop group in the data plane. FRR on a nexthop group installation does not actually know the status of the nexthop group in the kernel. It's possible that a earlier version of the nexthop group is left in play. It's possible that there is no nexthop group in the kernel at all. Leaving the Installed flag alone allows upon Zebra removing the nexthop group when it is removed from zebra. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
4 daysbgpd: Handle ENHE capability via dynamic capabilityDonatas Abraitis4-6/+131
FRR supports dynamic capability which is useful to exchange the capabilities without tearing down the session. ENHE capability was missed to be included handling via dynamic capability. Let's add it too. This was missed and asked in Slack that it would be useful. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
4 daystests: Check if ENHE capability can be handled dynamicallyDonatas Abraitis3-0/+236
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
4 dayszebra: Nexthops need to be ACTIVE in some casesDonald Sharp1-0/+7
Currently if you have an interface down event, Zebra sets the nexthop(s) as !ACTIVE that use it. On interface up events the singleton nexthops are not being set as ACTIVE. Due to timing events it is sometimes possible to end up with a route that is using a singleton Change singleton nexthops to set the nexthop to ACTIVE. This will allow the nexthop to be reinstalled appropriately as well. I was able to easily reproduce this using sharpd since it does not attempt to reinstall the routes when a interface goes up/down. Before: D>* 10.0.0.0/32 [150/0] via 192.168.102.34, dummy2, weight 1, 00:00:01 sharpd@eva ~/frr5 (master)> sudo ip link set dummy2 down ; sudo ip link set dummy2 up D> 10.0.0.0/32 [150/0] (350) via 192.168.102.34, dummy2 inactive, weight 1, 00:00:10 After code change: D>* 10.0.0.0/32 [150/0] (73) via 192.168.102.34, dummy2, weight 1, 00:00:14 sharpd@eva ~/frr5 (master)> sudo ip link set dummy2 down ; sudo ip link set dummy2 up D>* 10.0.0.0/32 [150/0] (73) via 192.168.102.34, dummy2, weight 1, 00:00:21 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
4 dayslib: northbound/mgmtd: add backend model supportChristian Hopps13-14/+416
Signed-off-by: Christian Hopps <chopps@labn.net>
4 daysbgpd: move bgp_aggregate_increment() after bgp_path_info_add()Enke Chen3-9/+9
Route aggregation should be checked after a route is added, and not before. This is for code flow and consistency. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
4 daysbgpd: remove unused BATTR_REFLECTED for rmap_change_flagsEnke Chen4-8/+0
Remove unused BATTR_REFLECTED for rmap_change_flags. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
4 daystopotest: add a test to control the community-list countPhilippe Guibert4-0/+82
Add a test to control the community-list count. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
4 daysbgpd: add 'match community-count' command to restrict comm countPhilippe Guibert8-0/+160
Add a mechanism in route-map to filter out route-map which have a list of communities greater than the given number. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
5 dayspimd: always write cand-rp group config even when rp is inactiveJafar Al-Gharaibeh1-7/+5
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
5 dayslib: fix new (incorrect) CLANG SA warningsChristian Hopps3-10/+12
Signed-off-by: Christian Hopps <chopps@labn.net>
5 daystests: add datastore notification testChristian Hopps4-27/+207
Signed-off-by: Christian Hopps <chopps@labn.net>
5 daysmgmtd: add notify selectors to filter datastore notificationsChristian Hopps10-51/+335
- Additionally push the selectors down to the backends Signed-off-by: Christian Hopps <chopps@labn.net>
5 dayslib: notify on datastore (oper-state) changesChristian Hopps4-3/+540
Signed-off-by: Christian Hopps <chopps@labn.net>
5 dayslib: if: track oper-state inlineChristian Hopps4-17/+154
Signed-off-by: Christian Hopps <chopps@labn.net>
5 dayslib: vrf: track oper-state inlineChristian Hopps3-3/+50
Signed-off-by: Christian Hopps <chopps@labn.net>
5 dayslib: northbound: add basic oper-state update functionsChristian Hopps6-0/+391
Signed-off-by: Christian Hopps <chopps@labn.net>
5 daystools: fix frr-reload for nbr deletion of no form cmdsChirag Shah1-1/+5
When a bgp neighbor removed from associated to peer-group, the neighbor is fully deleted, subsequent deletion of any configuration related to the neighbor leads to failure in frr-reload. Handle any 'no neighbor ...' part of lines_to_del list Testing: Below first line would delete the neighbor swp1.10, the existing code before the change handles to remove config starts with 'neighbor swp1.10 ...' but not 'no neighbor swp1.10 ...'. (Pdb) (lines_to_del) (('router bgp 100',), 'neighbor swp1.10 interface peer-group dpeergrp_2'), (('router bgp 100',), 'neighbor swp1.10 advertisement-interval 1'), (('router bgp 100',), 'neighbor swp1.10 timers 3 9'), (('router bgp 100',), 'neighbor swp1.10 timers connect 1'), (('router bgp 100',), 'no neighbor swp1.10 capability dynamic'), Before fix: (Pdb) (lines_to_del) [(('router bgp 100',), 'neighbor swp1.10 interface peer-group dpeergrp_2'), (('router bgp 100',), 'no neighbor swp1.10 capability dynamic')] frr-reload log: 2025-01-13 05:13:11,172 INFO: Executed "router bgp 100 no neighbor swp1.10 interface peer-group dpeergrp_2 exit" 2025-01-13 05:13:11,227 ERROR: Failed to execute router bgp 100 neighbor swp1.10 capability dynamic exit 2025-01-13 05:13:11,228 ERROR: "router bgp 100 -- neighbor swp1.10 capability dynamic -- exit" we failed to remove this command After fix: (Pdb)(lines_to_del) [(('router bgp 100',), 'neighbor swp1.10 interface peer-group dpeergrp_2')] Signed-off-by: Chirag Shah <chirag@nvidia.com>
5 daysdoc: building html/pdf user and developer documentationJafar Al-Gharaibeh2-0/+63
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
5 daysdoc: fix LaTex warning when building pdf docsJafar Al-Gharaibeh2-14/+14
LaTex doesn't like the Unicon character `≥` which should be represented by the special sequnce `$\leq$`. Since this is buried all in Sphinx, and we also have a scrip that look for the character, the easiest fix is to just use `>=` instead which works without warnings, and without asking to ignore every warning about the use of every instance of the special char. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
5 dayspimd: explicitly ensure the RP src is BSRJafar Al-Gharaibeh1-1/+1
With the recent suppoort of multiple sources of RPs, we can assume non static RPs are BSR RPs. Just make the check explicit for BSR. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
5 dayspimd: fix BSR RPs timing outJafar Al-Gharaibeh1-11/+16
On the BSR node itself, RPs shouldn't timeout, becase we know the node is the BSR, and it is active! fixes:#17587 Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
5 dayslib: Adopt Lua stuff for Lua 5.4Donatas Abraitis1-0/+2
lua_pcall() returns LUA_ERRGCMM in 5.3 which is already deprecated. The constant LUA_ERRGCMM was removed. Errors in finalizers are never propagated; instead, they generate a warning. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
5 daysconfigure: Adopt for Lua 5.4Donatas Abraitis1-17/+36
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
5 daystopotests: improve test reliabilityRafael Zalamena3-3/+28
Decrease the protocol timers, wait for peers to connect (and test it) then finally wait a bit more for SAs to be propagated. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 daysm4: Update ax_lua to support Lua 5.4Donatas Abraitis1-31/+61
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
6 daystests: update munet to 0.15.4Christian Hopps5-14/+353
- add readline and waitline functions for use with popen objects - other non-topotest (munet native) run changes - vm/qemu support booting cloud images (rocky, ubuntu, debian) - native topology init commands Signed-off-by: Christian Hopps <chopps@labn.net>
7 daysdocker: add ubuntu24-ci docker image supportChristian Hopps3-4/+70
Signed-off-by: Christian Hopps <chopps@labn.net>
7 daysdoc: add building for ubuntu 24.04, and refactorChristian Hopps4-321/+168
- All 3 ubutu 2x (20.04, 22.04 and 24.04) have the same instructions so put them in one include file. Signed-off-by: Christian Hopps <chopps@labn.net>
7 daysbgpd: remove unused safi in bgp_aggregate structureEnke Chen2-4/+1
Remove the unused safi field in bgp_aggregate structure. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
7 daysbgpd: fix churn of aggregate routes from duplicate configEnke Chen1-0/+26
Currently when an aggregate-address is configured, the existing entry is always removed regardless whether any change is involved. This would create unnecessary churn of the aggregate route when the same config is applied for the aggregate address. The fix is to check for duplicate aggregate-address config. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
8 daystests: remove unnecessary wildcard fields from pim acl testJafar Al-Gharaibeh1-16/+0
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
8 dayszebra: Optimize invoking nhg compare funcRajasekar Raja1-2/+2
In some cases, the old_re nhe and the newnhe is same and there is no point in comparing them both since they are the same. Skip comparing in such cases. Ex: 2025/01/09 23:49:27.489020 ZEBRA: [W4Z4R-NTSMD] zebra_nhg_rib_find_nhe: => nhe 0x555f611d30c0 (44[38/39/45]) 2025/01/09 23:49:27.489021 ZEBRA: [ZH3FQ-TE9NV] zebra_nhg_rib_compare_old_nhe: 0.0.0.0/0 new id: 44 old id: 44 2025/01/09 23:49:27.489021 ZEBRA: [YB8HE-Z86GN] zebra_nhg_rib_compare_old_nhe: 0.0.0.0/0 NEW 0x555f611d30c0 (44[38/39/45]) 2025/01/09 23:49:27.489023 ZEBRA: [ZSB1Z-XM2V3] 0.0.0.0/0: NH 20.1.1.9[0] vrf default(0) wgt 1, with flags 2025/01/09 23:49:27.489024 ZEBRA: [ZSB1Z-XM2V3] 0.0.0.0/0: NH 30.1.2.9[0] vrf default(0) wgt 1, with flags 2025/01/09 23:49:27.489025 ZEBRA: [ZSB1Z-XM2V3] 0.0.0.0/0: NH 20.1.1.2[4] vrf default(0) wgt 1, with flags ACTIVE 2025/01/09 23:49:27.489026 ZEBRA: [ZM3BX-HPETZ] zebra_nhg_rib_compare_old_nhe: 0.0.0.0/0 OLD 0x555f611d30c0 (44[38/39/45]) 2025/01/09 23:49:27.489027 ZEBRA: [ZSB1Z-XM2V3] 0.0.0.0/0: NH 20.1.1.9[0] vrf default(0) wgt 1, with flags 2025/01/09 23:49:27.489028 ZEBRA: [ZSB1Z-XM2V3] 0.0.0.0/0: NH 30.1.2.9[0] vrf default(0) wgt 1, with flags 2025/01/09 23:49:27.489028 ZEBRA: [ZSB1Z-XM2V3] 0.0.0.0/0: NH 20.1.1.2[4] vrf default(0) wgt 1, with flags ACTIVE Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
8 daysbgpd: Only update peer connection information when neededDonald Sharp3-16/+22
Currently bgp is repeatedly grabbing peer connection information. This is a bit overkill. There are two situations: a) Opening a connection to the peer In this case, we know the remote port/address a priori and can get the local information by just asking the OS. b) Peer opening a connection to us. In this case, we know the local port/address a priori and can get the remote information by just asking the OS. Modify the code to just grab this data at the appropriate time. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
8 daysbgpd: su_remote and su_local are properties of the connectionDonald Sharp15-133/+117
su_local and su_remote in the peer can change based upon if we are initiating the remote connection or receiving it. As such we need to treat it as a property of the connection. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
8 daysbgpd: bgp_getsockanme is connection orientedDonald Sharp3-5/+7
Let's make it so. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
8 dayszebra: Uninstall NHG in some situationsDonald Sharp1-2/+13
If you have this series of events: a) Decision to install a NHG is made in zebra, enqueue to DPLANE b) Changes to NHG are made and we remove it in the master pthread Since this NHG is not marked as installed it is not removed but the NHG data structure is deleted c) DPLANE installs the NHG In the end the NHG stays installed but ZEBRA has lost track of it. Modify the removal code to check to see if the NHG is queued. There are 2 cases: a) NHG is kept around for a bit before being deleted. In this case just see that the NHG is Queued and keep it around too. b) NHG is not kept around and we are just removing it. In this case check to see if it is queued and send another deletion event. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
9 daysospfd: avoid the redundant timersanlan_cs1-2/+1
Since the timer thread for ```OSPF_ROUTE_AGGR_DEL``` has been created, the subsequent "no summary-address" commands shouldn't trigger redundant timers. Signed-off-by: anlan_cs <anlan_cs@126.com>
9 daysospf6d: guard a couple of debugsJafar Al-Gharaibeh1-2/+5
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
9 daysbgpd: fix memory leak in bgp_aggregate_install()Enke Chen1-1/+8
Potential memory leak with as-set and matching-MED-only config. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
9 daysdoc: Document rpf-lookup-mode changesNathan Bahr1-1/+13
Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
9 daystests: Add tests for new RPF lookup group and source list featuresNathan Bahr5-25/+959
Expand existing pim_mrib tests to include testing lookup modes specific to source and/or group as defined in prefix lists. Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
9 dayspimd: Implement rpf lookup mode as a listNathan Bahr10-93/+403
Add the support to store lookup modes as a sorted list. List is non-unique and sorts mode with both lists < modes with one list < global mode (no lists). This way, when finding the right mode, we will match a lookup using a prefix list before the global mode. Add passing group address into all lookups (using nht cache and/or synchronous lookup). Many areas don't have a group address, use PIMADDR_ANY if no valid group is needed. Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
9 dayspimd,yang: Expand rpf-lookup-mode commandNathan Bahr8-33/+121
Add options for group-list and source-list, both of which take a prefix list name. The prefix list is used to determine the lookup mode for specific sources and/or groups. Any number of lookup modes can be configured as long as the combination of group and source list is unique. A global lookup mode (empty group and source lists) is always added and defaults to mrib-then-urib as it currently functions. The global lookup mode can be changed as it current exists with the command `rpf-lookup-mode MODE`. When determinig which mode to use, match source (and group if provided) against the lists, if they are set. If a lookup does not specify a group, then only use lookup modes that do not have a group list defined. A lookup by definition will have a source, so no special handling there. Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
9 daysbgpd: Fix showing default `timers bgp x y`Donatas Abraitis3-15/+16
Fixes: ef4a9215b912c885498715614ee01b43dc861c1a ("bgpd: Reuse defined constants for BGP timers") Fixes: ab3535fbcf37b59ec02332fa021142c5b7d6dd3e ("bgpd: Implement connect retry backoff") Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>