mgmtd: add periodic notify mode with mode/mode_data and FE support - Added mode/mode_data to native NOTIFY_SELECT message.
- Defined periodic vs on-change notify semantics in FE path.
- Track periodic selectors separately from on-change selectors per session.
- Added per-session periodic timer lifecycle for sampled oper snapshots.
- Keep backend notify-select subscriptions on-change only.
- Update FE client API/topotest encoding and docs for mode s...
Merge pull request #21769 from donaldsharp/rnh_problems_with_quick_interface_flappingzebra: Allow quick flaps of interfaces to be handled properly in next…
zebra: Allow quick flaps of interfaces to be handled properly in nexthop trackingCurrently if you have a quick series of events:
interface down
interface up
This can end up resolving to no changes in the nexthop tracking if zebra
is extremely busy.
Modify zebra to notice that the connected/local/kernel routes have been
removed and re-added and allow nexthop trackign to send a nexthop withdraw
then a add to make things keep working.
Signed-off-by: Donald Sharp <sharpd@nv...
bgpd: Fix possible NULL deref in capability extended-nexthopSA is warning that peer as returned by peer_and_group_lookup_vty
can be NULL. As such deref'ing the peer in bgp_capability_send
is a no go. This used to work because the peer was checked
for null in bgp_capability_send.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd: bgp_packet.c and bgp_fsm.c were using peer->connection in some wrong placesSimplify the code to fully make sure that the function is really
connection oriented. Find and fix the places where peer->connection
was being used on connection oriented functions
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd: Modify functions to use `struct peer_connection`Modify functions in:
bgp_packet.c
bgp_attr.c
bgp_open.c
bgp_fsm.c
bgp_ls.c
to take a `struct peer_connection` vs a `struct peer`. Just more
cleanup of the functions in what they are doing.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra: fix memleak in ip import-table rmapFree the existing route-map name before
inheriting new policy name.
Assisted-by: Claude
Signed-off-by: Chirag Shah <chirag@nvidia.com>
bgpd: Cleanup leaked memory on shutdown of rpkiWhen shutting down rpki, clean up the memory
associated with the instance.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests: Add a `no rpki` command for testingThe `no rpki` command was not being tested at all in the bgp rpki code.
Let's add a new test for it.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd: Allow rpki to gracefully shutdown pthreads on stopThe bgp rpki code is seeing crashes on shutdown because the
rtr mgr code is shutting down it's created pthreads and
then joining them appropriately. When FRR then shutsdown
we are seeing a situation where the pthread_join is crashing
because it thinks it should do a join. Allow the bgp_rpki.c
code to hook into the new frr_pthread_non_controlled_shutdown
call to handle this situation better.
...
lib: Add a frr_pthread_non_controlled_shutdownAllow for pthreads to be cleaned up outside the scope
of the frr_pthread infrastructure on shutdown.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests: Fix backtraces working properly for post topology teardownBacktraces were not being properly handled on the post topology
teardown. Fix that.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests: Catch core dumps *after* teardown has completedIf a test dumps core after it has been told to teardown, the topotests
do not catch this problem. Modify the code to catch this situation.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
ospf6d: re-validate packet auth-data lengthRe-validate authentication data len from incoming packets
before using the value in digest computation.
Signed-off-by: Mark Stapp <mjs@cisco.com>
ospf6d: handle incoming cmsg data, validate hoplimitRequest hoplimit data when opening new sockets.
Iterate through cmsg objects; don't assume the type of the first
object present. Use the IPV6_RECVHOPLIMIT cmsg data for
incoming packets; ignore multicast packets with invalid
hoplimit per RFC5340.
Signed-off-by: Mark Stapp <mjs@cisco.com>
tests: Run black over a bunch of evpn topotestsPrevious commit only changed pytest marks but the tools are complaining
about a bunch of code I didn't touch. Let's just make it happy in
one fell swoop.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests: Add `evpn` pytestmark to tests that are missingThere are a number of evpn tests that have been created that do not
have the evpn pytestmark. Make it so.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests: Remove invalid link-params command from BGP-LS topotest configsThe frr.conf files for r1–r4 contain a `neighbor` command inside
link-params blocks:
link-params
neighbor 10.0.255.X
The command is incomplete and invalid. When loading the config, FRR
reports:
% Command incomplete: neighbor 10.0.255.X
and silently ignores it. Remove the command.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
bgpd: fix aggregate->count not decremented when route is dampenedWhen bgp_rib_withdraw() applies dampening, bgp_damp_withdraw() sets
BGP_PATH_HISTORY (part of BGP_PATH_UNUSEABLE) unconditionally before
bgp_aggregate_decrement() is called. This causes
bgp_remove_route_from_aggregate() to skip the decrement via the
BGP_PATH_HOLDDOWN check, even though the route was previously counted.
The aggregate->count stays high, keeping the aggregate route installed
incor...
bgpd: fix aggregate->count undercount when dampening is clearedbgp_damp_info_clean() calls bgp_aggregate_increment() while the path
still carries BGP_PATH_DAMPED (and BGP_PATH_HISTORY), so the increment
is skipped because BGP_PATH_HOLDDOWN() is true. bgp_damp_info_free()
then clears those flags, leaving the route active in the RIB with no
HOLDDOWN. When the route is later deleted, bgp_aggregate_decrement()
proceeds normally, driving count one below where...
bgpd: Prevent assert on shutdown in evpn setupI am seeing this crash on shutdown:
(gdb) bt
0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
1 __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
2 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
3 0x000073b03f64527e in __GI_raise (sig=6) at ../sysd...
bgpd: Define a maximum number of TLVs for ENCAP attributeAdding just a guard against the memory going crazy (too much malloc()s) with
legitimate TLVs, but sort of "malformed"/crafted packet.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd: Replace assert() with a boundary check conditionJust to avoid randomly killing bgpd daemon with a malformed packet.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>