Commit Graph

34898 Commits

Author SHA1 Message Date
Donald Sharp
4038b6db3a
Merge pull request #15097 from louis-6wind/cleanup_vrf_update
lib: remove zebra_interface_vrf_update_read()
2024-01-05 09:25:41 -05:00
Donald Sharp
d04349e7f6
Merge pull request #15086 from LabNConsulting/chopps/remove-old-oper-iter-code
lib: remove unused/replaced oper-state iteration code
2024-01-05 09:24:23 -05:00
Donald Sharp
4494bebb38
Merge pull request #15095 from LabNConsulting/chopps/fix-centos-warn
lib: fix initializer warning on centos 7.
2024-01-05 09:23:39 -05:00
Louis Scalbert
c6fe42f64d lib: remove zebra_interface_vrf_update_read()
zebra_interface_vrf_update_read is orphan. Remove it.

Fixes: b580c52698 ("*: remove ZEBRA_INTERFACE_VRF_UPDATE")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-01-05 11:08:55 +01:00
Christian Hopps
ae1d854abf
lib: fix initializer warning on centos 7.
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-05 06:45:34 +00:00
Donald Sharp
496d87c14f lib: sys/utsname.h is not needed in zebra.h
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 15:34:22 -05:00
Donald Sharp
cbc187867c lib: zebra.h does not need to include syslog.h
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 15:34:22 -05:00
Donald Sharp
0b4ff79063 *: sys/uio.h does not need to be in zebra.h
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 15:34:22 -05:00
Donald Sharp
d69ac58c65 lib, sharpd: Move sys/resource.h to where it is used
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:43:46 -05:00
Donald Sharp
2700519cb3 *: Remove sys/ioctl.h from zebra.h
Practically no-one uses this and ioctls are pretty much
wrappered.  Further wrappering could make this even better.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:42:17 -05:00
Donald Sharp
88f8c90073 lib, vtysh: Remove inclusion of grp.h for everyone
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:34:41 -05:00
Donald Sharp
1b1fc14ffc lib: Remove in_systm.h it is never used
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:32:32 -05:00
Donald Sharp
75b3e82dfa *: Remove cost of including netinet/icmp.h everywhere
This file inclusion is only used in 3 places move
the includes to those spots.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:26:33 -05:00
Donald Sharp
ca54540576 lib: Remove inclusion of various MAXINT from zebra.h
All modern systems should have these defined.  Let's stop
paying the cost of this compilation.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:24:01 -05:00
Donald Sharp
fbc31156f0 lib: HAVE_GLIBC_BACKTRACE does not belong in zebra.h
The backtrace functionality has been abstracted over
to zlog_backtrace().  Now that every place uses this
move the inclusion for HAVE_GLIBC_BACKTRACE into
the appropriate files instead of having everyone
pay for this costly include.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:20:40 -05:00
Donald Sharp
a57379fa14 bgpd: rfapi was not using internal zlog_backtrace()
The rfapi code was not using the zlog_backtrace()
functionality.  Let's just convert over to using
the proper functionality that we have built in now.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:18:16 -05:00
Donald Sharp
78690deaf2 lib: Move some priviledge headers to file they are used.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:04:36 -05:00
Donald Sharp
2bf051a577 *: Remove Crypto openSSL define from zebra.h
Only a couple of places use this.  Move these to a better
spot.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 14:02:34 -05:00
Donald Sharp
10387101fe lib: Breakout sendmmsg into it's own header
The only 2 places sendmmsg is used is in zlog_5424.c
and zlog_live.c.  Why is the rest of the entire system
paying for this compilation?

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-04 13:56:09 -05:00
Donald Sharp
4e249eb2e4
Merge pull request #15083 from louis-6wind/fix-isis_spftree_del
isisd: fix _isis_spftree_del heap-use-after-free
2024-01-04 13:01:21 -05:00
Louis Scalbert
6001c765e2 bgpd: fix ecommunity_fill_pbr_action heap-buffer-overflow
Fix the following heap-buffer-overflow:

> ==3901635==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020003a5940 at pc 0x56260067bb48 bp 0x7ffe8a4f3840 sp 0x7ffe8a4f3838
> READ of size 4 at 0x6020003a5940 thread T0
>     #0 0x56260067bb47 in ecommunity_fill_pbr_action bgpd/bgp_ecommunity.c:1587
>     #1 0x5626007a246e in bgp_pbr_build_and_validate_entry bgpd/bgp_pbr.c:939
>     #2 0x5626007b25e6 in bgp_pbr_update_entry bgpd/bgp_pbr.c:2933
>     #3 0x562600909d18 in bgp_zebra_announce bgpd/bgp_zebra.c:1351
>     #4 0x5626007d5efd in bgp_process_main_one bgpd/bgp_route.c:3528
>     #5 0x5626007d6b43 in bgp_process_wq bgpd/bgp_route.c:3641
>     #6 0x7f450f34c2cc in work_queue_run lib/workqueue.c:266
>     #7 0x7f450f327a27 in event_call lib/event.c:1970
>     #8 0x7f450f21a637 in frr_run lib/libfrr.c:1213
>     #9 0x56260062fc04 in main bgpd/bgp_main.c:540
>     #10 0x7f450ee2dd09 in __libc_start_main ../csu/libc-start.c:308
>     #11 0x56260062ca29 in _start (/usr/lib/frr/bgpd+0x2e3a29)
>
> 0x6020003a5940 is located 0 bytes to the right of 16-byte region [0x6020003a5930,0x6020003a5940)
> allocated by thread T0 here:
>     #0 0x7f450f6aa1f8 in __interceptor_realloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:164
>     #1 0x7f450f244f8a in qrealloc lib/memory.c:112
>     #2 0x562600673313 in ecommunity_add_val_internal bgpd/bgp_ecommunity.c:143
>     #3 0x5626006735bc in ecommunity_uniq_sort_internal bgpd/bgp_ecommunity.c:193
>     #4 0x5626006737e3 in ecommunity_parse_internal bgpd/bgp_ecommunity.c:228
>     #5 0x562600673890 in ecommunity_parse bgpd/bgp_ecommunity.c:236
>     #6 0x562600640469 in bgp_attr_ext_communities bgpd/bgp_attr.c:2674
>     #7 0x562600646eb3 in bgp_attr_parse bgpd/bgp_attr.c:3893
>     #8 0x562600791b7e in bgp_update_receive bgpd/bgp_packet.c:2141
>     #9 0x56260079ba6b in bgp_process_packet bgpd/bgp_packet.c:3406
>     #10 0x7f450f327a27 in event_call lib/event.c:1970
>     #11 0x7f450f21a637 in frr_run lib/libfrr.c:1213
>     #12 0x56260062fc04 in main bgpd/bgp_main.c:540
>     #13 0x7f450ee2dd09 in __libc_start_main ../csu/libc-start.c:308

Fixes: dacf6ec120 ("bgpd: utility routine to convert flowspec actions into pbr actions")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-01-04 17:32:01 +01:00
Philippe Guibert
e266c44345 lib: fix memory leak when disabling nexthop_hold contexts
A memory leak is detected when stopping the sharpd daemon
with a nexthop group configuration that includes nexthops.

The nexthop_hold structure and its attributes are not
freed. Fix it by adding the missing free function.

Fixes: 98cbbaea91 ("lib: Handle if up/down and vrf enable/disable events")
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2024-01-04 17:12:36 +01:00
Carmine Scarpitta
a061ba2348 zebra: ctx has to be non NULL at this point
Fix the following coverity issue:

*** CID 1575079:  Null pointer dereferences  (REVERSE_INULL)
/zebra/zebra_dplane.c: 5950 in dplane_srv6_encap_srcaddr_set()
5944     	if (ret == AOK)
5945     		result = ZEBRA_DPLANE_REQUEST_QUEUED;
5946     	else {
5947     		atomic_fetch_add_explicit(&zdplane_info
5948     						   .dg_srv6_encap_srcaddr_set_errors,
5949     					  1, memory_order_relaxed);
     CID 1575079:  Null pointer dereferences  (REVERSE_INULL)
     Null-checking "ctx" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
5950     		if (ctx)
5951     			dplane_ctx_free(&ctx);
5952     	}
5953     	return result;
5954     }
5955

Remove the pointer check for `ctx`. At this point in the
function it has to be non null since we deref'ed it.
Additionally the alloc function that creates it cannot
fail.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2024-01-04 11:13:31 +01:00
Christian Hopps
87a0e1f52b lib: remove unused/replaced oper-state iteration code
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-04 06:33:43 +00:00
Christian Hopps
d2661a3841
doc: add diagram of oper-state queries.
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-04 05:36:14 +00:00
Louis Scalbert
9fa9a9d865 isisd: fix _isis_spftree_del heap-use-after-free
Fix the following heap-use-after-free

> ==82961==ERROR: AddressSanitizer: heap-use-after-free on address 0x6020001e4750 at pc 0x55a8cc7f63ac bp 0x7ffd6948e340 sp 0x7ffd6948e330
> READ of size 8 at 0x6020001e4750 thread T0
>     #0 0x55a8cc7f63ab in isis_route_node_cleanup isisd/isis_route.c:335
>     #1 0x7ff25ec617c1 in route_node_free lib/table.c:75
>     #2 0x7ff25ec619fc in route_table_free lib/table.c:111
>     #3 0x7ff25ec61661 in route_table_finish lib/table.c:46
>     #4 0x55a8cc800d83 in _isis_spftree_del isisd/isis_spf.c:397
>     #5 0x55a8cc800e45 in isis_spftree_clear isisd/isis_spf.c:414
>     #6 0x55a8cc80bd9a in isis_run_spf isisd/isis_spf.c:2020
>     #7 0x55a8cc80c370 in isis_run_spf_with_protection isisd/isis_spf.c:2076
>     #8 0x55a8cc80cf52 in isis_run_spf_cb isisd/isis_spf.c:2165
>     #9 0x7ff25ec7c4dc in event_call lib/event.c:1970
>     #10 0x7ff25eb64423 in frr_run lib/libfrr.c:1213
>     #11 0x55a8cc7799da in main isisd/isis_main.c:318
>     #12 0x7ff25e623d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>     #13 0x7ff25e623e3f in __libc_start_main_impl ../csu/libc-start.c:392
>     #14 0x55a8cc778e44 in _start (/usr/lib/frr/isisd+0x109e44)
>
> 0x6020001e4750 is located 0 bytes inside of 16-byte region [0x6020001e4750,0x6020001e4760)
> freed by thread T0 here:
>     #0 0x7ff25f000537 in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:127
>     #1 0x7ff25eb9012e in qfree lib/memory.c:130
>     #2 0x55a8cc7f6485 in isis_route_table_info_free isisd/isis_route.c:351
>     #3 0x55a8cc800cf4 in _isis_spftree_del isisd/isis_spf.c:395
>     #4 0x55a8cc800e45 in isis_spftree_clear isisd/isis_spf.c:414
>     #5 0x55a8cc80bd9a in isis_run_spf isisd/isis_spf.c:2020
>     #6 0x55a8cc80c370 in isis_run_spf_with_protection isisd/isis_spf.c:2076
>     #7 0x55a8cc80cf52 in isis_run_spf_cb isisd/isis_spf.c:2165
>     #8 0x7ff25ec7c4dc in event_call lib/event.c:1970
>     #9 0x7ff25eb64423 in frr_run lib/libfrr.c:1213
>     #10 0x55a8cc7799da in main isisd/isis_main.c:318
>     #11 0x7ff25e623d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>
> previously allocated by thread T0 here:
>     #0 0x7ff25f000a57 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
>     #1 0x7ff25eb8ffdc in qcalloc lib/memory.c:105
>     #2 0x55a8cc7f63eb in isis_route_table_info_alloc isisd/isis_route.c:343
>     #3 0x55a8cc80052a in _isis_spftree_init isisd/isis_spf.c:334
>     #4 0x55a8cc800e51 in isis_spftree_clear isisd/isis_spf.c:415
>     #5 0x55a8cc80bd9a in isis_run_spf isisd/isis_spf.c:2020
>     #6 0x55a8cc80c370 in isis_run_spf_with_protection isisd/isis_spf.c:2076
>     #7 0x55a8cc80cf52 in isis_run_spf_cb isisd/isis_spf.c:2165
>     #8 0x7ff25ec7c4dc in event_call lib/event.c:1970
>     #9 0x7ff25eb64423 in frr_run lib/libfrr.c:1213
>     #10 0x55a8cc7799da in main isisd/isis_main.c:318
>     #11 0x7ff25e623d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

Fixes: 7153c3cabf ("isisd: update struct isis_route_info has multiple sr info by algorithm")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-01-03 16:23:50 +01:00
Russ White
2aef6958f8
Merge pull request #15074 from chiragshah6/fdev4
bgpd: unimport evpn routes when implicit withdraw
2024-01-02 17:22:11 -05:00
Russ White
2e69afd9da
Merge pull request #15055 from opensourcerouting/fix/zebra_ipv6_ll_configured
zebra: Push all configured IP addresses when the interface comes up
2024-01-02 10:42:08 -05:00
Donald Sharp
077fc27c4a
Merge pull request #15062 from opensourcerouting/fix/mark_as_failed_if_do_not_merge_labeled
github: Mark the build as failed if 'do not merge' label is set
2024-01-02 10:38:34 -05:00
Russ White
54c2d327d3
Merge pull request #12261 from cscarpitta/srv6-encap-src-addr
zebra: Add the support of the Source Addr param of the SRv6 Encapsulation
2024-01-02 10:37:34 -05:00
Donald Sharp
de01b61b32
Merge pull request #15070 from LabNConsulting/chopps/fix-coverity-errors
chopps/fix coverity errors
2024-01-02 10:09:03 -05:00
Donald Sharp
da7668ff90
Merge pull request #15071 from LabNConsulting/chopps/building-cleanup
build: protobuf is required so update building docs
2024-01-02 10:07:10 -05:00
Donald Sharp
60f099657f
Merge pull request #15073 from LabNConsulting/chopps/fix-yang-key-queries
lib: fix specific entry queries
2024-01-02 10:06:22 -05:00
Donald Sharp
f6ae11819c
Merge pull request #15076 from LabNConsulting/chopps/libyang-no-schema-node-key-guarantee
lib: don't count on scheme key nodes being first children
2024-01-02 10:05:16 -05:00
Donald Sharp
0fb3dda62b
Merge pull request #15075 from pguibert6WIND/pathd_metric_computed
pathd: add dynamic candidate path metric [computed] keyword
2024-01-02 10:04:40 -05:00
Christian Hopps
412eec1bed
lib: don't count on scheme key nodes being first children
Heard back from libyang folks that this is not something they consider part of
the API and/or are going to guarantee. So we cannot count on it. Expect keys at
any location on the child sibling list.

Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-02 11:34:34 +00:00
Philippe Guibert
784c93cc62 pathd: add dynamic candidate path metric [computed] keyword
Add the 'computed' keyword for a given metric.

> [..]
> metric te computed

When set by the PCC, the PCE must send back a computed metric
value in the PCResponse value.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2024-01-02 12:07:49 +01:00
Christian Hopps
7e6595698b
lib: fix specific entry queries
- fix key leaf queries
- fix specific list entry with non-key leaf top element

Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-02 09:47:15 +00:00
Donatas Abraitis
bfe52f8929
Merge pull request #15068 from chiragshah6/zdev
bgpd: lttng tp add ethtag to macip zebra send
2024-01-02 10:42:28 +02:00
Donatas Abraitis
e684b4236b
Merge pull request #15066 from chiragshah6/mdev1
bgpd: revamp evpn debugs nexthop and l3vni
2024-01-02 10:40:14 +02:00
Chirag Shah
d8689cc630 bgpd: unimport evpn routes when implicit withdraw
When bgp update is received for EVPN prefix
where for an existing path's nexthop becomes unreachable,
the path is marked as not VALID but the routes
were not unimported from tenant vrfs, which lead to
stale unicast route(s) and nexthop(s).

In Multipath scenario only a specific path may have marked as
not VALID, then specific path info for the EVPN prefix required to be
unimported from tenant vrf.

Ticket: #3671288

Signed-off-by: Chirag Shah <chirag@nvidia.com>
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-01 21:34:22 -08:00
Christian Hopps
c00002d0d0 build: protobuf is required so update building docs
- recommend using libyang 2.1.128 but accept 2.0.0 for now.
- update ubuntu building doc to add GRPC section
- update ubuntu reference docker builds to match grpc doc change

Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-31 13:51:21 +00:00
Christian Hopps
39e0f331d2 lib: mgmtd: increase soft-max msg size to 64K
- remove unused mgmt client/server constants

Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-30 16:03:45 +00:00
Christian Hopps
1a7b50a00a lib: fix coverity CID 1574981
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-30 16:03:45 +00:00
Christian Hopps
30e63f2900 mgmtd: fix coverity CID 1574980
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-30 16:03:45 +00:00
Christian Hopps
b28cd405c8 lib: fix coverity CID 1574979
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-30 16:03:45 +00:00
Christian Hopps
913892e2ad mgmtd: fix coverity CID 1574978
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-30 16:03:45 +00:00
Christian Hopps
db11968a3d lib: fix coverity CID 1574977
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-30 16:03:45 +00:00
Igor Ryzhov
353ee7bb81
Merge pull request #14492 from LabNConsulting/oper-state
oper state
2023-12-29 07:08:30 +02:00
Christian Hopps
f7258386db tests: add mgmt_oper topotest
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-28 18:37:18 +00:00