Commit Graph

37977 Commits

Author SHA1 Message Date
Philippe Guibert
b68b4aa70e bgpd: modify bmp_bgp_update_vrf_status() API
The bgpbmp parameter is not used. Instead the bgp pointer, and
the vrf state are used.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
3e63abfc95 bgpd: bmp, fix memory leak in peer messages
The following memory leak is observed when running bgp_bmp test.

> ==614841==ERROR: LeakSanitizer: detected memory leaks
>
> Direct leak of 81 byte(s) in 1 object(s) allocated from:
>     #0 0x7f0e9f2b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
>     #1 0x7f0e9ec771f8 in qmalloc lib/memory.c:101
>     #2 0x7f0e9e5a2f89 in bmp_bgp_peer_vrf bgpd/bgp_bmp.c:2211
>     #3 0x7f0e9e5a31a8 in bmp_bgp_update_vrf_status bgpd/bgp_bmp.c:2247
>     #4 0x7f0e9e5b0325 in bmp_bgp_attribute_updated_instance bgpd/bgp_bmp.c:3476
>     #5 0x7f0e9e5b0661 in bmp_bgp_attribute_updated bgpd/bgp_bmp.c:3526
>     #6 0x7f0e9e5b08ae in bmp_routerid_update bgpd/bgp_bmp.c:3547
>     #7 0x55cdc4bcbd88 in hook_call_bgp_routerid_update bgpd/bgpd.c:89
>     #8 0x55cdc4bccf0b in bgp_router_id_set bgpd/bgpd.c:305
>     #9 0x55cdc4bcd87d in bgp_router_id_zebra_bump bgpd/bgpd.c:393
>     #10 0x55cdc4ba87d5 in bgp_router_id_update bgpd/bgp_zebra.c:99
>     #11 0x7f0e9ede3f0b in zclient_read lib/zclient.c:4626
>     #12 0x7f0e9ed8074d in event_call lib/event.c:1996
>     #13 0x7f0e9ec48933 in frr_run lib/libfrr.c:1232
>     #14 0x55cdc48a9a27 in main bgpd/bgp_main.c:555
>     #15 0x7f0e9e629d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>
> Direct leak of 81 byte(s) in 1 object(s) allocated from:
>     #0 0x7f0e9f2b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
>     #1 0x7f0e9ec771f8 in qmalloc lib/memory.c:101
>     #2 0x7f0e9e5a2ed8 in bmp_bgp_peer_vrf bgpd/bgp_bmp.c:2207
>     #3 0x7f0e9e5a31a8 in bmp_bgp_update_vrf_status bgpd/bgp_bmp.c:2247
>     #4 0x7f0e9e5b0325 in bmp_bgp_attribute_updated_instance bgpd/bgp_bmp.c:3476
>     #5 0x7f0e9e5b0661 in bmp_bgp_attribute_updated bgpd/bgp_bmp.c:3526
>     #6 0x7f0e9e5b08ae in bmp_routerid_update bgpd/bgp_bmp.c:3547
>     #7 0x55cdc4bcbd88 in hook_call_bgp_routerid_update bgpd/bgpd.c:89
>     #8 0x55cdc4bccf0b in bgp_router_id_set bgpd/bgpd.c:305
>     #9 0x55cdc4bcd87d in bgp_router_id_zebra_bump bgpd/bgpd.c:393
>     #10 0x55cdc4ba87d5 in bgp_router_id_update bgpd/bgp_zebra.c:99
>     #11 0x7f0e9ede3f0b in zclient_read lib/zclient.c:4626
>     #12 0x7f0e9ed8074d in event_call lib/event.c:1996
>     #13 0x7f0e9ec48933 in frr_run lib/libfrr.c:1232
>     #14 0x55cdc48a9a27 in main bgpd/bgp_main.c:555
>     #15 0x7f0e9e629d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>
> Direct leak of 64 byte(s) in 1 object(s) allocated from:
>     #0 0x7f0e9f2b4a57 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
>     #1 0x7f0e9ec77235 in qcalloc lib/memory.c:106
>     #2 0x7f0e9e5a498d in bmp_imported_bgp_get bgpd/bgp_bmp.c:2441
>     #3 0x7f0e9e5acbed in bmp_import_vrf_magic bgpd/bgp_bmp.c:2855
>     #4 0x7f0e9e5a7f97 in bmp_import_vrf bgpd/bgp_bmp_clippy.c:147
>     #5 0x7f0e9ebb1178 in cmd_execute_command_real lib/command.c:1003
>     #6 0x7f0e9ebb1505 in cmd_execute_command lib/command.c:1062
>     #7 0x7f0e9ebb21d7 in cmd_execute lib/command.c:1228
>     #8 0x7f0e9ed90bf0 in vty_command lib/vty.c:626
>     #9 0x7f0e9ed95ad5 in vty_execute lib/vty.c:1389
>     #10 0x7f0e9ed9c01e in vtysh_read lib/vty.c:2408
>     #11 0x7f0e9ed8074d in event_call lib/event.c:1996
>     #12 0x7f0e9ec48933 in frr_run lib/libfrr.c:1232
>     #13 0x55cdc48a9a27 in main bgpd/bgp_main.c:555
>     #14 0x7f0e9e629d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>
> Direct leak of 6 byte(s) in 1 object(s) allocated from:
>     #0 0x7f0e9f25b9a7 in __interceptor_strdup ../../../../src/libsanitizer/asan/asan_interceptors.cpp:454
>     #1 0x7f0e9ec772fa in qstrdup lib/memory.c:118
>     #2 0x55cdc4b57d54 in af_rd_vpn_export_magic bgpd/bgp_vty.c:9814
>     #3 0x55cdc4b288d7 in af_rd_vpn_export bgpd/bgp_vty_clippy.c:3493
>     #4 0x7f0e9ebb1178 in cmd_execute_command_real lib/command.c:1003
>     #5 0x7f0e9ebb1505 in cmd_execute_command lib/command.c:1062
>     #6 0x7f0e9ebb21d7 in cmd_execute lib/command.c:1228
>     #7 0x7f0e9ed90bf0 in vty_command lib/vty.c:626
>     #8 0x7f0e9ed95ad5 in vty_execute lib/vty.c:1389
>     #9 0x7f0e9ed9c01e in vtysh_read lib/vty.c:2408
>     #10 0x7f0e9ed8074d in event_call lib/event.c:1996
>     #11 0x7f0e9ec48933 in frr_run lib/libfrr.c:1232
>     #12 0x55cdc48a9a27 in main bgpd/bgp_main.c:555
>     #13 0x7f0e9e629d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>
> Indirect leak of 5 byte(s) in 1 object(s) allocated from:
>     #0 0x7f0e9f25b9a7 in __interceptor_strdup ../../../../src/libsanitizer/asan/asan_interceptors.cpp:454
>     #1 0x7f0e9ec772fa in qstrdup lib/memory.c:118
>     #2 0x7f0e9e5a49ae in bmp_imported_bgp_get bgpd/bgp_bmp.c:2443
>     #3 0x7f0e9e5acbed in bmp_import_vrf_magic bgpd/bgp_bmp.c:2855
>     #4 0x7f0e9e5a7f97 in bmp_import_vrf bgpd/bgp_bmp_clippy.c:147
>     #5 0x7f0e9ebb1178 in cmd_execute_command_real lib/command.c:1003
>     #6 0x7f0e9ebb1505 in cmd_execute_command lib/command.c:1062
>     #7 0x7f0e9ebb21d7 in cmd_execute lib/command.c:1228
>     #8 0x7f0e9ed90bf0 in vty_command lib/vty.c:626
>     #9 0x7f0e9ed95ad5 in vty_execute lib/vty.c:1389
>     #10 0x7f0e9ed9c01e in vtysh_read lib/vty.c:2408
>     #11 0x7f0e9ed8074d in event_call lib/event.c:1996
>     #12 0x7f0e9ec48933 in frr_run lib/libfrr.c:1232
>     #13 0x55cdc48a9a27 in main bgpd/bgp_main.c:555
>     #14 0x7f0e9e629d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>
> SUMMARY: AddressSanitizer: 237 byte(s) leaked in 5 allocation(s).

Fix this by freeing the missing memory block that helps building the
open message to send to remote bmp collector.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
f52e963b98 topotests: bgp_bmp, add test for import-vrf-view service
Add a test with a new peer defined in a VRF, and where
the BGP updates are imported in the BMP instance of the
default BGP instance.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
5fda10f4b8 bgpd: bmp, handle imported bgp instances for bmp statistics
Only the BMP statistics of the current BGP instance are handled.
Extend the transmission of BMP statistics for imported BGP instances.
-  Separate the bmp_stats() function in two, and pass the bgp
instance to process its bgp peers, as a separate parameter.
- Pass the BGP peers from imported instances as parameter

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
841ae62a89 bgpd: bmp, handle imported bgp instances in bmp_send_peerup()
When a BMP target comes up, only the peer up events of the
current BGP instance are sent.
- Apply the peer up event for external peers that are imported
by the BMP target.
- handle the peer up event when an imported vrf is
configured in a target.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
b1ebe54b29 bgpd: bmp, handle imported bgp instances in bmp_mirror
Modify the bmp_mirror() function to export the route update information
to all BMP instances importing it.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
ee605d80ab bgpd: bmp, handle imported bgp instances in bmp_process
Modify the bmp_process() function to export the route update information
to all BMP instances importing it.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
f8a6933111 bgpd: bmp, handle imported bgp instances for peer up/down events
Only the peer transition events of the local BGP instance where BMP
is configured, were handled.
Add the support for peers from imported BGP instances:
- Add an internal API bmp_send_bt() function to handle stream
emission per bmp target
- Modify the BMP peer transition code to export the peer status
notifications to all BMP instances importing it.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
c032d53255 bgpd: bmp, handle imported bgp instances for route updates
Upon route update, the list of available BGP instances that
import the BGP instance where this updates comes from, is checked.

For each eligible BGP instance, the route update is sent.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
c2c95b29ba bgpd: bmp, rework the bmp_route_update() function
Separate the bmp_route_update() function in two, by passing
the bgpbmp structure to the internal function instead of
the bgp instance.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
2a609860c8 bgpd: add 'bmp import-vrf-view' command
Add a configuration command to import BGP information from
another BGP instance. Specifically, it should be possible for
a user to have a BMP instance configured on the default VRF,
and be able to import the VRF information from the other BGP
VRF instances.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Philippe Guibert
c5ce29a64f bgpd: bmp, rename bmp->targets->bgp with peer->bgp
Some BMP actions require to get the bgp instance of the
given peer. Instead of considering that the BGP BMP instance
is the BGP instance of the peer, let us use directly the
peer->bgp pointer.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-01-07 15:35:31 +01:00
Martin Buck
a09d98a95e tests: ospf6_ecmp_inter_area, no shutdown r7/r8 eth3
Drop eth3 shutdown from ospf6d.conf - it doesn't do anything there. And it
actually shouldn't do anything: eth3 on r7/r8 are used as loopback-like
interfaces to inject the address on eth2 into OSPFv3. So they need to be up
for eth2 to work as expected.

Based on original PR#16811 commit:

    eth3 shutdown is not applied because it is ospf6d.conf.

    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2025-01-07 15:22:02 +01:00
Martin Buck
763069cd3b tests: ospf6_ecmp_inter_area, use router_json_cmp
Use router_json_cmp when checking for proper nexthops to get better
diagnostics in case of mismatches. Add step() messages to see which check
failed.

Based on original PR#16811 commit:

    expect_num_nexthops() errors are not understandable.

    Use router_json_cmp.

    Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2025-01-07 15:21:58 +01:00
Russ White
2a90c80f49
Merge pull request #17733 from pguibert6WIND/bmp_event_changes
BMP handling of BGP configuration changes
2025-01-07 09:06:43 -05:00
Russ White
16d1a880d3
Merge pull request #17771 from opensourcerouting/fix/show_ifindex_bgp
bgpd: Show ifindex for every BGP nexthop cache entry
2025-01-07 09:03:33 -05:00
Russ White
5d75339c12
Merge pull request #17773 from LabNConsulting/chopps/more-oper-test-fix
tests: improve test reliability
2025-01-07 09:02:41 -05:00
Russ White
ff794c5ffe
Merge pull request #17774 from famfo/doc/alpine
doc: fix building for alpine package path
2025-01-07 09:01:29 -05:00
Russ White
88f80328ca
Merge pull request #17779 from anlancs/ospfd/fix-wrong-check-summary
ospfd: fix wrong check for two commands
2025-01-07 08:56:36 -05:00
Russ White
1b13705517
Merge pull request #17667 from opensourcerouting/fix/withdraw_routes_regarless_of_coalescing_timer_to_expire_path_info_unusable
bgpd: Withdraw routes without waiting for the coalescing timer to expire
2025-01-07 08:54:52 -05:00
Russ White
7f2be9a595
Merge pull request #17474 from sougata-github-nvidia/rib_ip_protocol_cleanup
zebra: Fix ip protocol route-map issue.
2025-01-07 08:45:07 -05:00
Russ White
c9c9608c70
Merge pull request #17431 from krishna-samy/bgpd_json_commits
bgpd: show json output changes to optimize various show commands
2025-01-07 08:43:55 -05:00
Christian Hopps
e729676cfe tests: add test for new northbound get function
Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 07:01:46 -05:00
Christian Hopps
4379066fdd lib: if.c use new get() oper callback
Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 06:59:15 -05:00
Donatas Abraitis
a92231af4d
Merge pull request #17780 from enkechen-panw/allowas-fix
bgpd: fix a bug in peer_allowas_in_set()
2025-01-07 13:13:36 +02:00
Christian Hopps
5755ce395b tests: fe-client: only pick mgmtd FE notify selectors once
- adapt fe_client to new notification message format

Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 05:34:11 -05:00
Christian Hopps
0ca710bb5f lib: add impl of NOTIF message ops (notif, replace, delete, patch)
- needed for supporting backend datastore notifications

Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 05:34:09 -05:00
Christian Hopps
30777991c0 lib: add NOTIF message ops (notification, replace, delete, patch)
- needed for supporting backend datastore notifications

Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 05:34:06 -05:00
Christian Hopps
153c06043b tools: add new-style get operation callback support
Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 05:33:32 -05:00
Christian Hopps
36f25da612 lib: northbound: add new get() callback to add lyd_node direclty
This allows eliminating the superfluous yang_data object (which
is getting created used to call lyd_new_term then deleted). Instead
just call lyd_new_term() in the callback directly.

Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 05:33:28 -05:00
Christian Hopps
bdfb6a3db7 tools: we specifically added %Lu to our sprintfrr so allow it
Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 01:34:13 -05:00
Christian Hopps
0ce15fb0f7 tests: add unit test case for keyless list xpath queries
Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 01:24:38 -05:00
Christian Hopps
2fb6519c52 lib: northbound oper: fix keyless position predicate queries
- i.e., `show /foos/foo[1]`

Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-07 01:24:14 -05:00
Enke Chen
bcd1017794 bgpd: fix a bug in peer_allowas_in_set()
Fix a bug in peer_allowas_in_set() so that the config takes effect
for peer-group members.

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
2025-01-06 21:01:14 -08:00
wumu.zsl
32705fe720 bfdd: add enum bfd_mode_type for different bfd types
Signed-off-by: wumu.zsl <wumu.zsl@alibaba-inc.com>
2025-01-07 03:31:56 +00:00
anlan_cs
533d387a7f ospfd: fix wrong check for two commands
The users would know the failure of some case for the two commands, just
return the error ```CMD_WARNING_CONFIG_FAILED```.

Signed-off-by: anlan_cs <anlan_cs@126.com>
2025-01-07 10:58:03 +08:00
Donald Sharp
86fdf0198c
Merge pull request #17770 from opensourcerouting/fix/BGP_NEXTHOP_EVPN_INCOMPLETE
bgpd: Use unique value for BGP_NEXTHOP_EVPN_INCOMPLETE flag
2025-01-06 13:25:02 -05:00
famfo
7634db06d9
doc: fix building-for-alpine package path
Signed-off-by: famfo <famfo@famfo.xyz>
2025-01-06 16:25:56 +01:00
Christian Hopps
c5a2a65122 tests: improve test reliability
Test for presence of IPv6 kernel routes too.

Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-06 08:53:12 -05:00
Christian Hopps
9aa2b04874 lib: change and improve walk finish callback function API
Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-06 08:07:41 -05:00
Christian Hopps
5ffa10aac1 mgmtd: improve debug statement
Signed-off-by: Christian Hopps <chopps@labn.net>
2025-01-06 08:07:36 -05:00
Donatas Abraitis
f8aa53be30 bgpd: Show ifindex for every BGP nexthop cache entry
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2025-01-06 14:57:58 +02:00
Donatas Abraitis
0313bf98a5 bgpd: Use unique value for BGP_NEXTHOP_EVPN_INCOMPLETE flag
This was reused with BGP_NEXTHOP_ULTIMATE by error.

Fixes: 93fd9cbb50 ("bgpd: Validate imported routes next-hop that is in a default VRF")

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2025-01-06 14:57:14 +02:00
Sougata Barik
86b294698f zebra: Fix ip protocol route-map issue.
"ip/ipv6 protocol any route-map <route map>" cli is setting
wrong route type ( ZEBRA_ROUTE_MAX ), It should set route type
ZEBRA_ROUTE_ALL.

Ticket: #4101560

Signed-off-by: Sougata Barik <sougatab@nvidia.com>
2025-01-06 17:02:21 +05:30
Jafar Al-Gharaibeh
8ca4c3d098
Merge pull request #17752 from raja-rajasekar/rajasekarr/comp_issue
zebra: fix dpdk compilation error
2025-01-05 20:15:20 -06:00
Donatas Abraitis
8824c3f025
Merge pull request #17750 from jvoss/vrf_rpki
tools: Add missing rpki keyword to vrf in frr-reload
2025-01-04 13:52:40 +02:00
Donatas Abraitis
c5fb0a9867
Merge pull request #17715 from ykholod/master-17413-1
babel: Clean babel related config on daemon stop
2025-01-04 13:51:03 +02:00
Donatas Abraitis
3424f22f86
Merge pull request #17762 from anlancs/fix/ospf-minor-word
ospfd: Correct one word
2025-01-04 13:49:22 +02:00
Rajasekar Raja
eced678d34 zebra: fix dpdk compilation error
Fixing compilation error in a switch statement case

Fixes :aa4786642c9a65c282d0fd5247a35b0f14fa1c3c

Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
2025-01-03 11:13:02 -08:00
anlan_cs
3522ab21d0 ospfd: Correct one word
Signed-off-by: anlan_cs <anlan_cs@126.com>
2025-01-03 22:57:30 +08:00