Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zebra: reduce impact of route-update overload #6853

Merged
merged 2 commits into from
Jan 13, 2021

Conversation

mjstapp
Copy link
Contributor

@mjstapp mjstapp commented Aug 4, 2020

If zebra is facing an impulse of route updates, try to reduce the memory footprint and reduce redundant work. Free redundant route_nodes promptly. Also improve the dataplane counters we show with the 'show zebra dplane provider' cli.

Copy link

@polychaeta polychaeta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution to FRR!

Click for style suggestions

To apply these suggestions:

curl -s https://gist.githubusercontent.com/polychaeta/4eb7b3b72e2e5417b10867c23a856b68/raw/62d9852c300f0e0a7f86f641f77682c496e4b30a/cr_6853_1596546416.diff | git apply

diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index aa087790c..b5f1be773 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -3326,9 +3326,12 @@ int dplane_show_provs_helper(struct vty *vty, bool detailed)
 		out_max = atomic_load_explicit(&prov->dp_out_max,
 					       memory_order_relaxed);
 
-		vty_out(vty, "%s (%u): in: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64", out: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64"\n",
-			prov->dp_name, prov->dp_id, in, in_q, in_max,
-			out, out_q, out_max);
+		vty_out(vty,
+			"%s (%u): in: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 ", out: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 "\n",
+			prov->dp_name, prov->dp_id, in, in_q, in_max, out,
+			out_q, out_max);
 
 		DPLANE_LOCK();
 		prov = TAILQ_NEXT(prov, dp_prov_link);
@@ -3537,10 +3540,8 @@ void dplane_provider_enqueue_out_ctx(struct zebra_dplane_provider *prov,
 	/* Maintain out-queue counters */
 	atomic_fetch_add_explicit(&(prov->dp_out_queued), 1,
 				  memory_order_relaxed);
-	curr = atomic_load_explicit(&prov->dp_out_queued,
-				    memory_order_relaxed);
-	high = atomic_load_explicit(&prov->dp_out_max,
-				    memory_order_relaxed);
+	curr = atomic_load_explicit(&prov->dp_out_queued, memory_order_relaxed);
+	high = atomic_load_explicit(&prov->dp_out_max, memory_order_relaxed);
 	if (curr > high)
 		atomic_store_explicit(&prov->dp_out_max, curr,
 				      memory_order_relaxed);
@@ -4246,8 +4247,8 @@ static int dplane_thread_loop(struct thread *event)
 	/* Locate initial registered provider */
 	prov = TAILQ_FIRST(&zdplane_info.dg_providers_q);
 
-	prov_q_counter = atomic_load_explicit(&prov->dp_in_queued,
-					      memory_order_relaxed);
+	prov_q_counter =
+		atomic_load_explicit(&prov->dp_in_queued, memory_order_relaxed);
 
 	curr = atomic_load_explicit(&zdplane_info.dg_routes_queued,
 				    memory_order_relaxed);
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 78a4ac129..53c078363 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2956,10 +2956,10 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 
 	/* Link new re to node.*/
 	if (IS_ZEBRA_DEBUG_RIB) {
-		rnode_debug(rn, re->vrf_id,
-			    "Inserting route rn %p, re %p (%s) existing %p, same_count %d",
-			    rn, re, zebra_route_string(re->type), same,
-			    same_count);
+		rnode_debug(
+			rn, re->vrf_id,
+			"Inserting route rn %p, re %p (%s) existing %p, same_count %d",
+			rn, re, zebra_route_string(re->type), same, same_count);
 
 		if (IS_ZEBRA_DEBUG_RIB_DETAILED)
 			route_entry_dump(p, src_p, re);
@@ -2984,7 +2984,8 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 				continue;
 
 			if (IS_ZEBRA_DEBUG_RIB)
-				rnode_debug(rn, re->vrf_id, "rn %p, removing unneeded re %p",
+				rnode_debug(rn, re->vrf_id,
+					    "rn %p, removing unneeded re %p",
 					    rn, re);
 
 			rib_unlink(rn, re);

If you are a new contributor to FRR, please see our contributing guidelines.

@LabN-CI
Copy link
Collaborator

LabN-CI commented Aug 4, 2020

Outdated results 💚

Basic BGPD CI results: SUCCESS, 0 tests failed

_ _
Result SUCCESS git merge/6853 8d9175e
Date 08/04/2020
Start 09:10:40
Finish 09:36:24
Run-Time 25:44
Total 1815
Pass 1815
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2020-08-04-09:10:40.txt
Log autoscript-2020-08-04-09:11:37.log.bz2
Memory 496 497 425

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Aug 4, 2020

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13461/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13461/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g8d9175ec7-0 (missing) -> 7.5-dev-20200804-02-g8d9175ec7-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g8d9175ec7-0 (missing) -> 7.5-dev-20200804-02-g8d9175ec7-0~deb10u1
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g8d9175ec7-0 (missing) -> 7.5-dev-20200804-02-g8d9175ec7-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g8d9175ec7-0 (missing) -> 7.5-dev-20200804-02-g8d9175ec7-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g8d9175ec7-0 (missing) -> 7.5-dev-20200804-02-g8d9175ec7-0~deb10u1

CLANG Static Analyzer Summary

  • Github Pull Request 6853, comparing to Git base SHA de5f29d
  • Base image data for Git de5f29d does not exist - compare skipped

1 Static Analyzer issues remaining.

See details at
https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13461/artifact/shared/static_analysis/index.html

Copy link

@polychaeta polychaeta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution to FRR!

Click for style suggestions

To apply these suggestions:

curl -s https://gist.githubusercontent.com/polychaeta/3c838784ed1693f057d8ef557eeab30c/raw/79dad0940367a7dcc8a4744977e708840c14bf2e/cr_6853_1596554443.diff | git apply

diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index 77e34050c..f5b16d38e 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -3326,9 +3326,12 @@ int dplane_show_provs_helper(struct vty *vty, bool detailed)
 		out_max = atomic_load_explicit(&prov->dp_out_max,
 					       memory_order_relaxed);
 
-		vty_out(vty, "%s (%u): in: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64", out: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64"\n",
-			prov->dp_name, prov->dp_id, in, in_q, in_max,
-			out, out_q, out_max);
+		vty_out(vty,
+			"%s (%u): in: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 ", out: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 "\n",
+			prov->dp_name, prov->dp_id, in, in_q, in_max, out,
+			out_q, out_max);
 
 		DPLANE_LOCK();
 		prov = TAILQ_NEXT(prov, dp_prov_link);
@@ -3537,10 +3540,8 @@ void dplane_provider_enqueue_out_ctx(struct zebra_dplane_provider *prov,
 	/* Maintain out-queue counters */
 	atomic_fetch_add_explicit(&(prov->dp_out_queued), 1,
 				  memory_order_relaxed);
-	curr = atomic_load_explicit(&prov->dp_out_queued,
-				    memory_order_relaxed);
-	high = atomic_load_explicit(&prov->dp_out_max,
-				    memory_order_relaxed);
+	curr = atomic_load_explicit(&prov->dp_out_queued, memory_order_relaxed);
+	high = atomic_load_explicit(&prov->dp_out_max, memory_order_relaxed);
 	if (curr > high)
 		atomic_store_explicit(&prov->dp_out_max, curr,
 				      memory_order_relaxed);
@@ -4246,8 +4247,8 @@ static int dplane_thread_loop(struct thread *event)
 	/* Locate initial registered provider */
 	prov = TAILQ_FIRST(&zdplane_info.dg_providers_q);
 
-	prov_q_counter = atomic_load_explicit(&prov->dp_in_queued,
-					      memory_order_relaxed);
+	prov_q_counter =
+		atomic_load_explicit(&prov->dp_in_queued, memory_order_relaxed);
 
 	/* Don't let the plugin queue build up too far */
 	if (prov_q_counter > 2 * limit)
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 78a4ac129..53c078363 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2956,10 +2956,10 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 
 	/* Link new re to node.*/
 	if (IS_ZEBRA_DEBUG_RIB) {
-		rnode_debug(rn, re->vrf_id,
-			    "Inserting route rn %p, re %p (%s) existing %p, same_count %d",
-			    rn, re, zebra_route_string(re->type), same,
-			    same_count);
+		rnode_debug(
+			rn, re->vrf_id,
+			"Inserting route rn %p, re %p (%s) existing %p, same_count %d",
+			rn, re, zebra_route_string(re->type), same, same_count);
 
 		if (IS_ZEBRA_DEBUG_RIB_DETAILED)
 			route_entry_dump(p, src_p, re);
@@ -2984,7 +2984,8 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 				continue;
 
 			if (IS_ZEBRA_DEBUG_RIB)
-				rnode_debug(rn, re->vrf_id, "rn %p, removing unneeded re %p",
+				rnode_debug(rn, re->vrf_id,
+					    "rn %p, removing unneeded re %p",
 					    rn, re);
 
 			rib_unlink(rn, re);

If you are a new contributor to FRR, please see our contributing guidelines.

@mjstapp
Copy link
Contributor Author

mjstapp commented Aug 4, 2020

Pushed to clean up SA warning

@LabN-CI
Copy link
Collaborator

LabN-CI commented Aug 4, 2020

Outdated results 💚

Basic BGPD CI results: SUCCESS, 0 tests failed

_ _
Result SUCCESS git merge/6853 6beafc4
Date 08/04/2020
Start 12:07:49
Finish 12:33:34
Run-Time 25:45
Total 1815
Pass 1815
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2020-08-04-12:07:49.txt
Log autoscript-2020-08-04-12:08:43.log.bz2
Memory 491 471 425

For details, please contact louberger

@donaldsharp
Copy link
Member

Memory footprint is changing significantly. I have 1 full bgp feed, then also install 1000000 routes from sharpd and then remove them. Before this change we have this:

eva# show mem
Memory statistics for zebra:
System allocator statistics:
Total heap allocated: 897 MiB
Holding block headers: 16 MiB
Used small blocks: 0 bytes
Used ordinary blocks: 334 MiB
Free small blocks: 41 KiB
Free ordinary blocks: 563 MiB
Ordinary blocks: 1175572
Small blocks: 494
Holding blocks: 1
(see system documentation for 'mallinfo' for meaning)

With this change we have this:

eva# show mem
Memory statistics for zebra:
System allocator statistics:
Total heap allocated: 976 MiB
Holding block headers: 16 MiB
Used small blocks: 0 bytes
Used ordinary blocks: 334 MiB
Free small blocks: 662 KiB
Free ordinary blocks: 642 MiB
Ordinary blocks: 880496
Small blocks: 7106
Holding blocks: 1

We need to spend more time understanding this. I would also like to see timing installs of data pre and post this change @mjstapp

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Aug 4, 2020

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13468/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13468/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g6beafc4f9-0 (missing) -> 7.5-dev-20200804-02-g6beafc4f9-0~deb10u1
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g6beafc4f9-0 (missing) -> 7.5-dev-20200804-02-g6beafc4f9-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g6beafc4f9-0 (missing) -> 7.5-dev-20200804-02-g6beafc4f9-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g6beafc4f9-0 (missing) -> 7.5-dev-20200804-02-g6beafc4f9-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200804-02-g6beafc4f9-0 (missing) -> 7.5-dev-20200804-02-g6beafc4f9-0~deb10u1

@mjstapp
Copy link
Contributor Author

mjstapp commented Aug 4, 2020

Interesting - I don't see a difference between master and this branch, with 1M sharpd routes; here's some info.
Memory on master:

mjs-ubu20# sho mem
Memory statistics for zebra:
System allocator statistics:
  Total heap allocated:  555 MiB
  Holding block headers: 16 MiB
  Used small blocks:     0 bytes
  Used ordinary blocks:  430 MiB
  Free small blocks:     2272 bytes
  Free ordinary blocks:  124 MiB
  Ordinary blocks:       1426754
  Small blocks:          65
  Holding blocks:        1

PR:


mjs-ubu20# sho mem
Memory statistics for zebra:
System allocator statistics:
  Total heap allocated:  557 MiB
  Holding block headers: 16 MiB
  Used small blocks:     0 bytes
  Used ordinary blocks:  430 MiB
  Free small blocks:     2272 bytes
  Free ordinary blocks:  127 MiB
  Ordinary blocks:       1494923
  Small blocks:          65
  Holding blocks:        1

and the detailed memory breakdowns were just about identical too.

sharp timings were also very close:

master:

2020/08/04 14:10:47 SHARP: Inserting 1000000 routes
2020/08/04 14:10:59 SHARP: Installed All Items 12.601351

2020/08/04 14:14:06 SHARP: Removing 1000000 routes
2020/08/04 14:14:36 SHARP: Removed all Items 30.313193

PR:

2020/08/04 14:22:49 SHARP: Inserting 1000000 routes
2020/08/04 14:23:00 SHARP: Installed All Items 11.550441

2020/08/04 14:24:31 SHARP: Removing 1000000 routes
2020/08/04 14:24:58 SHARP: Removed all Items 27.754516

Copy link

@polychaeta polychaeta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution to FRR!

Click for style suggestions

To apply these suggestions:

curl -s https://gist.githubusercontent.com/polychaeta/9000b3820d382463c9408ce32cc98eb3/raw/75d41bac0d841a9c35b83e1945b9c287ef34330e/cr_6853_1597781668.diff | git apply

diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index cb5486d9d..bb80de784 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -3446,9 +3446,12 @@ int dplane_show_provs_helper(struct vty *vty, bool detailed)
 		out_max = atomic_load_explicit(&prov->dp_out_max,
 					       memory_order_relaxed);
 
-		vty_out(vty, "%s (%u): in: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64", out: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64"\n",
-			prov->dp_name, prov->dp_id, in, in_q, in_max,
-			out, out_q, out_max);
+		vty_out(vty,
+			"%s (%u): in: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 ", out: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 "\n",
+			prov->dp_name, prov->dp_id, in, in_q, in_max, out,
+			out_q, out_max);
 
 		DPLANE_LOCK();
 		prov = TAILQ_NEXT(prov, dp_prov_link);
@@ -3657,10 +3660,8 @@ void dplane_provider_enqueue_out_ctx(struct zebra_dplane_provider *prov,
 	/* Maintain out-queue counters */
 	atomic_fetch_add_explicit(&(prov->dp_out_queued), 1,
 				  memory_order_relaxed);
-	curr = atomic_load_explicit(&prov->dp_out_queued,
-				    memory_order_relaxed);
-	high = atomic_load_explicit(&prov->dp_out_max,
-				    memory_order_relaxed);
+	curr = atomic_load_explicit(&prov->dp_out_queued, memory_order_relaxed);
+	high = atomic_load_explicit(&prov->dp_out_max, memory_order_relaxed);
 	if (curr > high)
 		atomic_store_explicit(&prov->dp_out_max, curr,
 				      memory_order_relaxed);
@@ -4264,8 +4265,8 @@ static int dplane_thread_loop(struct thread *event)
 	/* Locate initial registered provider */
 	prov = TAILQ_FIRST(&zdplane_info.dg_providers_q);
 
-	prov_q_counter = atomic_load_explicit(&prov->dp_in_queued,
-					      memory_order_relaxed);
+	prov_q_counter =
+		atomic_load_explicit(&prov->dp_in_queued, memory_order_relaxed);
 
 	/* Don't let the plugin queue build up too far */
 	if (prov_q_counter > 2 * limit)
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 2dae5e228..bf0f78088 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2951,10 +2951,10 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 
 	/* Link new re to node.*/
 	if (IS_ZEBRA_DEBUG_RIB) {
-		rnode_debug(rn, re->vrf_id,
-			    "Inserting route rn %p, re %p (%s) existing %p, same_count %d",
-			    rn, re, zebra_route_string(re->type), same,
-			    same_count);
+		rnode_debug(
+			rn, re->vrf_id,
+			"Inserting route rn %p, re %p (%s) existing %p, same_count %d",
+			rn, re, zebra_route_string(re->type), same, same_count);
 
 		if (IS_ZEBRA_DEBUG_RIB_DETAILED)
 			route_entry_dump(p, src_p, re);
@@ -2979,7 +2979,8 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 				continue;
 
 			if (IS_ZEBRA_DEBUG_RIB)
-				rnode_debug(rn, re->vrf_id, "rn %p, removing unneeded re %p",
+				rnode_debug(rn, re->vrf_id,
+					    "rn %p, removing unneeded re %p",
 					    rn, re);
 
 			rib_unlink(rn, re);

If you are a new contributor to FRR, please see our contributing guidelines.

@mjstapp
Copy link
Contributor Author

mjstapp commented Aug 18, 2020

rebased to fix conflicts

@LabN-CI
Copy link
Collaborator

LabN-CI commented Aug 18, 2020

Outdated results 💚

Basic BGPD CI results: SUCCESS, 0 tests failed

_ _
Result SUCCESS git merge/6853 eeb595f
Date 08/18/2020
Start 16:54:32
Finish 17:20:36
Run-Time 26:04
Total 1815
Pass 1815
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2020-08-18-16:54:32.txt
Log autoscript-2020-08-18-16:55:33.log.bz2
Memory 481 487 425

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Aug 18, 2020

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

Test incomplete. See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13694/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Successful

Basic Tests: Incomplete

Topo tests part 1 on Ubuntu 16.04 amd64: Incomplete (check logs for details)
Successful on other platforms/tests
  • Topo tests part 1 on Ubuntu 18.04 arm8
  • Fedora 29 rpm pkg check
  • IPv6 protocols on Ubuntu 18.04
  • Addresssanitizer topotests part 1
  • Topo tests part 1 on Ubuntu 16.04 i386
  • Debian 8 deb pkg check
  • Topo tests part 0 on Ubuntu 16.04 amd64
  • IPv4 protocols on Ubuntu 18.04
  • Topo tests part 0 on Ubuntu 18.04 arm8
  • Static analyzer (clang)
  • Ubuntu 20.04 deb pkg check
  • Topo tests part 2 on Ubuntu 18.04 arm8
  • Topo tests part 2 on Ubuntu 16.04 i386
  • Topo tests part 0 on Ubuntu 18.04 amd64
  • Ubuntu 18.04 deb pkg check
  • Ubuntu 16.04 deb pkg check
  • Addresssanitizer topotests part 2
  • Topo tests part 0 on Ubuntu 16.04 i386
  • Topo tests part 1 on Ubuntu 18.04 amd64
  • CentOS 7 rpm pkg check
  • Addresssanitizer topotests part 0
  • Topo tests part 2 on Ubuntu 18.04 amd64
  • Debian 10 deb pkg check
  • Debian 9 deb pkg check
  • Topo tests part 2 on Ubuntu 16.04 amd64
  • IPv4 ldp protocol on Ubuntu 18.04

@mjstapp
Copy link
Contributor Author

mjstapp commented Aug 19, 2020

CI:rerun

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Aug 19, 2020

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13707/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Checkout code: Successful with additional warnings
Report for zebra_dplane.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #3449: FILE: /tmp/f1-28877/zebra_dplane.c:3449:

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13707/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200818-02-geeb595f89-0 (missing) -> 7.5-dev-20200818-02-geeb595f89-0~deb10u1
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200818-02-geeb595f89-0 (missing) -> 7.5-dev-20200818-02-geeb595f89-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200818-02-geeb595f89-0 (missing) -> 7.5-dev-20200818-02-geeb595f89-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200818-02-geeb595f89-0 (missing) -> 7.5-dev-20200818-02-geeb595f89-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200818-02-geeb595f89-0 (missing) -> 7.5-dev-20200818-02-geeb595f89-0~deb10u1

Copy link

@polychaeta polychaeta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution to FRR!

Click for style suggestions

To apply these suggestions:

curl -s https://gist.githubusercontent.com/polychaeta/58afcbc4bb749948e9e7d18186e56f75/raw/16fb2b5d78c6834a3070b47900fcfe8f3a38da54/cr_6853_1599139017.diff | git apply

diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index 53b86092b..b6a275a53 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -3444,9 +3444,12 @@ int dplane_show_provs_helper(struct vty *vty, bool detailed)
 		out_max = atomic_load_explicit(&prov->dp_out_max,
 					       memory_order_relaxed);
 
-		vty_out(vty, "%s (%u): in: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64", out: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64"\n",
-			prov->dp_name, prov->dp_id, in, in_q, in_max,
-			out, out_q, out_max);
+		vty_out(vty,
+			"%s (%u): in: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 ", out: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 "\n",
+			prov->dp_name, prov->dp_id, in, in_q, in_max, out,
+			out_q, out_max);
 
 		DPLANE_LOCK();
 		prov = TAILQ_NEXT(prov, dp_prov_link);
@@ -3655,10 +3658,8 @@ void dplane_provider_enqueue_out_ctx(struct zebra_dplane_provider *prov,
 	/* Maintain out-queue counters */
 	atomic_fetch_add_explicit(&(prov->dp_out_queued), 1,
 				  memory_order_relaxed);
-	curr = atomic_load_explicit(&prov->dp_out_queued,
-				    memory_order_relaxed);
-	high = atomic_load_explicit(&prov->dp_out_max,
-				    memory_order_relaxed);
+	curr = atomic_load_explicit(&prov->dp_out_queued, memory_order_relaxed);
+	high = atomic_load_explicit(&prov->dp_out_max, memory_order_relaxed);
 	if (curr > high)
 		atomic_store_explicit(&prov->dp_out_max, curr,
 				      memory_order_relaxed);
@@ -4262,8 +4263,8 @@ static int dplane_thread_loop(struct thread *event)
 	/* Locate initial registered provider */
 	prov = TAILQ_FIRST(&zdplane_info.dg_providers_q);
 
-	prov_q_counter = atomic_load_explicit(&prov->dp_in_queued,
-					      memory_order_relaxed);
+	prov_q_counter =
+		atomic_load_explicit(&prov->dp_in_queued, memory_order_relaxed);
 
 	/* Don't let the plugin queue build up too far */
 	if (prov_q_counter > 2 * limit)
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 973535a46..26f266cac 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2989,10 +2989,10 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 
 	/* Link new re to node.*/
 	if (IS_ZEBRA_DEBUG_RIB) {
-		rnode_debug(rn, re->vrf_id,
-			    "Inserting route rn %p, re %p (%s) existing %p, same_count %d",
-			    rn, re, zebra_route_string(re->type), same,
-			    same_count);
+		rnode_debug(
+			rn, re->vrf_id,
+			"Inserting route rn %p, re %p (%s) existing %p, same_count %d",
+			rn, re, zebra_route_string(re->type), same, same_count);
 
 		if (IS_ZEBRA_DEBUG_RIB_DETAILED)
 			route_entry_dump(p, src_p, re);
@@ -3017,7 +3017,8 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 				continue;
 
 			if (IS_ZEBRA_DEBUG_RIB)
-				rnode_debug(rn, re->vrf_id, "rn %p, removing unneeded re %p",
+				rnode_debug(rn, re->vrf_id,
+					    "rn %p, removing unneeded re %p",
 					    rn, re);
 
 			rib_unlink(rn, re);

If you are a new contributor to FRR, please see our contributing guidelines.

After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.

@mjstapp
Copy link
Contributor Author

mjstapp commented Sep 3, 2020

Rebased to newer master

@LabN-CI
Copy link
Collaborator

LabN-CI commented Sep 3, 2020

Outdated results 💚

Basic BGPD CI results: SUCCESS, 0 tests failed

_ _
Result SUCCESS git merge/6853 efa6d92
Date 09/03/2020
Start 09:20:37
Finish 09:46:28
Run-Time 25:51
Total 1815
Pass 1815
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2020-09-03-09:20:37.txt
Log autoscript-2020-09-03-09:21:34.log.bz2
Memory 499 499 427

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Sep 3, 2020

Continuous Integration Result: FAILED

Continuous Integration Result: FAILED

Test incomplete. See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-14010/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source / Pull Request: Successful

Building Stage: Successful

Basic Tests: Incomplete

Addresssanitizer topotests part 2: Incomplete (check logs for details)
Addresssanitizer topotests part 2: Incomplete (check logs for details)
Addresssanitizer topotests part 0: Incomplete (check logs for details)
Successful on other platforms/tests
  • IPv6 protocols on Ubuntu 18.04
  • Fedora 29 rpm pkg check
  • Addresssanitizer topotests part 1
  • Topo tests part 1 on Ubuntu 16.04 amd64
  • Debian 8 deb pkg check
  • Topo tests part 0 on Ubuntu 16.04 amd64
  • IPv4 protocols on Ubuntu 18.04
  • Topo tests part 1 on Ubuntu 18.04 arm8
  • Static analyzer (clang)
  • Topo tests part 2 on Ubuntu 18.04 arm8
  • Topo tests part 2 on Ubuntu 16.04 i386
  • Topo tests part 0 on Ubuntu 18.04 amd64
  • Ubuntu 16.04 deb pkg check
  • Topo tests part 0 on Ubuntu 18.04 arm8
  • Topo tests part 1 on Ubuntu 16.04 i386
  • IPv4 ldp protocol on Ubuntu 18.04
  • Ubuntu 20.04 deb pkg check
  • Topo tests part 1 on Ubuntu 18.04 amd64
  • Ubuntu 18.04 deb pkg check
  • Debian 9 deb pkg check
  • Topo tests part 2 on Ubuntu 16.04 amd64
  • CentOS 7 rpm pkg check
  • Topo tests part 2 on Ubuntu 18.04 amd64
  • Topo tests part 0 on Ubuntu 16.04 i386
  • Debian 10 deb pkg check

@mjstapp
Copy link
Contributor Author

mjstapp commented Sep 3, 2020

CI:rerun

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Sep 3, 2020

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-14016/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Checkout code: Successful with additional warnings
Report for zebra_dplane.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #3447: FILE: /tmp/f1-11001/zebra_dplane.c:3447:

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-14016/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.4.1 (current is 4.3.0)
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200903-04-gefa6d9239-0 (missing) -> 7.5-dev-20200903-04-gefa6d9239-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200903-04-gefa6d9239-0 (missing) -> 7.5-dev-20200903-04-gefa6d9239-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200903-04-gefa6d9239-0 (missing) -> 7.5-dev-20200903-04-gefa6d9239-0~deb10u1
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200903-04-gefa6d9239-0 (missing) -> 7.5-dev-20200903-04-gefa6d9239-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.5-dev-20200903-04-gefa6d9239-0 (missing) -> 7.5-dev-20200903-04-gefa6d9239-0~deb10u1

CLANG Static Analyzer Summary

  • Github Pull Request 6853, comparing to Git base SHA 09209b4

No Changes in Static Analysis warnings compared to base

1 Static Analyzer issues remaining.

See details at
https://ci1.netdef.org/browse/FRR-FRRPULLREQ-14016/artifact/shared/static_analysis/index.html

Copy link

@polychaeta polychaeta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution to FRR!

Click for style suggestions

To apply these suggestions:

curl -s https://gist.githubusercontent.com/polychaeta/35d71548324de8df0867c5b3d32fa537/raw/5217176c210b16e63d654fbb58b3fa410ddd6cdb/cr_6853_1603803712.diff | git apply

diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index e57891d5d..83536f0f2 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -3483,9 +3483,12 @@ int dplane_show_provs_helper(struct vty *vty, bool detailed)
 		out_max = atomic_load_explicit(&prov->dp_out_max,
 					       memory_order_relaxed);
 
-		vty_out(vty, "%s (%u): in: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64", out: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64"\n",
-			prov->dp_name, prov->dp_id, in, in_q, in_max,
-			out, out_q, out_max);
+		vty_out(vty,
+			"%s (%u): in: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 ", out: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 "\n",
+			prov->dp_name, prov->dp_id, in, in_q, in_max, out,
+			out_q, out_max);
 
 		DPLANE_LOCK();
 		prov = TAILQ_NEXT(prov, dp_prov_link);
@@ -3694,10 +3697,8 @@ void dplane_provider_enqueue_out_ctx(struct zebra_dplane_provider *prov,
 	/* Maintain out-queue counters */
 	atomic_fetch_add_explicit(&(prov->dp_out_queued), 1,
 				  memory_order_relaxed);
-	curr = atomic_load_explicit(&prov->dp_out_queued,
-				    memory_order_relaxed);
-	high = atomic_load_explicit(&prov->dp_out_max,
-				    memory_order_relaxed);
+	curr = atomic_load_explicit(&prov->dp_out_queued, memory_order_relaxed);
+	high = atomic_load_explicit(&prov->dp_out_max, memory_order_relaxed);
 	if (curr > high)
 		atomic_store_explicit(&prov->dp_out_max, curr,
 				      memory_order_relaxed);
@@ -4298,8 +4299,8 @@ static int dplane_thread_loop(struct thread *event)
 	/* Locate initial registered provider */
 	prov = TAILQ_FIRST(&zdplane_info.dg_providers_q);
 
-	prov_q_counter = atomic_load_explicit(&prov->dp_in_queued,
-					      memory_order_relaxed);
+	prov_q_counter =
+		atomic_load_explicit(&prov->dp_in_queued, memory_order_relaxed);
 
 	/* Don't let the plugin queue build up too far */
 	if (prov_q_counter > 2 * limit)
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 710e0b35f..d73b10648 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -3004,10 +3004,10 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 
 	/* Link new re to node.*/
 	if (IS_ZEBRA_DEBUG_RIB) {
-		rnode_debug(rn, re->vrf_id,
-			    "Inserting route rn %p, re %p (%s) existing %p, same_count %d",
-			    rn, re, zebra_route_string(re->type), same,
-			    same_count);
+		rnode_debug(
+			rn, re->vrf_id,
+			"Inserting route rn %p, re %p (%s) existing %p, same_count %d",
+			rn, re, zebra_route_string(re->type), same, same_count);
 
 		if (IS_ZEBRA_DEBUG_RIB_DETAILED)
 			route_entry_dump(p, src_p, re);
@@ -3032,7 +3032,8 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 				continue;
 
 			if (IS_ZEBRA_DEBUG_RIB)
-				rnode_debug(rn, re->vrf_id, "rn %p, removing unneeded re %p",
+				rnode_debug(rn, re->vrf_id,
+					    "rn %p, removing unneeded re %p",
 					    rn, re);
 
 			rib_unlink(rn, re);

If you are a new contributor to FRR, please see our contributing guidelines.

After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.

@LabN-CI
Copy link
Collaborator

LabN-CI commented Oct 27, 2020

Outdated results 💚

Basic BGPD CI results: SUCCESS, 0 tests failed

_ _
Result SUCCESS git merge/6853 ab9d2ff
Date 10/27/2020
Start 09:05:38
Finish 09:31:43
Run-Time 26:05
Total 1815
Pass 1815
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2020-10-27-09:05:38.txt
Log autoscript-2020-10-27-09:06:37.log.bz2
Memory 496 494 431

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

NetDEF-CI commented Oct 27, 2020

Continuous Integration Result: SUCCESSFUL

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-14999/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Checkout code: Successful with additional warnings
Report for zebra_dplane.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #3486: FILE: /tmp/f1-29185/zebra_dplane.c:3486:

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-14999/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.5.0.3 (current is 4.3.0)
W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.5.0.3 (current is 4.3.0)
W: frr-pythontools: changelog-file-missing-explicit-entry 6.0-2 -> 7.6-dev-20201023-05-gab9d2ff10-0 (missing) -> 7.6-dev-20201023-05-gab9d2ff10-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 6.0-2 -> 7.6-dev-20201023-05-gab9d2ff10-0 (missing) -> 7.6-dev-20201023-05-gab9d2ff10-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 6.0-2 -> 7.6-dev-20201023-05-gab9d2ff10-0 (missing) -> 7.6-dev-20201023-05-gab9d2ff10-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 6.0-2 -> 7.6-dev-20201023-05-gab9d2ff10-0 (missing) -> 7.6-dev-20201023-05-gab9d2ff10-0~deb10u1
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 6.0-2 -> 7.6-dev-20201023-05-gab9d2ff10-0 (missing) -> 7.6-dev-20201023-05-gab9d2ff10-0~deb10u1

Mark Stapp added 2 commits December 7, 2020 13:54
Zebra accumulates route-entry objects and then processes them
as a group. If that rib processing is delayed, because the
dataplane/fib programming has built up a queue e.g., zebra can
hold multiple deleted route objects in memory. At scale, this can
be a problem. Delete unneeded route entries promptly, if they
can't contribute to rib processing.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
Add the current queue depths for each plugin to the
'show dplane providers' output. Maintain the out-bound queue
max counter properly, that was being ignored.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
Copy link

@polychaeta polychaeta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution to FRR!

Click for style suggestions

To apply these suggestions:

curl -s https://gist.githubusercontent.com/polychaeta/88492a8e2ae8fcac04c92a0bc1eb99f9/raw/fba1cc3d9062a13c5a3bb0acb4aa907bc6408c48/cr_6853_1607371917.diff | git apply

diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index 41ff73d77..41221ec28 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -3708,9 +3708,12 @@ int dplane_show_provs_helper(struct vty *vty, bool detailed)
 		out_max = atomic_load_explicit(&prov->dp_out_max,
 					       memory_order_relaxed);
 
-		vty_out(vty, "%s (%u): in: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64", out: %"PRIu64", q: %"PRIu64", q_max: %"PRIu64"\n",
-			prov->dp_name, prov->dp_id, in, in_q, in_max,
-			out, out_q, out_max);
+		vty_out(vty,
+			"%s (%u): in: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 ", out: %" PRIu64 ", q: %" PRIu64
+			", q_max: %" PRIu64 "\n",
+			prov->dp_name, prov->dp_id, in, in_q, in_max, out,
+			out_q, out_max);
 
 		DPLANE_LOCK();
 		prov = TAILQ_NEXT(prov, dp_prov_link);
@@ -3919,10 +3922,8 @@ void dplane_provider_enqueue_out_ctx(struct zebra_dplane_provider *prov,
 	/* Maintain out-queue counters */
 	atomic_fetch_add_explicit(&(prov->dp_out_queued), 1,
 				  memory_order_relaxed);
-	curr = atomic_load_explicit(&prov->dp_out_queued,
-				    memory_order_relaxed);
-	high = atomic_load_explicit(&prov->dp_out_max,
-				    memory_order_relaxed);
+	curr = atomic_load_explicit(&prov->dp_out_queued, memory_order_relaxed);
+	high = atomic_load_explicit(&prov->dp_out_max, memory_order_relaxed);
 	if (curr > high)
 		atomic_store_explicit(&prov->dp_out_max, curr,
 				      memory_order_relaxed);
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index eb6587f82..d6d6f4257 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -3028,10 +3028,10 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 
 	/* Link new re to node.*/
 	if (IS_ZEBRA_DEBUG_RIB) {
-		rnode_debug(rn, re->vrf_id,
-			    "Inserting route rn %p, re %p (%s) existing %p, same_count %d",
-			    rn, re, zebra_route_string(re->type), same,
-			    same_count);
+		rnode_debug(
+			rn, re->vrf_id,
+			"Inserting route rn %p, re %p (%s) existing %p, same_count %d",
+			rn, re, zebra_route_string(re->type), same, same_count);
 
 		if (IS_ZEBRA_DEBUG_RIB_DETAILED)
 			route_entry_dump(p, src_p, re);
@@ -3056,7 +3056,8 @@ int rib_add_multipath_nhe(afi_t afi, safi_t safi, struct prefix *p,
 				continue;
 
 			if (IS_ZEBRA_DEBUG_RIB)
-				rnode_debug(rn, re->vrf_id, "rn %p, removing unneeded re %p",
+				rnode_debug(rn, re->vrf_id,
+					    "rn %p, removing unneeded re %p",
 					    rn, re);
 
 			rib_unlink(rn, re);

If you are a new contributor to FRR, please see our contributing guidelines.

After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.

@mjstapp
Copy link
Contributor Author

mjstapp commented Dec 7, 2020

Rebase, and include only the rib-trimming changes for now.

@LabN-CI
Copy link
Collaborator

LabN-CI commented Dec 7, 2020

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/6853 a88a7c8
Date 12/07/2020
Start 15:15:37
Finish 15:51:09
Run-Time 35:32
Total 1815
Pass 1815
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2020-12-07-15:15:37.txt
Log autoscript-2020-12-07-15:16:40.log.bz2
Memory 500 498 426

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-15870/

This is a comment from an automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Warnings Generated during build:

Checkout code: Successful with additional warnings
Report for zebra_dplane.c | 2 issues
===============================================
< WARNING: line over 80 characters
< #3711: FILE: /tmp/f1-29786/zebra_dplane.c:3711:

Warnings Generated during build:

Debian 10 amd64 build: Successful with additional warnings

Debian Package lintian failed for Debian 10 amd64 build:
(see full package build log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-15870/artifact/DEB10BUILD/ErrorLog/log_lintian.txt)

W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.5.0.3 (current is 4.3.0)
W: frr source: pkg-js-tools-test-is-missing
W: frr source: newer-standards-version 4.5.0.3 (current is 4.3.0)
W: frr-rpki-rtrlib: changelog-file-missing-explicit-entry 7.5-0 -> 7.6-dev-20201207-02-ga88a7c8d4-0 (missing) -> 7.6-dev-20201207-02-ga88a7c8d4-0~deb10u1
W: frr-snmp: changelog-file-missing-explicit-entry 7.5-0 -> 7.6-dev-20201207-02-ga88a7c8d4-0 (missing) -> 7.6-dev-20201207-02-ga88a7c8d4-0~deb10u1
W: frr: changelog-file-missing-explicit-entry 7.5-0 -> 7.6-dev-20201207-02-ga88a7c8d4-0 (missing) -> 7.6-dev-20201207-02-ga88a7c8d4-0~deb10u1
W: frr-pythontools: changelog-file-missing-explicit-entry 7.5-0 -> 7.6-dev-20201207-02-ga88a7c8d4-0 (missing) -> 7.6-dev-20201207-02-ga88a7c8d4-0~deb10u1
W: frr-doc: changelog-file-missing-explicit-entry 7.5-0 -> 7.6-dev-20201207-02-ga88a7c8d4-0 (missing) -> 7.6-dev-20201207-02-ga88a7c8d4-0~deb10u1

@donaldsharp donaldsharp merged commit 1afacb9 into FRRouting:master Jan 13, 2021
@mjstapp mjstapp deleted the fix_rib_dups branch January 27, 2021 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants