mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 02:46:26 +00:00
Merge pull request #7524 from donaldsharp/zebra_route_map_tighten
zebra: deny when route map is specified but does not exist yet
This commit is contained in:
commit
82b773e63b
@ -1682,6 +1682,7 @@ zebra_route_map_check(int family, int rib_type, uint8_t instance,
|
|||||||
struct zebra_vrf *zvrf, route_tag_t tag)
|
struct zebra_vrf *zvrf, route_tag_t tag)
|
||||||
{
|
{
|
||||||
struct route_map *rmap = NULL;
|
struct route_map *rmap = NULL;
|
||||||
|
char *rm_name;
|
||||||
route_map_result_t ret = RMAP_PERMITMATCH;
|
route_map_result_t ret = RMAP_PERMITMATCH;
|
||||||
struct nh_rmap_obj nh_obj;
|
struct nh_rmap_obj nh_obj;
|
||||||
|
|
||||||
@ -1692,10 +1693,20 @@ zebra_route_map_check(int family, int rib_type, uint8_t instance,
|
|||||||
nh_obj.metric = 0;
|
nh_obj.metric = 0;
|
||||||
nh_obj.tag = tag;
|
nh_obj.tag = tag;
|
||||||
|
|
||||||
if (rib_type >= 0 && rib_type < ZEBRA_ROUTE_MAX)
|
if (rib_type >= 0 && rib_type < ZEBRA_ROUTE_MAX) {
|
||||||
|
rm_name = PROTO_RM_NAME(zvrf, family, rib_type);
|
||||||
rmap = PROTO_RM_MAP(zvrf, family, rib_type);
|
rmap = PROTO_RM_MAP(zvrf, family, rib_type);
|
||||||
if (!rmap && PROTO_RM_NAME(zvrf, family, ZEBRA_ROUTE_MAX))
|
|
||||||
|
if (rm_name && !rmap)
|
||||||
|
return RMAP_DENYMATCH;
|
||||||
|
}
|
||||||
|
if (!rmap) {
|
||||||
|
rm_name = PROTO_RM_NAME(zvrf, family, ZEBRA_ROUTE_MAX);
|
||||||
rmap = PROTO_RM_MAP(zvrf, family, ZEBRA_ROUTE_MAX);
|
rmap = PROTO_RM_MAP(zvrf, family, ZEBRA_ROUTE_MAX);
|
||||||
|
|
||||||
|
if (rm_name && !rmap)
|
||||||
|
return RMAP_DENYMATCH;
|
||||||
|
}
|
||||||
if (rmap) {
|
if (rmap) {
|
||||||
ret = route_map_apply(rmap, p, &nh_obj);
|
ret = route_map_apply(rmap, p, &nh_obj);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user