Commit Graph

33580 Commits

Author SHA1 Message Date
Donald Sharp
33a14ce1f2 bgpd: convert bgp_stop_with_notify to connection based
The bgp_stop_with_notify function should use a peer_connection
pointer as the basis instead of a peer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-10 08:31:25 -04:00
Donald Sharp
3c7ef0a9c7 bgpd: make bgp_timer_set use a peer_connection instead
The bgp_timer_set function should use a peer_connection pointer
instead.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-10 08:31:25 -04:00
Donald Sharp
3842286ed4 bgpd: bgp_notify_send use peer_connection instead of peer
The bgp_notify_send function should use a peer_connection

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
513c8c4f74 bgpd: move t_pmax_restart to peer_connection
The t_pmax_restart event pointer belongs in the peer_connection
pointer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
981dd86920 bgpd: move t_generate_updgrp_packets into peer_connection
The t_generate_updgrp_packets event pointer belongs in the
peer_connection pointer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
13ae845b94 bgpd: move t_gr_restart and _stale into peer_connection
The t_gr_restart and t_gr_stale event pointers belong
into the peer_connection pointer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
e79443fcd8 bgpd: move t_routeadv to peer_connection
The t_routeadv belongs to the peer_connection data structure

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
6b7e50aacc bgpd: t_connect_check_r and w move to peer connection
These two event pointers belong in the peer_connection

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
bdb832b489 bgpd: t_holdtime move to peer_connection
The t_holdtime event pointer belongs in the peer connection

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
904c98c4d9 bgpd: move t_start into peer_connection
The t_start event pointer belongs on the peer_connection

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
b8f3b2cd4a bgpd: move t_delayopen from peer to peer_connection
This belongs in peer_connection let's move it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
a8888edd42 bgpd: t_connect conversion from peer to peer_connect
Move t_connect into struct peer_connect

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donald Sharp
4aec430ce3 bgpd: Remove BGP_EVENT_FLUSH and just use event_cancel_event_ready
The usage of BGP_EVENT_FLUSH is unnecessarily abstracting the
call into event_cancel_event_ready and in addtion the macro
was not always being used!  Just convert to using the actual
event_cancel_event_ready function directly.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-09 16:28:05 -04:00
Donatas Abraitis
bee4e27e78
Merge pull request #14377 from mjstapp/nl_rule_valid_action
zebra: ignore iprule requests for unsupported actions
2023-09-09 12:36:18 +03:00
Mark Stapp
7aabdc677a zebra: ignore iprule requests for unsupported actions
Only attempt to install in netlink iprules that include supported
actions; ignore requests with actions that aren't supported by
netlink.

Signed-off-by: Mark Stapp <mjs@labn.net>
2023-09-08 10:23:20 -04:00
Donald Sharp
36f78525cf lib: fixup prefix.h to our standards
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-08 09:50:21 -04:00
Donald Sharp
c2f0fd315f bgpd: Properly use bgp_path_info_cmp for evpn usage
Currently evpn passes into bgp_path_info_cmp the pfx_buf
uninitialized.  The bgp_path_info_cmp functionality actually
expects this value to be initialized.  Additionally the
evpn section of bgp_path_info_comp was resetting the
new_buf and exist_buf values that were already being
set above to the same values if !debug was on( which
precluded it ever from happening )

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-07 15:31:55 -04:00
Donald Sharp
d16d013ca3 bgpd: bgp_path_info_cmp should use a bool for debug
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-07 15:17:39 -04:00
David Lamparter
3d1a678e24 lib: fix delete during hash_iterate() in event_*
... by converting the hash table to a typesafe hash.

Honestly I was just looking around for things to convert to the typesafe
hash table code, but then I noticed that cpu_record_clear() deletes
items from inside the hash_iterate() callback :(

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-09-07 17:19:39 +02:00
David Lamparter
3ea3f34213 lib: add inline comment about _const iteration
This is noted in doc/developer/lists.rst, but judging by the previous
commit that's not where people look for this thing.  Let's try a comment
in the header file.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-09-07 17:11:52 +02:00
Quentin Young
8ed9dca7fb
Merge pull request #14360 from opensourcerouting/fix/as_path_no_prepend
bgpd: Fix `no set as-path prepend` command for BGP
2023-09-07 15:06:26 +00:00
David Lamparter
36bd815ba7 Revert "lib: add a frr_each_const macro"
This reverts commit 72eae2c3cb.

`frr_each_const(X, ...)` is not needed since it is the same as
`frr_each(X_const, ...)`.

The fact that it wasn't properly set up for clang-format, and that then
work-arounded with "clang-format off" is all the more reason to not do
this.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-09-07 12:08:50 +02:00
Donatas Abraitis
f3434880b6
Merge pull request #14358 from donaldsharp/tc_possible_crash
zebra: Prevent Null pointer deref
2023-09-07 10:09:37 +03:00
David Lamparter
500aa8f039
Merge pull request #14357 from donaldsharp/no_need_anymore 2023-09-06 19:57:05 +02:00
Donatas Abraitis
8f3eeb8b82 bgpd: Fix no set as-path prepend command for BGP
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-09-06 17:21:22 +03:00
Donald Sharp
527cf67971
Merge pull request #14261 from Keelan10/ospfd-memleak
ospfd: fix area range memory leak
2023-09-06 09:01:17 -04:00
Donald Sharp
4eef430b03
Merge pull request #14225 from opensourcerouting/bug/topostest_grpc
topotest: Command using wrong python version
2023-09-06 09:00:25 -04:00
Donald Sharp
2b9373c114 zebra: Prevent Null pointer deref
If the kernel sends us bad data then the kind_str
will be NULL and a later strcmp operation will
cause a crash.

As a note: If the kernel is not sending us properly
formated netlink messages then we got bigger problems
than zebra crashing.  But at least let's prevent zebra
from crashing.

Reported-by: Iggy Frankovic <iggyfran@amazon.com>
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-06 08:42:07 -04:00
Donald Sharp
58201b3d63
Merge pull request #14344 from opensourcerouting/freebsd-printf-sync-20230903
lib/printf: sync with FreeBSD for ISO C23 enhancements
2023-09-06 07:59:15 -04:00
Jafar Al-Gharaibeh
0cca970790
Merge pull request #14349 from opensourcerouting/fix/update_doc_for_docker
doc: Reuse $TAG for git checkout when building Docker images
2023-09-05 23:22:34 -05:00
Donald Sharp
a95b8faadf *: Remove unused configure option
The `-disable-rr-semantics` or `--enable-rr-senamtics` configure
option is never used.  Let's just remove it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-05 15:26:40 -04:00
Keelan10
40d441fb07 ospfd: Fix External Aggregator Leak
Fixes a memory leak in ospfd where the external aggregator
was not released after its associated route node is deleted.

The ASan leak log for reference:

```
***********************************************************************************
Address Sanitizer Error detected in ospf_basic_functionality.test_ospf_asbr_summary_topo1/r0.asan.ospfd.31502

=================================================================
==31502==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 200 byte(s) in 5 object(s) allocated from:
    #0 0x7fdb30665d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
    #1 0x7fdb300620da in qcalloc lib/memory.c:105
    #2 0x55e53c2da5fa in ospf_external_aggregator_new ospfd/ospf_asbr.c:396
    #3 0x55e53c2dead3 in ospf_asbr_external_aggregator_set ospfd/ospf_asbr.c:1123
    #4 0x55e53c27c921 in ospf_external_route_aggregation ospfd/ospf_vty.c:10264
    #5 0x7fdb2ffe5428 in cmd_execute_command_real lib/command.c:993
    #6 0x7fdb2ffe58ec in cmd_execute_command lib/command.c:1051
    #7 0x7fdb2ffe5d6b in cmd_execute lib/command.c:1218
    #8 0x7fdb3010ce2a in vty_command lib/vty.c:591
    #9 0x7fdb3010d2d5 in vty_execute lib/vty.c:1354
    #10 0x7fdb30115b9b in vtysh_read lib/vty.c:2362
    #11 0x7fdb30100b99 in event_call lib/event.c:1979
    #12 0x7fdb30045379 in frr_run lib/libfrr.c:1213
    #13 0x55e53c1ccab4 in main ospfd/ospf_main.c:249
    #14 0x7fdb2f65dc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7fdb30665d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
    #1 0x7fdb300620da in qcalloc lib/memory.c:105
    #2 0x55e53c2da5fa in ospf_external_aggregator_new ospfd/ospf_asbr.c:396
    #3 0x55e53c2dedd3 in ospf_asbr_external_rt_no_advertise ospfd/ospf_asbr.c:1182
    #4 0x55e53c27cf10 in ospf_external_route_aggregation_no_adrvertise ospfd/ospf_vty.c:10626
    #5 0x7fdb2ffe5428 in cmd_execute_command_real lib/command.c:993
    #6 0x7fdb2ffe58ec in cmd_execute_command lib/command.c:1051
    #7 0x7fdb2ffe5d6b in cmd_execute lib/command.c:1218
    #8 0x7fdb3010ce2a in vty_command lib/vty.c:591
    #9 0x7fdb3010d2d5 in vty_execute lib/vty.c:1354
    #10 0x7fdb30115b9b in vtysh_read lib/vty.c:2362
    #11 0x7fdb30100b99 in event_call lib/event.c:1979
    #12 0x7fdb30045379 in frr_run lib/libfrr.c:1213
    #13 0x55e53c1ccab4 in main ospfd/ospf_main.c:249
    #14 0x7fdb2f65dc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)

SUMMARY: AddressSanitizer: 240 byte(s) leaked in 6 allocation(s).
***********************************************************************************
```

Signed-off-by: Keelan Cannoo <keelan.cannoo@icloud.com>
2023-09-05 23:00:13 +04:00
Russ White
92515dce64
Merge pull request #14285 from opensourcerouting/feature/graceful_restart_dynamic_capability
bgpd: Handle Graceful Restart capability using dynamic capabilities
2023-09-05 09:37:49 -04:00
Russ White
9770c83738
Merge pull request #14341 from opensourcerouting/fix/bgpd_BGP_ATTR_PMSI_TUNNEL_treat_as_withdraw
bgpd: AS4_PATH and PMSI tunnel attributes handling by RFC 7606
2023-09-05 08:32:55 -04:00
Russ White
9fb7f24456
Merge pull request #14318 from raja-rajasekar/frr_dev1
zebra: Fix zebra crash when replacing NHE during shutdown
2023-09-05 08:27:20 -04:00
Russ White
0d378c66af
Merge pull request #14234 from Pdoijode/pdoijode/frr-bgp-nexthop-find-fix-1
bgpd: set ifindex only for v6 nexthops and nexthops that match peer's LL
2023-09-05 08:23:49 -04:00
Keelan10
0214fb7bfc pbrd: Free Memory in pbr_map_delete
This commit frees dynamically allocated memory associated
with `pbrms->nhgrp_name` and `pbrms->dst` which were causing memory leaks.

The ASan leak log for reference:

```
=================================================================
==107458==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 56 byte(s) in 1 object(s) allocated from:
    #0 0x7f87d644ca37 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
    #1 0x7f87d5feaa37 in qcalloc ../lib/memory.c:105
    #2 0x7f87d6054ffd in prefix_new ../lib/prefix.c:1180
    #3 0x55722f3c2885 in pbr_map_match_dst_magic ../pbrd/pbr_vty.c:302
    #4 0x55722f3b5c24 in pbr_map_match_dst pbrd/pbr_vty_clippy.c:228
    #5 0x7f87d5f32d61 in cmd_execute_command_real ../lib/command.c:993
    #6 0x7f87d5f330ee in cmd_execute_command ../lib/command.c:1052
    #7 0x7f87d5f33dc0 in cmd_execute ../lib/command.c:1218
    #8 0x7f87d60e4177 in vty_command ../lib/vty.c:591
    #9 0x7f87d60e905c in vty_execute ../lib/vty.c:1354
    #10 0x7f87d60ef45a in vtysh_read ../lib/vty.c:2362
    #11 0x7f87d60d42d4 in event_call ../lib/event.c:1979
    #12 0x7f87d5fbe828 in frr_run ../lib/libfrr.c:1213
    #13 0x55722f3ac795 in main ../pbrd/pbr_main.c:168
    #14 0x7f87d5b82d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

Direct leak of 2 byte(s) in 1 object(s) allocated from:
    #0 0x7f87d63f39a7 in __interceptor_strdup ../../../../src/libsanitizer/asan/asan_interceptors.cpp:454
    #1 0x7f87d5feaafc in qstrdup ../lib/memory.c:117
    #2 0x55722f3da139 in pbr_nht_set_seq_nhg ../pbrd/pbr_nht.c:551
    #3 0x55722f3c693f in pbr_map_nexthop_group_magic ../pbrd/pbr_vty.c:1140
    #4 0x55722f3bdaae in pbr_map_nexthop_group pbrd/pbr_vty_clippy.c:1284
    #5 0x7f87d5f32d61 in cmd_execute_command_real ../lib/command.c:993
    #6 0x7f87d5f330ee in cmd_execute_command ../lib/command.c:1052
    #7 0x7f87d5f33dc0 in cmd_execute ../lib/command.c:1218
    #8 0x7f87d60e4177 in vty_command ../lib/vty.c:591
    #9 0x7f87d60e905c in vty_execute ../lib/vty.c:1354
    #10 0x7f87d60ef45a in vtysh_read ../lib/vty.c:2362
    #11 0x7f87d60d42d4 in event_call ../lib/event.c:1979
    #12 0x7f87d5fbe828 in frr_run ../lib/libfrr.c:1213
    #13 0x55722f3ac795 in main ../pbrd/pbr_main.c:168
    #14 0x7f87d5b82d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

SUMMARY: AddressSanitizer: 58 byte(s) leaked in 2 allocation(s).
```

Signed-off-by: Keelan Cannoo <keelan.cannoo@icloud.com>
2023-09-05 12:58:18 +04:00
Keelan10
35cf10a680 ospfd: fix area range memory leak
Addressed a memory leak in OSPF by fixing the improper deallocation of
area range nodes when removed from the table. Introducing a new function,
`ospf_range_table_node_destroy` for proper node cleanup, resolved the issue.

The ASan leak log for reference:

```
Direct leak of 56 byte(s) in 2 object(s) allocated from:
    #0 0x7faf661d1d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
    #1 0x7faf65bce1e9 in qcalloc lib/memory.c:105
    #2 0x55a66e0b61cd in ospf_area_range_new ospfd/ospf_abr.c:43
    #3 0x55a66e0b61cd in ospf_area_range_set ospfd/ospf_abr.c:195
    #4 0x55a66e07f2eb in ospf_area_range ospfd/ospf_vty.c:631
    #5 0x7faf65b51548 in cmd_execute_command_real lib/command.c:993
    #6 0x7faf65b51f79 in cmd_execute_command_strict lib/command.c:1102
    #7 0x7faf65b51fd8 in command_config_read_one_line lib/command.c:1262
    #8 0x7faf65b522bf in config_from_file lib/command.c:1315
    #9 0x7faf65c832df in vty_read_file lib/vty.c:2605
    #10 0x7faf65c83409 in vty_read_config lib/vty.c:2851
    #11 0x7faf65bb0341 in frr_config_read_in lib/libfrr.c:977
    #12 0x7faf65c6cceb in event_call lib/event.c:1979
    #13 0x7faf65bb1488 in frr_run lib/libfrr.c:1213
    #14 0x55a66dfb28c4 in main ospfd/ospf_main.c:249
    #15 0x7faf651c9c86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)

SUMMARY: AddressSanitizer: 56 byte(s) leaked in 2 allocation(s).
```

Signed-off-by: Keelan Cannoo <keelan.cannoo@icloud.com>
2023-09-05 12:54:33 +04:00
Donatas Abraitis
b32fd280fe doc: Reuse $TAG for git checkout when building Docker images
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-09-05 08:54:27 +03:00
Donald Sharp
d9c5096e92
Merge pull request #14346 from opensourcerouting/frr-format-gcc-13
tools/gcc-plugins: fix for GCC 13
2023-09-04 18:16:54 -04:00
Rafael Zalamena
2644ff6e59 doc: document new FPM command
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2023-09-04 16:02:26 -03:00
Rafael Zalamena
6374aeab80 zebra: support route replace semantics in FPM
Set `NLM_F_REPLACE` instead of adding and removing the same route for an
update.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2023-09-04 15:38:03 -03:00
Donatas Abraitis
ff542b22d2
Merge pull request #14340 from mjstapp/txqlen_info
lib,zebra: add tx queuelen to interface struct
2023-09-04 15:20:56 +03:00
David Lamparter
2821d3b91b tools/gcc-plugins: fix for GCC 13
As usual, new GCC version, new small random changes in the API.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-09-04 12:16:48 +02:00
David Lamparter
f137bc8916 lib/printf: update README
Make a note that `%b` was picked up.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-09-03 23:34:03 +02:00
David Lamparter
48eee77b51 tests: exercise %b printfrr format specifier
Added by ISO C23 / N2630, implementation imported from FreeBSD.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-09-03 23:34:03 +02:00
David Lamparter
f9ba355aa8 tools/gcc-plugins: allow ISO C23 %b
It behaves exactly like `%x`, so adding it is a single byte diff.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-09-03 23:34:03 +02:00
Dag-Erling Smørgrav
3ca2253b13 lib/printf: Implement N2630.
This adds formatted input/output of binary integer numbers to the
printf(), scanf(), and strtol() families, including their wide-character
counterparts.

Reviewed by:	imp, emaste
Differential Revision:	https://reviews.freebsd.org/D41511

FRR changes only include printf(), scanf/strtol are not locally
implemented in FRR.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from FreeBSD commit d9dc1603d6e48cca84cad3ebe859129131b8387c)
2023-09-03 23:32:55 +02:00
Warner Losh
53df20fa68 lib/printf: Remove $FreeBSD$: two-line .h pattern
Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from FreeBSD commit b3e7694832e81d7a904a10f525f8797b753bf0d3)
2023-09-03 23:32:52 +02:00
Ed Maste
b62dbddfda lib/printf: drop "All rights reserved" from Foundation copyrights
This has already been done for most files that have the Foundation as
the only listed copyright holder.  Do it now for files that list
multiple copyright holders, but have the Foundation copyright in its own
section.

Sponsored by:	The FreeBSD Foundation

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from FreeBSD commit 5b5fa75acff11d871d0c90045f8c1a58fed85365)
2023-09-03 23:32:46 +02:00