summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ripd/rip_main.c2
-rw-r--r--ripd/rip_nb_config.c3
-rw-r--r--ripd/rip_zebra.c1
-rw-r--r--ripd/ripd.h2
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 */