mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 04:08:33 +00:00
staticd: reject route config with too many nexthops
Restrict the number of nexthops for a route to the compiled-in
limit. Be careful with the zapi route struct's array of nexthops
too.
Signed-off-by: Mark Stapp <mstapp@nvidia.com>
(cherry picked from commit 1f7ab1a2cc
)
This commit is contained in:
parent
df8cb5aaf7
commit
44309e7a00
@ -115,7 +115,7 @@ static int static_path_list_tag_modify(struct nb_cb_modify_args *args)
|
||||
}
|
||||
|
||||
struct nexthop_iter {
|
||||
int count;
|
||||
uint32_t count;
|
||||
bool blackhole;
|
||||
};
|
||||
|
||||
@ -171,6 +171,11 @@ static bool static_nexthop_create(struct nb_cb_create_args *args)
|
||||
args->errmsg, args->errmsg_len,
|
||||
"Route cannot have blackhole and non-blackhole nexthops simultaneously");
|
||||
return NB_ERR_VALIDATION;
|
||||
} else if (iter.count > zebra_ecmp_count) {
|
||||
snprintf(args->errmsg, args->errmsg_len,
|
||||
"Route cannot have more than %d ECMP nexthops",
|
||||
zebra_ecmp_count);
|
||||
return NB_ERR_VALIDATION;
|
||||
}
|
||||
break;
|
||||
case NB_EV_PREPARE:
|
||||
|
@ -414,6 +414,10 @@ extern void static_zebra_route_add(struct static_path *pn, bool install)
|
||||
api.tableid = pn->table_id;
|
||||
}
|
||||
frr_each(static_nexthop_list, &pn->nexthop_list, nh) {
|
||||
/* Don't overrun the nexthop array */
|
||||
if (nh_num == zebra_ecmp_count)
|
||||
break;
|
||||
|
||||
api_nh = &api.nexthops[nh_num];
|
||||
if (nh->nh_vrf_id == VRF_UNKNOWN)
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user