mirror of https://github.com/FRRouting/frr.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 <donatas@opensourcerouting.org>
This commit is contained in:
parent
993b236b2c
commit
6c5ffa8896
|
@ -32,6 +32,8 @@ struct option longopts[] = {{0}};
|
||||||
/* ripngd privileges */
|
/* ripngd privileges */
|
||||||
zebra_capabilities_t _caps_p[] = {ZCAP_NET_RAW, ZCAP_BIND, ZCAP_SYS_ADMIN};
|
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 = {
|
struct zebra_privs_t ripngd_privs = {
|
||||||
#if defined(FRR_USER)
|
#if defined(FRR_USER)
|
||||||
.user = FRR_USER,
|
.user = FRR_USER,
|
||||||
|
|
|
@ -129,7 +129,8 @@ int ripngd_instance_allow_ecmp_modify(struct nb_cb_modify_args *args)
|
||||||
return NB_OK;
|
return NB_OK;
|
||||||
|
|
||||||
ripng = nb_running_get_entry(args->dnode, NULL, true);
|
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) {
|
if (!ripng->ecmp) {
|
||||||
ripng_ecmp_disable(ripng);
|
ripng_ecmp_disable(ripng);
|
||||||
return NB_OK;
|
return NB_OK;
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
|
|
||||||
/* All information about zebra. */
|
/* All information about zebra. */
|
||||||
struct zclient *zclient = NULL;
|
struct zclient *zclient = NULL;
|
||||||
uint32_t zebra_ecmp_count = MULTIPATH_NUM;
|
|
||||||
|
|
||||||
/* Send ECMP routes to zebra. */
|
/* Send ECMP routes to zebra. */
|
||||||
static void ripng_zebra_ipv6_send(struct ripng *ripng, struct agg_node *rp,
|
static void ripng_zebra_ipv6_send(struct ripng *ripng, struct agg_node *rp,
|
||||||
|
|
|
@ -435,4 +435,6 @@ extern void ripng_vrf_init(void);
|
||||||
extern void ripng_vrf_terminate(void);
|
extern void ripng_vrf_terminate(void);
|
||||||
extern void ripng_cli_init(void);
|
extern void ripng_cli_init(void);
|
||||||
|
|
||||||
|
extern uint32_t zebra_ecmp_count;
|
||||||
|
|
||||||
#endif /* _ZEBRA_RIPNG_RIPNGD_H */
|
#endif /* _ZEBRA_RIPNG_RIPNGD_H */
|
||||||
|
|
Loading…
Reference in New Issue