diff options
| author | Russ White <russ@riw.us> | 2023-05-23 08:25:46 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-23 08:25:46 -0400 |
| commit | 6a88c7a87e01dab8cc56e669aa04447d6ac954f2 (patch) | |
| tree | 4a5d7874ed42235c55b7d32680bade83edfa555b | |
| parent | 7b7da41def4524670ff3ef5041b1eb4084d133bb (diff) | |
| parent | 1b839d486a8a392f9122bb5483b26540603e7550 (diff) | |
Merge pull request #13548 from opensourcerouting/fix/use_min_value_of_cli_zebra_cap_ecmp
ripd: Make sure we do not overuse higher values for ECMP count
| -rw-r--r-- | ripd/rip_main.c | 2 | ||||
| -rw-r--r-- | ripd/rip_nb_config.c | 3 | ||||
| -rw-r--r-- | ripd/rip_zebra.c | 1 | ||||
| -rw-r--r-- | ripd/ripd.h | 2 |
4 files changed, 6 insertions, 2 deletions
diff --git a/ripd/rip_main.c b/ripd/rip_main.c index 0e26662cdb..ac358ebbaf 100644 --- a/ripd/rip_main.c +++ b/ripd/rip_main.c @@ -34,6 +34,8 @@ static struct option longopts[] = {{0}}; /* ripd privileges */ zebra_capabilities_t _caps_p[] = {ZCAP_NET_RAW, ZCAP_BIND, ZCAP_SYS_ADMIN}; +uint32_t zebra_ecmp_count = MULTIPATH_NUM; + struct zebra_privs_t ripd_privs = { #if defined(FRR_USER) .user = FRR_USER, diff --git a/ripd/rip_nb_config.c b/ripd/rip_nb_config.c index 1117ec9ff7..8d3b670596 100644 --- a/ripd/rip_nb_config.c +++ b/ripd/rip_nb_config.c @@ -99,7 +99,8 @@ int ripd_instance_allow_ecmp_modify(struct nb_cb_modify_args *args) return NB_OK; rip = nb_running_get_entry(args->dnode, NULL, true); - rip->ecmp = yang_dnode_get_uint8(args->dnode, NULL); + rip->ecmp = + MIN(yang_dnode_get_uint8(args->dnode, NULL), zebra_ecmp_count); if (!rip->ecmp) { rip_ecmp_disable(rip); return NB_OK; diff --git a/ripd/rip_zebra.c b/ripd/rip_zebra.c index 834c7d2d65..5bf51c2f15 100644 --- a/ripd/rip_zebra.c +++ b/ripd/rip_zebra.c @@ -20,7 +20,6 @@ /* All information about zebra. */ struct zclient *zclient = NULL; -uint32_t zebra_ecmp_count = MULTIPATH_NUM; /* Send ECMP routes to zebra. */ static void rip_zebra_ipv4_send(struct rip *rip, struct route_node *rp, diff --git a/ripd/ripd.h b/ripd/ripd.h index 2db1e5a6b0..ac4a51f586 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -539,4 +539,6 @@ DECLARE_HOOK(rip_ifaddr_del, (struct connected * ifc), (ifc)); extern void rip_ecmp_change(struct rip *rip); +extern uint32_t zebra_ecmp_count; + #endif /* _ZEBRA_RIP_H */ |
