summaryrefslogtreecommitdiff
path: root/zebra/zebra_routemap.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_routemap.c')
-rw-r--r--zebra/zebra_routemap.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/zebra/zebra_routemap.c b/zebra/zebra_routemap.c
index 7b0a1e3d9c..bbc8b6f19d 100644
--- a/zebra/zebra_routemap.c
+++ b/zebra/zebra_routemap.c
@@ -1668,20 +1668,13 @@ void zebra_routemap_finish(void)
route_map_finish();
}
-void zebra_route_map_write_delay_timer(struct vty *vty)
-{
- if (vty && (zebra_rmap_update_timer != ZEBRA_RMAP_DEFAULT_UPDATE_TIMER))
- vty_out(vty, "zebra route-map delay-timer %d\n",
- zebra_rmap_update_timer);
- return;
-}
-
route_map_result_t
zebra_route_map_check(int family, int rib_type, uint8_t instance,
const struct prefix *p, struct nexthop *nexthop,
struct zebra_vrf *zvrf, route_tag_t tag)
{
struct route_map *rmap = NULL;
+ char *rm_name;
route_map_result_t ret = RMAP_PERMITMATCH;
struct nh_rmap_obj nh_obj;
@@ -1692,10 +1685,20 @@ zebra_route_map_check(int family, int rib_type, uint8_t instance,
nh_obj.metric = 0;
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);
- 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);
+
+ if (rm_name && !rmap)
+ return RMAP_DENYMATCH;
+ }
if (rmap) {
ret = route_map_apply(rmap, p, &nh_obj);
}
@@ -1859,7 +1862,8 @@ void zebra_routemap_config_write_protocol(struct vty *vty,
vty_out(vty, "%sipv6 nht %s route-map %s\n", space, "any",
NHT_RM_NAME(zvrf, AFI_IP6, ZEBRA_ROUTE_MAX));
- if (zebra_rmap_update_timer != ZEBRA_RMAP_DEFAULT_UPDATE_TIMER)
+ if (zvrf_id(zvrf) == VRF_DEFAULT
+ && zebra_rmap_update_timer != ZEBRA_RMAP_DEFAULT_UPDATE_TIMER)
vty_out(vty, "zebra route-map delay-timer %d\n",
zebra_rmap_update_timer);
}