From: Naveen Thanikachalam Date: Fri, 21 Sep 2018 04:15:49 +0000 (-0700) Subject: lib: Trigger callbacks to re-evaluate route-map clauses when "call" CLI is executed. X-Git-Tag: frr-7.1-dev~331^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F3064%2Fhead;p=mirror%2Ffrr.git lib: Trigger callbacks to re-evaluate route-map clauses when "call" CLI is executed. When the "call" CLI is executed from with-in a route-map that is already in use, there is a need to get the route-map clients to re-evalute the clauses defined by both the parent route-map, as well as the child route-map. The existing callbacks, add_hook() and delete_hook() can be used by the lib to inform the clients when the "call" is configured and unconfigured. Signed-off-by: NaveenThanikachalam --- diff --git a/lib/routemap.c b/lib/routemap.c index 66c15b9f2b..bec6d389e5 100644 --- a/lib/routemap.c +++ b/lib/routemap.c @@ -1759,8 +1759,19 @@ void route_map_upd8_dependency(route_map_event_t type, const char *arg, { struct hash *upd8_hash = NULL; - if ((upd8_hash = route_map_get_dep_hash(type))) + if ((upd8_hash = route_map_get_dep_hash(type))) { route_map_dep_update(upd8_hash, arg, rmap_name, type); + + if (type == RMAP_EVENT_CALL_ADDED) { + /* Execute hook. */ + if (route_map_master.add_hook) + (*route_map_master.add_hook)(rmap_name); + } else if (type == RMAP_EVENT_CALL_DELETED) { + /* Execute hook. */ + if (route_map_master.delete_hook) + (*route_map_master.delete_hook)(rmap_name); + } + } } void route_map_notify_dependencies(const char *affected_name,