Commit Graph

33003 Commits

Author SHA1 Message Date
Donald Sharp
1195c44f4b bgpd: In bgp_clear_route_table ensure dest is still usable.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
c955a3cbec bgpd: bgp_best_selection ensure dest still exists
When reaping the dest ensure that it still exists as that
it should be locked by the calling function.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
dc01a8ba03 bgpd: Ensure bgp_aggregate_unset does dest good
dest could be freed by the first unlock, but should
not be due to our locking structure.  Ensure coverity
understands this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
842c5259b6 bgpd: Ensure bgp_redistribute_withdraw dest is usable still
Same story dest is locked during table walk.  ensure coverity
understands this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
3abbc2340a bgpd: Ensure debug is printed before possible dest freed in install_evpn_route_entry_in_vrf
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
8c9e7835ae bgpd: bgp_static_set ensure dest is still usable.
Again coverity thinks dest may be freed on the first
call but it should not be.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
fce5742122 bgpd: bgp_cleanup_table ensure dest is still usable.
Make coverity happy

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
5486383c85 bgpd: bgp_static_delete ensure rm and dest exist
Ensure that the rm and dest exist since the code
has them locked to loop over them safely.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
aa3755bf4c bgpd: bgp_reg_for_label_callback ensure dest exist
More dest may be freed so let's ensure it is not.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
6c61eba773 bgpd: bgp_show_route_in_table ensure rm exists
The rm exists because it is locked while we are walking it,
so this should be safe.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
271c00074f bgpd: bgp_distance_unset ensure dest exists
Coverity doesn't understand our locking scheme
make sure it does a bit better.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
70f6103afd bgpd: bgp_process_main_one should ensure dest exists
Unsetting a flag after the dest has been possibly been
freed is not a good thing to do.  Ensure that this
is not possible.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
b7dd15242c bgpd: ensure delete_all_vni_routes does not free dest
dest is locked by the table walk.  ensure that coverity
understands this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
e6458d36b7 bgpd: bgp_adj_in_unset needs to return the dest pointer
This is incase it has been freed ( it wont due to locking )
and then we need to ensure that we can continue to use
the pointer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
493075d25b bgpd: bgp_connected_delete needs to ensure dest is still there
Again coverity believes that dest could be freed by a call
into bgp_dest_unlock_node, and it can if the lock count
is wrong.  Let's fix that assumption for coverity

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
ed74c8b555 bgpd: bgp_cleanup_routes ensure dest is not freed
The bgp_cleanup_routes function holds the lock for dest
while walking it.  Ensure that coverity understands this
proposition.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
35f352c457 bgpd: bgp_evpn_es_route_del_all should not free dest until after looping
Again the dest pointer should be still locked by the table walk.  Ensure
that coverity is happy that this is not happening.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
dade8dfdd6 bgpd: bgp_evpn_mh_route_delete should ensure dest is still usable
Again coverity believes that dest may be freed but it should not
be because of how locking is done.  Make coverity happy.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
8d39c8c927 bgpd: delete_vin_type2_route may free dest
The dest pointer may be freed( but should not be
due to locking ).  Let's ensure that this assumption
is true and make coverity happy.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
f491b54079 bgpd: delete_evpn_route ensure that dest is not freed before usage
There exist two spots in this function where the dest could be
freed, but is not due to locking, but coverity thinks it might
so let's make the function happy.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
b45925ad10 bgpd: evpn_cleanup_local_non_best_route could free dest
But never really does due to locking, but since it can
we need to treat it like it does and ensure that FRR
is not making a mistake, by using memory after it
has been freed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-11 12:45:59 -04:00
Donald Sharp
ec8a02af45 bgpd: bgp_clear_adj_in|remove dest may be freed
dest will not be freed due to lock but coverity does not know
that.  Give it a hint.  This change includes modifying bgp_dest_unlock_node
to return the dest pointer so that we can determine if we should
continue working on dest or not with an assert.  Since this
is lock based we should be ok.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-09-10 12:14:00 -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
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
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
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
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
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
Donatas Abraitis
e8cac071fb bgpd: Treat as4-path (17) attribute as withdraw if malformed
rfc7606 defines:

Attributes 17 (AS4_PATH), 18 (AS4_AGGREGATOR), 22 (PMSI_TUNNEL), 23 (Tunnel
   Encapsulation Attribute), 26 (AIGP), 27 (PE Distinguisher Labels),
   and 29 (BGP-LS Attribute) do have error handling consistent with
   Section 8 and thus are not further discussed herein.

Section 8 defines:

The "treat-as-withdraw" approach is generally
   preferred and the "session reset" approach is discouraged.
For any malformed attribute that is handled by the "attribute
   discard" instead of the "treat-as-withdraw" approach, it is critical
   to consider the potential impact of doing so.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-09-01 17:10:12 +03:00