]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: Trigger callbacks to re-evaluate route-map clauses when "call" CLI is executed. 3064/head
authorNaveen Thanikachalam <nthanikachal@vmware.com>
Fri, 21 Sep 2018 04:15:49 +0000 (21:15 -0700)
committerNaveen Thanikachalam <nthanikachal@vmware.com>
Fri, 21 Sep 2018 05:07:29 +0000 (22:07 -0700)
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 <nthanikachal@vmware.com>
lib/routemap.c

index 66c15b9f2bd456ad8de135d466714a1594af3606..bec6d389e534298d66db39fe83940f9e1af40e43 100644 (file)
@@ -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,