From: Donatas Abraitis Date: Wed, 17 May 2023 19:17:02 +0000 (+0300) Subject: ripngd: Make sure we do not overuse higher values for ECMP count X-Git-Tag: base_9.0~43^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=6c5ffa88963d43204c944f9c798a315d1ee5f104;p=matthieu%2Ffrr.git ripngd: Make sure we do not overuse higher values for ECMP count Use a minimum value of a CLI version and a value of Zebra capabilities. Signed-off-by: Donatas Abraitis --- diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c index 1d392efdde..9933dae5cd 100644 --- a/ripngd/ripng_main.c +++ b/ripngd/ripng_main.c @@ -32,6 +32,8 @@ struct option longopts[] = {{0}}; /* ripngd 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 ripngd_privs = { #if defined(FRR_USER) .user = FRR_USER, diff --git a/ripngd/ripng_nb_config.c b/ripngd/ripng_nb_config.c index de72319354..0b1bd68eca 100644 --- a/ripngd/ripng_nb_config.c +++ b/ripngd/ripng_nb_config.c @@ -129,7 +129,8 @@ int ripngd_instance_allow_ecmp_modify(struct nb_cb_modify_args *args) return NB_OK; ripng = nb_running_get_entry(args->dnode, NULL, true); - ripng->ecmp = yang_dnode_get_uint8(args->dnode, NULL); + ripng->ecmp = + MIN(yang_dnode_get_uint8(args->dnode, NULL), zebra_ecmp_count); if (!ripng->ecmp) { ripng_ecmp_disable(ripng); return NB_OK; diff --git a/ripngd/ripng_zebra.c b/ripngd/ripng_zebra.c index 6122c4255c..49b8a197ad 100644 --- a/ripngd/ripng_zebra.c +++ b/ripngd/ripng_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 ripng_zebra_ipv6_send(struct ripng *ripng, struct agg_node *rp, diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h index 3d13097dd6..c7468b6317 100644 --- a/ripngd/ripngd.h +++ b/ripngd/ripngd.h @@ -435,4 +435,6 @@ extern void ripng_vrf_init(void); extern void ripng_vrf_terminate(void); extern void ripng_cli_init(void); +extern uint32_t zebra_ecmp_count; + #endif /* _ZEBRA_RIPNG_RIPNGD_H */